利用AD转换设计一个室温温度计Word文件下载.docx
《利用AD转换设计一个室温温度计Word文件下载.docx》由会员分享,可在线阅读,更多相关《利用AD转换设计一个室温温度计Word文件下载.docx(20页珍藏版)》请在冰点文库上搜索。
与研究,按规定要求完成其任务。
四、时间安排
课题讲解:
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
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段选码表
显示字符
共阴极段
3FH
C
39H
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
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转换结果
温度值十位数部分
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显示时,为了简化电路,在系统不需要通信功能时,采用串行通信口工作方式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;
存数
启动A/D转换
lcalldelay128us;
等待转换完毕(至少128us)
movxa,@dptr
mov@r0,a
lcalltran;
模数-数据转换
lcalldisp;
数据的静态显示
lcalldelay1s
sjmpmain
;
数据转换;
tran:
;
数据转换
movr3,#00h
mova,@r0;
把r0中的数给a
movb,#03h;
标度变换3格一度
divab
movr3,b
movb,#0ah;
将标度变换结果的整数部分进行BCD码转换
mov@r0,a;
将十位数送显示缓冲单元
incr0;
指向缓冲单元下一地址
mov@r0,b;
将个位数送显示缓冲单元
mova,r3;
标度转换结果小数部分处理
实现三格一度
mulab
incr0
送显示缓冲单元
lop:
ret
静态显示子程序-串入并出;
disp:
movdptr,#tab
movr0,#40h;
r0指向缓存区首地址
将整数位数给a
movca,@a+dptr;
利用表格计算十位七段LED数码管的段码
mov40h,a;
将段码结果送入40h
r0指向缓存区下一地址
将个位数给a
利用表格计算个位七段LED数码管的段码
mov41h,a;
将段码结果送入41h
incr0;
将小数给a
利用表格计算小数位七段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