智能温度测量仪单片机课题设计报告文档格式.docx
《智能温度测量仪单片机课题设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《智能温度测量仪单片机课题设计报告文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
我们选用的是AD590温度传感器,AD590产生的电流与绝对温度成正比,它可接收的工作电压为4V-30V,检测的温度范围为-55℃-+150℃,它有非常好的线性输出性能,温度每增加1℃,其电流增加1uA。
在AD590的温度变化范围内,经过10KΩ之后采样到的电压变化在2.182V-4.232V之间,不超过5V所参考的电压范,因此我们采用参考电压+5V。
由此可计算出经过A/D转换之后的摄氏温度显示的数据为:
如果(D*2350/128)<2732,则显示的温度值为-(2732-(D*2350/128))
如果(D*2350/128)≥2732,则显示的温度值为+((D*2350/128)-2732)
AD590温度与电流的具体关系如下表所示
摄氏温度
AD590电流
经10KΩ电压
0℃
273.2uA
2.732V
10℃
283.2uA
2.832V
20℃
293.2uA
2.932V
30℃
303.2uA
3.032V
40℃
313.2uA
3.132V
50℃
323.2uA
3.232V
60℃
333.2uA
3.332V
100℃
373.2uA
3.732V
表2-1AD590温度与电流的关系
由于本次设计的温度测量范围是0~100℃,所以在对我们而言,温度传感器给出的电压值就是2.732V~3.732V之间。
这里我们不难发现一个问题,传感器给出的电压差值只有1V,而我们A/D转换器的参考电平VREF(+)是5V,也就是说我们不能充分利用A/D转换器,导致转换精度不高,所以这种直接由温度传感器给模拟信号的方式并不可行。
针对此问题,本设计采用了UA741运算放大器对传感器的电压信号进行了稳压、放大、反向,把模拟信号由2.732V~3.732V变成了0~5V,这样就实现了与A/D转换器的参考电压相同,精度就提高了。
具体电路接线图如下:
图2-1传感器采集电路图
2.2A/D转换器转换电路
ADC0809是含8位A/D转换器、8路多路开关,以及与微型计算机兼容的控制逻辑的CMOS组件,ADC0809的转换方法为逐次逼近型,其精度是1LSB,具有较高的转换速度和精度,受温度影响小,能较长时间保证精度,重现性好,功耗较低,是过程控制比较理想的器件。
ADC0809模数转换器的引脚功能如下:
nIN0~IN7:
8路模拟量输入。
nA、B、C:
3位地址输入,3个地址输入端的不同组合选择八路模拟量输入。
nALE:
地址锁存启动信号,在ALE的上升沿,将A、B、C上的通道地址锁存到内部的地址锁存器。
nmsb~lsb:
八位数据输出线,A/D转换结果由这8根线传送给单片机。
nOE:
允许输出信号。
当OE=1时,即为高电平,允许输出锁存器输出数据。
nSTART:
启动信号输入端,START为正脉冲,其上升沿清除ADC0808的内部的各寄存器,其下降沿启动A/D开始转换。
nEOC:
转换完成信号,当EOC上升为高电平时,表明内部A/D转换已完成。
nCLK:
时钟输入信号,0809的时钟频率范围在10~1200kHz,典型值640kHz。
电路接线图如下:
图2-2A/D转换电路图
在实际操作中遇到的关于ADC0809转换器用法的问题有以下几点值得注意:
nCLK时钟输入信号引脚的接法,ADC0809转换速度取决于芯片的时钟频率,ADC0809的时钟频率范围是10~1280KHZ。
一般,我们用得更多的是用单片机的时钟经分频后送至A/D转换器的CLK引脚。
时钟分频器我们用的是4013,把从单片机ALE端引出的2MHZ(频率为振荡器频率的1/6)进行4分频后就可满足转换器时钟的需要。
分频电路如下:
图2-3分频电路图
n关于数字通道的输出引脚,初学者一般喜欢把DO~D7直接与单片机的I/O的低位到高位相连,比如与P0~P7相连。
殊不知,这样连恰恰和正确的连法相反,得不到正确的输出。
这种错误往往是致命的,因为这种连线错误很容易犯,但是在以后的线路检查中很难被发现,导致硬件电路不能正常工作。
在ADC0809中用DO~D7表示引脚2-1~2-8。
nADC0809中的参考电源有两个引脚:
VREF(+)和VREF(-)。
根据模拟量输入信号的极型不同,这两个参考电源的接法也不同。
当模拟量信号为单极性时,VREF(-)端接模拟地,VREF(+)端接参考正电源。
当模拟量信号为双极性时,VREF(+)和VREF(-)则端分别接参考电源的正、负极性端。
2.3单片机控制电路
本设计的核心处理器是采用Atmel公司的AT89C51单片机。
AT89C51单片机主要特征如下:
(1)8位CPU
(2)内置4K字节可重复编程Flash,可重复擦写1000次
(3)完全定态操作:
0Hz~24Hz,可输出时钟信号
(4)256B的片内数据存储器
(5)32根可编程I/O线
(6)2个16位定时/计数器
(7)中断系统有6个中断源,可编为两个优先级
(8)一个全双工UART(通用异步接收发送器)I/O口
(9)具有两种节能模式:
闲置模式和掉电模式
其引脚如下图,
图2-4AT89C51单片机引脚图
单片机控制的主电路包括:
(1)系统时钟电路;
(2)系统复位电路;
(3)显示电路;
(4)对ADC0809转换电路的控制电路四部分组成。
其硬件系统框图如图所示。
图2-5单片机控制电路图
2.3.1单片机时钟电路
系统时钟电路的设计如图所示。
由于图中的C11、C12电容起着系统时钟频率调和稳定的作用,因此,在本系统的实际应用中我们选择参数为30pF,并保证电路具有良好的对称性。
同时,要保证其温度系数要尽可能的低。
资料表明,这两个电容元件对系统的检测误差有较大的关系。
图2-6单片机时钟电路
2.3.2系统复位电路的设计
我们采用的是RC复位方式。
RC复位电路的实质是一阶充放电电路。
但是我们在实际设计中,通常C1取值为10μF以上,R1通常取值10KΩ左右。
因为我们实践发现,R1如果取值太小,例如1KΩ,则会导致RST信号驱动能力变差而无法使系统可靠复位。
复位电路分为上电复位(下图左)和上电复位兼手动复位(下图右)。
复位电路虽然简单,但是它的作用非常重要,一个单片机小系统能否正常工作,首先要看能否复位成功。
图2-7单片机复位电路图
2.4LED数码管显示电路
8段LED数码管是智能化测量仪器中简单而常用的显示设备。
它的优点是价格低、寿命长,对电压电流的要求低及容易实现多路显示等。
LED显示器的控制方式有静态显示和动态显示2种。
这里我们采用4位共阴数码管动态显示方法以节约I/O线,简化显示电路。
数码管工作时,逐位扫描轮流显示,但每个LED管的扫描时间非常短,由于人的视觉暂留,所以从宏观上看起来仍是所有器件都在显示。
图2-8LED数码管显示电路图
在位码处,我们可以加上NPN三极管增大数码管的驱动电流,使数码管显示更亮。
在数码管位选脚与单片机I/O接口时加上大约1千欧姆的电阻。
在数码管段选脚与单片机I/O口接口处加上大约510欧姆的电阻。
在使用数码管时我们还应该要知道其段码是共阴还是共阳,以便在程序中做出相应的段码。
2.5声光报警电路等
声光报警器进行实时监测;
当温度值超过预先设定的报警值时,系统发出声光报警。
声报警通过驱动蜂鸣器发声实现;
光报警通过发光二极管闪烁实现。
如下电路图,SPEAKER是蜂鸣器、LED是发光管、Q5是PNP的三极管。
一般I/O口输出高电平时驱动能力不够(需要接上拉电阻R26)。
图2-9声光报警电路图
第3章系统的软件设计与分析
本设计中需要通过软件实现的功能主要有对ADC0809转换器模数转换的控制,对数字信号转换成对应的十进制温度值,对LED数码管的数据显示,对声光报警电路的控制。
在这里我们对ADC0809接收到把模拟信号转换成的数字信号表示的十进制温度值要进行预先的设定,当数字信号每加1,我们设定的温度值要上升相应的值。
3.1对ADC0809转换器引脚的控制
3.1.1ADC0809转换器的数字量输出及控制线
ST为转换启动信号。
当ST上跳沿时,所有内部寄存器清零。
下跳沿时,开始进行A/D转换,在转换期间,ST应保持低电平。
EOC为转换结束信号,当EOC为高电平时,表明转换结束,否则,表明正在进行A/D转换。
OE为输出允许信号,当OE=1,输出转换得到的数据;
OE=0,输出数据线呈高阻状态。
D7-D0为数字量输出线。
CLK为时钟输入信号线。
因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供。
VREF(+)和VREF(-)为参考电压输入。
3.1.2ADC0809应用说明
(1)ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。
(2)初始化时,使ST和OE信号全为低电平。
(3)送要转换的哪一通道的地址到A,B,C端口上。
(4)在ST端给出一个至少有100ns宽的正脉冲信号。
(5)是否转换完毕,我们根据EOC信号来判断。
(6)当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。
图3-1控制引脚流程图
3.2对数字信号转换成对应的十进制温度值
把温度A/D值变换为供显示的BCD码值,格式为XXX.X,我们注意到,第三位多了个小数点,这并不是就说我们处理的数里面应该有小数,实际上我们用了一个小技巧,我们让第三位数码管的小数点位每次扫描的时候都亮,而单片机实际处理的数还是整数。
前面提到我们可以通过运算放大电路把传感器的的输入电压变成0~5V,这样标度变换原理为:
A/D满量程(5V)对应的温度为127.5℃,则任意温度A/D值NA/D对应的实际温度TX=NA/D/2。
3.3对LED数码管的数据显示
这里我们采用的是动态显示4位数码管,每个数码管之间相差1ms逐次显示,看到的就是4位数码管同时显示温度值。
利用单片机内部的定时器溢出中断实现每隔0.1s对显示数据进行更新。
图3-2数据显示流程图
3.4对声光报警电路的控制
单片机把读入的数字信号和我们预先设定的值进行比较,这里我们设置了上限50℃,下限10℃的报警值,当温度大于等于50℃或者小于等于10℃,给予声光报警。
图3-3声光报警流程图
第4章系统调试与分析
智能温度测量仪的调试工作主要从三方面入手:
一是硬件的调试;
二是软件的调试:
三是综合调试。
在调试过程中发现存在问题,分析原因,并及时修改设计方案和对系统进行修改于完善,从而达到预定的效果。
4.1硬件的静态调试
静态调试就是指在没有加电、加载的情况下对系统进行调试。
(1)首先检测电路有无短路,短路对元器件的损坏是最严重的
(2)检测各模块内连接是否正确,模块内各元器件在电路中连接极性是否正确,模块与模块之间连接是否正确,有无断路等情况。
(3)检测单片机引脚及其外围电路连接是否正确。
在静态调试过程中,发现了如下问题:
ADC0809芯片的引脚和单片机的相应的引脚连接出现错误,个别焊接点出现虚焊节点断路等问题。
4.2硬件动态调试
当静态调试结束后,已经能确保各器件电气连接正确,接下来就是加电调试,检测各模块以及整个电路是否能达到设计预期,即所谓的动态调试。
在动态调试中也发现许多问题,如数码管不能正常显示数据和显示的亮度不够,原来加电压后是有些引脚间的锡焊距离太近,导致短路,有些阻值也不合适,驱动电流太小。
4.3软件调试与分析
软件的调试主要是对数码管显示的延时和段码的共阴还是共阳的修改。
4.4综合调试
在硬件和软件调试完成后,最后就是综合调试了,这是最复杂也是最难的过程,因为在此阶段将对整个设计进行综合检验,电路设计、软件等是否合理都能通过这个环节反应出来。
本设计经过多次的调试,也涉及到了对硬件和软件的再次修改,最终能基本上达到实验目的。
第4章设计体会
经过一周多的时间,本次设计在本小组成员的共同努力下,基本上达到了要求。
这次课题设计给我留下很深刻的记忆,这不仅是对书本知识的实践操作,还检验了一个人的面对困难时的心态,尤其是在最后的调试阶段,没有耐心是成不了成绩的。
在疑惑和困难面前我们一定要保持一颗坚定地信心,相信错误在等待着我们的发现,而且我们也一定能检查到错误并且将它修改。
在整个设计过程,我们不能对某个设计地方还存在疑虑,只有对整个过程有了充分的了解,实验才能出来效果。
感谢这次的课题设计和指导老师的耐心讲解与帮助,让我受益匪浅。
在实验中我们应该尤其注意一下两个方面:
n对各个模块要有充分的了解,并写出与其相对应的正确程序。
n在硬件线路焊接时,我们不能随心所欲,注意力要高度集中,焊错线路不易检测出来,给后面的调试工作带来巨大的工作量,应该要尽量避免虚焊和短路的发生,最好的方法是每焊接一根线,就用万用表检测一根,确保万无一失。
附录一
智能温度测量仪的硬件电路图
附录二
软件程序:
SLINGEQU30H
SYIEQU31H
SEREQU32H
SSANEQU33H
SSIEQU34H
SWUEQU35H
SLIUEQU36H
SQIEQU37H
STBITP3.0
OEBITP3.1
EOCBITP3.2
ORG0000H
LJMPSTART
ORG000BH
LJMPT0X
ORG0300H
START:
MOVSP,#60H
MOVTL0,#18H
MOVTH0,#63H
MOVTMOD,#0
MOVTCON,#0
SETBTR0
SETBET0
SETBEA
MOV20H,#0
MOV21H,#0
MOV22H,#0
MOV23H,#0
MOVSYI,#0
MOVSER,#0
MOVSSAN,#0
MOVSSI,#0
MOVSWU,#0
MOVSLIU,#0
MOVSQI,#0
MOVR1,#0
CLRP3.4
LP0:
MOVR2,#08H
MOVR7,#4
MOVR0,#20H
XIANSHI:
MOVA,R2
MOVP2,A
CJNER0,#21H,ZHUAN
MOVA,@R0
MOVDPTR,#TAB1
MOVCA,@A+DPTR
MOVP1,A
AJMPJIXU
ZHUAN:
MOVDPTR,#TAB
JIXU:
ACALLD1
INCR0
MOVA,R2
RRA
MOVR2,A
DJNZR7,XIANSHI
AJMPLP0
TAB:
DB3FH,06H,5BH,4FH,66H,6DH
DB7DH,07H,7FH,6FH
TAB1:
DB0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH
DB87H,0FFH,0EFH
D1:
MOVR5,#02H
DL:
MOVR6,#0FFH
DL1:
DJNZR6,DL1
DJNZR5,DL
RET
T0X:
NOP;
定时到,开中断。
PUSHACC
PUSHPSW
INCR1
CJNER1,#10,LOOP1;
是否到0.1S,没有到了则中断返回
MOVR1,#0;
是否到0.1S,到了则读入数据,清零R1
CLRST
SETBST
ADSC:
JNBEOC,ADSC
SETBOE
MOVSLING,P0;
从AD0809读入8位数。
CLROE;
暂停读入。
MOVA,SLING
CJNEA,#14H,BBAO
AJMPBT
BBAO:
JCBT
AJMPCT
BT:
SETBP3.4
AJMPET
CT:
CJNEA,#64H,BAOJ
AJMPDT
BAOJ:
JCET
DT:
ET:
MOVB,#100
DIVAB
MOVSYI,A
MOVA,B
MOVB,#10
MOVSER,A
MOVSSAN,B;
把读入的8位数转换为十进制后,百位数、十位数、个位数分别放入31H、32H、33H中。
MOVA,SSAN
MOVB,#5
MULAB
MOVSSAN,A;
把个位数乘以5放回33H。
MOVSWU,A
把33H中的数的个位放回33H,十位放入35H。
AJMPXXZ
LOOP1:
AJMPLOOP
XXZ:
MOVA,SER
MOVSER,A;
把十位数乘以5放回32H。
MOVSLIU,A
MOVSER,B;
把32H中的数的个位放回32H,十位放入36H。
MOVA,SWU
ADDA,SER
把32H的数和35H的数相加放回32H。
MOVA,SYI
MOVSYI,A;
把百位数乘以5放回31H。
MOVSSI,A
MOVSYI,B;
把31H中的数的个位放回31H,十位放入37H。
MOVA,SLIU
ADDA,SYI
把31H的数和36H的数相加放回31H。
MOV20H,SSAN
MOV21H,SER
MOV22H,SYI
MOV23H,SSI;
把相应的参数放入显示单元
LOOP:
POPPSW
POPACC
RETI
END
参考文献
曹龙汉刘安才高占国,单片机原理及应用.重庆:
重庆通信学院出版社
潘新民王燕芳,微型计算机控制技术.北京:
电子工业出版社