利用AD转换设计一个室温温度计.docx
《利用AD转换设计一个室温温度计.docx》由会员分享,可在线阅读,更多相关《利用AD转换设计一个室温温度计.docx(23页珍藏版)》请在冰豆网上搜索。
利用AD转换设计一个室温温度计
课程设计任务书
2010—2011学年第二学期
专业:
电子信息工程学号:
姓名:
课程设计名称:
单片机原理及应用课程设计
设计题目:
利用A/D转换设计一个室温温度计
完成期限:
自2011年5月30日至2011年6月10日共2周
一、设计依据
当用计算机来构成数据采集系统时,所经采集的外部信号往往是温度、压力、声音和位移等连续变化的模拟量,而计算机能处理不连续的数字量,因此,必须用模数转换器即A/D转换器将模拟信号变成数字量后才能送入计算机进行处理。
本课题学生重点从ADC0809与89C51的扩展连接及应用方面,要求作出深入设计与研究,以为即将到来的工程设计与科研打下良好基础。
二、要求及主要内容
设计重点是应用单片机和A/D转换器设计一个室温温度计的规则要求给出相应不同的电路设计,对器件选择,线路连接,有较深入地分析探讨。
1.实验仪上W1电位器提供模拟量输入,编程序将模拟量转换成数字量。
2.了解A/D芯片0809转换性能及编程方法,了解单片机数据采集方法。
3.要求最终正确无误地完成全部软件设计,并具有一定先进性,给出进一步提高性能的深入分析,对电路设计也应提出建设性意见并写出合格的课程设计论文,圆满完成各项任务。
三、途径和方法
1.硬件电路坄计
89c51应用系统设计(晶振电路,上电复位电路);
A/D转换与单片机的接口。
2.程序设计:
先画流程图再根据流程图写程序
启动0809进行本次A/D;调用显示等待A/D转换结果;读取A/D转换结
果;将结果送显示缓冲区。
3.选芯片,元件按设计连线
4.调试
(1)输入程序;
(2)编译、连接,用连续方式运行程序;
(3)改变IN0的模拟量,显示缓冲区应随之变化;
(4)就ADC0809与89C51的扩展连接及应用方面,作出深入地学术讨论
与研究,按规定要求完成其任务。
四、时间安排
课题讲解:
2小时
阅读资料:
10小时
撰写设计说明书:
12小时
修订设计说明书:
6小时
五、主要参考资料
[1]肖洪兵.跟我学用单片机[M].北京:
北京航空航天大学出版社,2002.8.
[2]赵晓安.MCS-51单片机原理及应用[M].天津:
天津大学出版社,2001.3.
[3]何立民.单片机高级教程[M].第1版.北京:
北京航空航天大学出版社,2001.
[4]陈伟人.单片微型计算机原理与应用[M].北京:
清华大学出版社,2006.5.
指导教师(签字):
教研室主任(签字):
批准日期:
年月日
利用A/D转换设计一个室温温度计
摘要
本文介绍了基于AD590与89c51单片机的一种温度采集系统,该电路采用ADC0809作为A/D转换元件,将AD590采集的模拟温度信号转化为数字信号,传输到单片机内部,最后总是用共阴极LED显示出来,温度测量范围0℃~85℃,小数点后显示一位。
要求能够正确的显示温度传感器的温度。
使用3位LED模块显示,显示测量温度数值。
本系统主要包括大模块:
数据采集模块、控制模块、A/D转换模块、显示模块。
首先绘制出工作流程图,然后连接好硬件电路,写入汇编程序,并进行调试,最终设计完成了该系统的硬件电路。
在软件编程上,采用了汇编语言进行编程,使用了显示模块程序、转换数据存取程序、A/D转换程序。
关键字:
AT89C51、AD590、数码管、ADC0809、温度计
1绪论
随着科技的发展,单片机已不是一个陌生的名词,它的出现是近代计算机技术发展史上的一个重要里程碑,因为单片机的诞生标志着计算机正式形成了通用计算机系统和嵌入式计算机系统两大分支。
单片机单芯片的微小体积和低的成本,可广泛地嵌入到如玩具、家用电器、机器人、仪器仪表、汽车电子系统、工业控制单元、办公自动化设备、金融电子系统、舰船、个人信息终端及通讯产品中,成为现代电子系统中最重要的智能化工具。
而温度计是工农业生产及科学研究中最常用的测量仪表。
随着时代的进步和发展,数字温度计得到了迅速的发展。
数字温度计的优点是准确度高,不易误读,分辨率高,特别是在测量小的温度变化时比较准确。
数字温度计已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术。
本文中采用原件AD590、ADC0809、89S51单片机和数码管设计出一个数字温度计。
2硬件部分
2.1单片机的选择
AT89C51作为温度测试系统设计的核心器件。
该器件是INTEL公司生产的MCS一5l系列单片机中的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS—51的CMOS产品。
不仅结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,而且继承和扩展了MCS—48单片机的体系结构和指令系统。
单片机小系统的电路图如图1所示。
图1单片机小系统电路
AT89C51单片机的主要特性:
(1)与MCS-51兼容,4K字节可编程闪烁存储器;
(2)灵活的在线系统编程,掉电标识和快速编程特性;
(3)寿命为1000次写/擦周期,数据保留时间可10年以上;
(4)全静态工作模式:
0Hz-33Hz;
(5)三级程序存储器锁定;
(6)128*8位内部RAM,32可编程I/O线;
(7)两个16位定时器/计数器,6个中断源;
(8)全双工串行UART通道,低功耗的闲置和掉电模式;
(9)片内振荡器和时钟电路;
2.2温度采集电路
温度采集系统主要由AD590、OP-07。
ICL8069组成,如图2所示
图2温度采集系统电路
选用温度传感器AD590,AD590具有较高精度和重复性(重复性优于0.1℃,其良好的非线形可以保证优于0.1℃的测量精度,利用其重复性较好的特点,通过非线形补偿,可以达到0.1℃测量精度)。
超低温漂移高精度运算放大器OP-07将“温度-电压”信号放大。
便于A/D进行转换,以提高温度采集电路的可靠性。
集成温度传感器的输出形式分为电压输出和电流输出两种。
电压输出型的灵敏度一般为10mV/K,温度0℃时输出为0,温度25℃时输出为2.982V。
电流输出型的灵敏度为1µA/K。
这样便于A/D转换器采集数据。
2.3模数转换电路设计
ADC0809是M美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D转换器。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
是目前国内应用最广泛的8位通用A/D芯片。
1、主要特性
(1)8路输入通道,8位A/D转换器,即分辨率为8位。
(2)具有转换起停控制端。
(3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)
(4)单个+5V电源供电
(5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
(6)工作温度范围为-40~+85摄氏度
(7)低功耗,约15mW。
2、内部结构和外部引脚
ADC0809的内部结构和外部引脚分别如下两图所示。
内部各部分的作用和工作原理在内部结构图中已一目了然,在此就不再赘述,下面仅对各引脚定义分述如下:
(1)IN0~IN7——8路模拟输入,通过3根地址译码线ADDA、ADDB、ADDC来选通一路。
(2)D7~D0——A/D转换后的数据输出端,为三态可控输出,故可直接和微处理器数据线连接。
8位排列顺序是D7为最高位,D0为最低位。
(3)ADDA、ADDB、ADDC——模拟通道选择地址信号,ADDA为低位,ADDC为高位。
地址信号与选中通道对应关系如表11.3所示。
(4)VR(+)、VR(-)——正、负参考电压输入端,用于提供片内DAC电阻网络的基准电压。
在单极性输入时,VR(+)=5V,VR(-)=0V;双极性输入时,VR(+)、VR(-)分别接正、负极性的参考电压。
(5)ALE——地址锁存允许信号,高电平有效。
当此信号有效时,A、B、C三位地址信号被
锁存,译码选通对应模拟通道。
在使用时,该信号常和START信号连在一起,以便同时锁存通道地址和启动A/D转换。
(6)START——A/D转换启动信号,正脉冲有效。
加于该端的脉冲的上升沿使逐次逼近寄存止,重新从头开始转换器清零,下降沿开始A/D转换。
如正在进行转换时又接到新的启动脉冲,则原来的转换进程被中。
ADC0809内部结构框图
地址
选中通道
ADDC
ADDB
ADDA
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
IN0
IN1
IN2
IN3
IN4
IN5
IN6
IN7
A
ADC0809外部引脚图
图3ADC0809
(7)EOC——转换结束信号,高电平有效。
该信号在A/D转换过程中为低电平,其余时间为高电平。
该信号可作为被CPU查询的状态信号,也可作为对CPU的中断请求信号。
在需要对某个模拟量不断采样、转换的情况下,EOC也可作为启动信号反馈接到START端,但在刚加电时需由外电路第一次启动。
(8)OE——输出允许信号,高电平有效。
当微处理器送出该信号时,ADC0808/0809的输出三态门被打开,使转换结果通过数据总线被读走。
在中断工作方式下,该信号往往是CPU发出的中断请求响应信号。
3、工作时序与使用说明
图4ADC0809的工作时序图
用单片机控制ADC时,多数采用查询和中断控制两种方式。
查询法是在单片机把启动命令送到ADC之后,执行别的程序,同时对ADC的状态进行查询,以检查ADC变换是否已经完成,如查询到变换已结束,则读入转换完毕的数据。
中断控制是在启动信号送到ADC之后,单片机执行别的程序。
当ADC转换结束并向单片机发出中断请求信号时,单片机响应此中断请求,进入中断服务程序,读入转换数据,并进行必要的数据处理,然后返回到原程序。
这种方法单片机无需进行转换时间管理,CPU效率高,所以特别适合于变换时间较长的ADC。
本设计采用查询方式进行数据收集。
由于ADC0809片内无时钟,故运用8051提供的地址锁存使能信号ALE经D触发器二分频后获得时钟。
因为ALE信号的频率是单片机时钟频率的1/6,如果时钟频率为6MHz,则ALE信号的频率为1MHz,经二分频后为500kHz,与AD0809时钟频率的典型值吻合。
由于AD0809具有三态输出锁存器,故其数据输出引角可直接与单片机的总线相连。
地址码引脚ADDA~C分别与地址总线的低3位A0、A1、A2相连,以选通IN0~IN7中的一个通道。
采用单片机的P2.7(地址总线最高位A15)作为A/D的片选信号。
并将A/D的ALE和START脚连在一起,以实现在锁存通道地址的同时启动ADC0809转换。
启动信号由单片机的写信号和P2.7经或非门而产生。
在读取转换结果时,用单片机的读信号和P2.7经或非门加工得到的正脉冲作为OE信号去打开三态输出锁存器。
编写的软件按下列顺序动作:
令P2.7=A15=0,并用A0、A1、A2的组合指定模拟通道的地址;执行一条输出指令,启动A/D转换;然后根据所选用的是查询、中断、等待延时三种方式之一的条件去执行一条输入指令,读取A/D转换结果。
ADC0809是一个8路8位逐次逼近的A/D转换器。
AD0809的转换时间为100µs。
在CPU启动A/D命令后,便执行一个固定的延时程序,延时时间应略大于A/D的转换时间;延时程序一结束,便执行数据读入指令,读取转换结果。
我们只用了其一路AD转换,参考电压2.56V,即一位数字量对应10mV即1℃。
所以用起来很方便。
ADC0809是带有8路模拟开关的8位A/D转换芯片,所以它可有8个模拟量的输入端,由芯片的A,B,C三个引脚来选择模拟通道中的一个。
A,B,C三端分别与AT89C51的P0.0~P0.2相接。
地址锁存信号(ALE)和启动转换信号(START),由P2.6和/WR或非得到。
输出允许,由P2.6和/RD或非得到。
时钟信号,可有89C51的ALE输出得到,不过当采用12M晶振时,应该先进行二分频,以满足ADC0809的时钟信号必须小于640K的要求。
与单片机的连接如图5所示
图5数据转换系统电路图
2.4显示电路设计路
2.4.1LED数码管构成
LED数码管显示器是由发光二极管显示字段的显示器件,也称为数码管。
其外形结构如图所示。
它由8个发光二极管构成,通过不同的组合可用来显示0-9、A-F及小数点“.”等字符。
数码管有共阴极和共阳极两种结构规格,电阻为外接。
共阴极数码管的发光二极管阴极共地,当某发光二极管的阳极为高电平时,二极管点亮;共阳极数码管的发光二极管是阳极,并接高电平,对于需点亮的发光二极管将其阴极接低电平即可。
图6(a)共阴极图6(b)共阳极
图6(C)字段显示
2.4.2显示方式
(1)静态显示方式
直接利用并行口输出。
LED显示工作于静态显示方式时,各位的共阴极连接在一起接地;每位的段选线分别于一个8位的锁存输出相连。
一般称之为静态显示,是由于显示器中的各位相互独立。
而且各位的显示字符一经确定,相应锁存器的输出将维持不变,直到显示另一个字符为止。
本实验采用串入并出的静态显示方式。
利用通信号串行输出。
在实际应用中,多位LED显示时,为了简化电路,在系统不需要通信功能时,经常采用串行通信口工作方式0,外接移位寄存器74LS164来实现静态显示。
(2)动态显示方式
对多位LED显示器的动态显示,通常都时采用动态扫描的方法进行显示,即逐个循环点亮各位显示器。
这样虽然在任一时刻只有一位显示器被点亮,但是由于间隔时间较短,且人眼具有视觉残留效应,看起来与全部显示器持续点亮一样。
为了实现LED显示器的动态扫描,除了要给显示器提供的输入之外,还要对显示器加位选择控制,这就是通常所说的段控和位控。
因此多位LED显示器接口电路需要有两个输出口,其中一个用于输出8位控信号;另一个用于输出段控信号,其连接图如图7。
图7LED显示电路
表1七段LED段选码表
显示字符
共阴极段
显示字符
共阴极段
0
3FH
C
39H
1
06H
D
5EH
2
5BH
E
79H
3
4FH
F
71H
4
66H
P
73H
5
6DH
U
3EH
6
7DH
Γ
31H
7
07H
y
6EH
8
7FH
8.
FFH
9
6FH
“灭”
00H
A
77H
/
/
B
7CH
/
/
3软件设计
3.1主程序设计
3.1.1工作流程
首先在模拟信号转换开始初期延时一段时间(150微秒),延时完成后数据肯定已经转换完毕。
转向数据存储程序,最后再到显示程序,本设计使用的是串入并出形式的显示方法。
要求正确的显示温度值。
完成一次温度采集显示程序后,要延时1秒,使的数据显示稳定,如果延时时间过短,温度值会在跳跃的临界点闪烁。
然后转向温度采集并循环显示程序。
工作流程图如下:
图8主程序流程
3.1.2存储空间定义安排
40H用于存放A/D转换结果,40H、41H、42H分别存储显示用的三位数据如下表:
表2存储空间定义表
40H
用于存放A/D转换结果
40H
温度值十位数部分
41H
温度值个位数部分(小数点的处理)
42H
温度值小数位部分
3.2模块程序设计
3.2.1A/D转换测量程序
A/D转换的常用方法有:
①计数式A/D转换,②逐次逼近型A/D转换,③双积分式A/D转换,④V/F变换型A/D转换。
在这些转换方式中,记数式A/D转换线路比较简单,但转换速度较慢,所以现在很少应用。
双积分式A/D转换精度高,多用于数据采集及精度要求比较高的场合,如5G14433(31/2位),AD7555(41/2位或51/2位)等,但速度更慢。
逐次逼近型A/D转换既照顾了转换速度,有具有一定的精度,这里选用的是逐次逼近型的A/D转换芯片ADC0809。
采用延时控制的方式实现,不浪费时间,效率较高。
其流程图如下:
图9A/D转换测量程序
3.2.2显示程序
LED显示工作于静态显示方式时,各位的共阴极连接在一起接地;每位的段选线分别于一个8位的锁存输出相连。
一般称之为静态显示,是由于显示器中的各位相互独立。
而且各位的显示字符一经确定,相应锁存器的输出将维持不变,直到显示另一个字符为止。
本实验采用串入并出的静态显示方式。
利用通信号串行输出。
在实际应用中,多位LED显示时,为了简化电路,在系统不需要通信功能时,采用串行通信口工作方式0,外接移位寄存器74LS164来实现静态显示。
图10显示子程序
3.3程序设计
org000h
jmpmain
org0030h
main:
movr0,#40h
movdptr,#0bff8h;指向0809首地址
movx@dptr,a;启动A/D转换
tt1:
movxa,@dptr;读数
movx@r0,a;存数
movx@dptr,a;启动A/D转换
lcalldelay128us;等待转换完毕(至少128us)
movxa,@dptr
mov@r0,a
lcalltran;模数-数据转换
lcalldisp;数据的静态显示
lcalldelay1s
sjmpmain
;;;;;;;;;;;;;;;;数据转换;;;;;;;;;;;;;;;
tran:
;数据转换
movr0,#40h
movr3,#00h
mova,@r0;把r0中的数给a
movb,#03h;标度变换3格一度
divab
movr3,b
movb,#0ah;将标度变换结果的整数部分进行BCD码转换
divab
mov@r0,a;将十位数送显示缓冲单元
incr0;指向缓冲单元下一地址
mov@r0,b;将个位数送显示缓冲单元
mova,r3;标度转换结果小数部分处理
movb,#03h;实现三格一度
mulab
incr0
mov@r0,a;送显示缓冲单元
lop:
ret
;;;;;;;;;;静态显示子程序-串入并出;;;;;;;
disp:
movdptr,#tab
movr0,#40h;r0指向缓存区首地址
mova,@r0;将整数位数给a
movca,@a+dptr;利用表格计算十位七段LED数码管的段码
mov40h,a;将段码结果送入40h
incr0;r0指向缓存区下一地址
mova,@r0;将个位数给a
movca,@a+dptr;利用表格计算个位七段LED数码管的段码
mov41h,a;将段码结果送入41h
incr0;r0指向缓存区下一地址
mova,@r0;将小数给a
movca,@a+dptr;利用表格计算小数位七段LED数码管的段码
mov42h,a;将段码结果送入42h
;;;;;;;;;;;最后一位清零;;;;;;;;;;;;
mov43h,#00h
mova,43h
movr7,#8
ccc:
jbacc.7,aaa;
clrp3.0;
jmpbbb
aaa:
setbp3.0
bbb:
setbp3.1
clrp3.1
rla
djnzr7,ccc
;;;;;;;;小数位数显示;;;;;;;
mova,42h
movr7,#8
cc:
jbacc.7,aa;
clrp3.0;
jmpbb
aa:
setbp3.0
bb:
setbp3.1
clrp3.1
rla
djnzr7,cc;所有位检测后顺序执行
;;;;;;;;;;;;个位数显示;;;;;;;;;;;
orl41h,#80h;个位数后置小数点
mova,41h
movr7,#8
dd:
jbacc.7,ee
clrp3.0
jmpff
ee:
setbp3.0
ff:
setbp3.1
clrp3.1
rla
djnzr7,dd
;;;;十位数数显示;;;;;
mova,40h
movr7,#8
gg:
jbacc.7,hh
clrp3.0
jmpii
hh:
setbp3.0
ii:
setbp3.1
clrp3.1
rla
djnzr7,gg
tab:
db3fh,06h,5bh,4fh,66h
db6dh,7dh,07h,7fh,6fh
lop1:
ret
;;;;;;;;;;ADC0809转换所需时间;;;;;;;;;;
delay128us:
movr5,#30
delay1:
movr7,#5
delay2:
nop
nop
djnzr7,delay2
djnzr5,delay1
ret
;;;;;;;;;;为使数据显示稳定延时1秒;;;;;;;;
delay1s:
movr4,#10
delay00:
movr5,#100
delay11:
movr7,#249
delay22:
nop
nop
djnzr7,delay22
djnzr5,delay11
djnzr4,delay00
ret
总结
作为一名通信的大三学生,我觉得做单片机课程设计是很有意义的,而且也是必要的。
在做这次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。
为了让自己的设计更加完善,查阅这方面的实际资料是十分必要的,也是必不可少的。
其次,在这次课程设计中,我们运用了以前学过的专业课知识,如:
proteus仿真、汇编语言、模拟和数字电路知识等。
虽然过去我从未独立应用过他们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。
最后,要做好一个课程设计,就必须做到:
在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机有哪些资源;要有一个清晰的思路和一个完整的软件流程图;在设计程序时,不能妄想一次将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,这样为资料的保留和交流提供了方便;在设计中遇到的问题要记录,以免下次遇到同样的问题。
在这次的课程设计中,我真正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单片机更是如此,程序只有在经常写与读的过程中才能提高,这就是这次课程设计的最大收获。
参考资料
[1]肖洪兵.跟我学用单片机[M].北京:
北京航空航天大学出版社,2002
[2]赵晓安.MCS-51单片机原理及应用[M].天津:
天津大学出版社,2001[3]何立民.单片机高级