温度测控系统设计详解Word文档下载推荐.docx
《温度测控系统设计详解Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《温度测控系统设计详解Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
数据经过标度转换后,一方面通过数码管将温度显示出来[1];
另一方面,将该温度值与设定的温度值进行比较,调整风扇的开通情况,从而控制温度。
在断开风扇,温度仍然异常,报警器发出声音报警,提示采取相应的调整措施。
其温度控制系统的原理框图如图1-1所示
图1-1系统原理框图
3系统硬件选择和设计
3.1系统扩展接口的选择
本次设计采用的是8086微处理器,选择8255A可编程并行接口作为系统的扩展接口,8255A的通用性强,适应灵活,通过它CPU可直接与外设相连接。
3.2温度传感器与A\D转换器的选择
本系统选用温度传感器AD590构成测温系统。
AD590是一种电压输入、电流输出型集成温度传感器,测温范围为-55℃~150℃,非线性误差在±
0。
30℃,其输出电流与温度成正比,温度没升高1K(K为开尔文温度),输出电流就增加1uA。
其输出电流I=(273+T)uA。
本设计中串联电阻的阻值选用2KΩ,所以输出电压V+=(2730+10T)MV.另外,为满足系统输入模拟量进行处理的功能,对其再扩展一片ADC0809,以进行模拟—数字量转化[2]。
3.3显示接口芯片
为满足本次设计温度显示的需要,我们选择了8279芯片,INTEL8279芯片是一种通用的可编程的键盘、显示接口器件,单个芯片就能完成键盘键入和LED显示控制两种功能。
4系统各部分功能模块介绍
4.1温度测量部分
A\D590是AD公司生产的一种精度和线度较好的双端集成传感器,其输出电流与绝对温度有关,对于电源电压从5-10V变化只引起1uA最大电流的变化或1摄氏度等效误差。
图4-1给出了用于获得正比于绝对温度的输出电流的基本温度敏感电路[3]。
A\D590输出的电流I=(273+T)uA(T为摄氏温度)。
因此测量的电压V为(273+T)uA×
10K=(2.73+T/100)V,为了将电压测量出来,又务必使电流I不分流出来。
使用电压跟随器使其输出电压V2等于V。
由于一般电源供应多器件之后,电源是带杂波的,因此使用稳压二极管作为稳压元件,再利用可变电阻分压,其输出电压V1需调至2.73V。
差动放大器其输出V0为(100K/10K)×
(V2-V1)=T/10,如果现在为摄氏28℃,输出电压为2.8V。
输出电压接A\D转换器,那么A\D转换输出的数字量就和摄氏温度成线性比例的关系。
图4-1基本温度敏感电路
4.2温度控制部分
当PC6为高电平时,三极管导通,继电器吸合,向降温系统输出12V电压降温;
反之,输入低电平,三极管截止,继电器断开,停止降温。
在图4-2中,二极管的作用是吸收继电器端开时产生的浪涌电压[4]。
图4-2降温系统
4.3ADC0809与8255的连接
模拟输入通道地址A,B,C直接接地,因此ADC0809只对通道IN0输入的电压进行模数转换。
为了减少输入噪声其他通道直接接地。
ADC0809的数据线D0-D7与8255的PB0-PB7相连接。
其片选CS与8086的地址/数据总线AD14相连接。
图4-33ADC0809与8255的连接
4.48086的可编程外设接口电路
8255的数据口D0-D7与CPU的6根控制线相连接,控制8255A内部的各种操作。
控制线RESET用来使8255A复位[5]。
CS和地址线A1及A0用于芯片选择和通道寻址。
分别与8086的高位地址线A19,A1,A0相连接。
图4-4可编程外设接口电路
4.5数据显示部分
如图4-5为数据显示系统
图4-5数据显示系统
4.6系统硬件原理图
如图4-6为系统硬件原理图
图4-6系统硬件原理图
5系统软件设计
5.1主程序
通过开始界面,显示提示信息,调用温度子程序,设置温度。
通过模数转换器采集A\D值并求其平均值。
调用BCD码转换子程序将其转换为十进制温度值;
调用显示子程序,如果温度高于实际温度,不降温,反之拨动开关关闭,开始降温。
在此过程中,还可以重复设置温度值。
其主流程图如图5-1所示
图5-1主程序流程图
5.2BCD码转换子程序
设定温度为0摄氏度时变换放大电路送出的模拟量为0.0V,此时A/D输出的数字量为00H[6];
温度为60℃时变换器送出对应电压4.98V,此时A/D输出的数字量为FFH,即每0.3℃对应1LSB的变化量,对应电压值为19.5mV。
报警温度设定为60℃,此时,输出电压约为5.0V左右。
其流程图如图5-2所示
图5-2BCD码转换子程序流程图
5.3源程序
CSADEQU209H
Z8279EQU212H
D8279EQU210H
LEDMODEQU00H;
左边输入,八位显示外部译码八位显示
LEDFEQEQU38H;
扫描频率
LEDCLSEQU0C1H;
清除显示RAM
Z8255EQU21BH
Z8255AEQU218H
Z8255CEQU21AH
COUNTEQU8
DATASEGMENT
DATA1DB4DUP(?
)
MESS1DB‘ENTERANYKEYTOBEGIN!
’,0DH,0AH,’$’
MESS2DB10,13,’ENTERANYKEYCANEXITTODOS!
’,0DH,0AH,’$’
MESS3DB10,13,’INPUTTHETEMPERATUREVALUE:
’,’$’
MESS4DB10,13,’INPUTVALUEERROR!
’,0DH,0AH,’$’
MESS5DB10,13,’INPUTANEWTEMPERATUREVALUE:
MESS6DB10,13,’***LETPA0=0TOADJUSTTHETEMPERATUREVALUE!
***’,0DH,0AH,’$’
MESS7DB10,13,’***LETPA0=1TOINPUTANEWTEMPERATUREVALUE!
***’,0DH,0AH,’$’
LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H
DATAENDS
STACKSEGMENTSRACK
STADW50DUP(?
TOPEQULENGTHSTA
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAH,09H;
显示提示信息一
MOVDX,OFFSETMESS1
INT21H
MOVAH,09H;
显示提示信息六
MOVDX,OFFSETMESS6
MOVAH,09H;
显示提示信息七
MOVDX,OFFSETMESS7
MOVAH,08H
MOVAH,09H;
显示提示信息三
MOVDX,OFFSETMESS3
CALLINPUT;
输入设置的温度值存DATA1
OK:
MOVDX,Z8255;
设置A口为输入,C口为输出
MOVAL,92H
OUTDX,AL
MOVDX,Z8255C
MOVAL,00H
CALLdelay
MOVDX,Z8279;
初始化8279
MOVAL,LEDMOD
MOVAH,09H;
显示提示信息二
MOVDX,OFFSETMESS2
BEGIN:
MOVBX,0
MOVCL,COUNT
MOVCH,0
BB:
MOVDX,CSAD;
启动A/D
MOVAX,0
CALLDELAY
INAL,DX;
采样A/D值
ADCBX,AX;
求平均值
LOOPBB
MOVAX,BX
RCRAX,1
RCRAX,
RCRAX,1
CALLCHANGTUBCD;
转化为十进制的温度值
MOVDI,OFFSETDATA1
MOV[DI+3],AL
CALLDIS
MOVDI,OFFSETDATA1
MOVBL,[DI+2];
取输入值
MOVAL,[DI+3];
取实际值
CMPAL,BL;
实际值与输入值比较
JBUP;
小于则不降温
MOVDX,Z82555A;
否则读开关量
INAL,DX
ANDAL,01H
JZDOWN;
PA0=0则开始降温
MOVAH,09H;
PA0=1则设置新的温度值,并将PA0切
换到0进行新的控制调节
MOVDX,OFFSETMESS5
CALLINPUT
JMPBEGIN
UP:
MOVAL,40H
JMPAA
DOWN:
MOVAL,00H
AA:
MOVDX,Z8255C
OUTDX,AL
MOVAH,0BH;
坚持键盘状态,有键按下则返回DOC
CMPAL,0
JZCC
MOVAX,4C00H
CC:
JMPBEGIN
DELAYPROCNEAR;
延时子程序
PUSHCX
MOVCX,0F00H
LOOP$
POPCX
RET
DelayENDP
INRUTPROCMEAR;
温度值的设置子程序
MOVAH,1H
MOVDI,OFFSETDATA1
MOV[DI],AL
MOVBH,AL
MOVAH,1L
MOV[DI+1],AL
MOVBL,AL
ANDBH,0FH
RCLBH,1
RCLBH,1
ANDBH,0FH
ORBL,BH
MOVAL,BL
CMPAL,76H输入温度大于60则显示错误信息
JAERR
MOV[DI+2],AL
InputENDP
ERR:
MOVAH,09H;
显示错误提示信息
MOVDX,OFFSETMESS4
MOVAX,4C00H
CHANGTOBCDPROCNEAR;
BCD码转换子程序
MOVBL,3
MULBL
MOVBL,10
DIVBL
AAM;
非压缩BCD码乘法调整指令
MOVBL,AL
MOVAL,AH
MOVCL,04H
RORAL,CL
XORAL,BL
CHANGTOBCDENDP
DISPROCNEAR;
显示子程序
MOVAL,0FH
PUSHAX
MOVDX,Z8279
MOVAL,90H
POPAX
PUSHBX
LEABX,LED
XLAT
POPBX
MOVDX,D8279
CALLDELAY
MOVAL,BL
RORAL,CL
ANDAL,0FH
LEABX,LED
CALLDELAY
RET
DISENDP
CODEENDS
ENDSTART
6系统调试
通过前一部分的介绍说明,我们对系统的工作情况有了大体的了解。
为了进一步了解系统的工作过程,这里介绍一下系统调试过程及调试过程中出现的一些具体的问题。
我们的实验调试软件运行于DOC环境下,其步骤如下:
(1)根据硬件图和原理图连接好线路。
(2)在PC机上敲入程序,并对其进行的查错,编译,连接,最后生成可执行文件。
(3)接上电源,敲入可执行文件的文件名,系统就开始了工作过程。
这是DOC屏幕上会出现的一些提示信息,如
’ENTERANYKEYTOBEGIN!
’
’***LETPA0=0TOADJUSTTHETEMPERATUREVALUE!
***’
’***LETPA0=1TOINPUTA
NEWTEMPERATUREVALUE!
然后敲任意一个键,系统就开始进行温度测量和显示,屏幕上就会显示’INPUTTHETEMPERATURE:
在这一条信息之后敲入一温度值。
注意这里敲入的温度值不能大于76摄氏度,否则屏幕将会显示’INPUTVALUEERROR!
’并返回DOC。
(以后重新设定温度时也是如此)
在正常情况下,敲入设定温度后系统就开始进行控制调节,当实际温度小鱼设定值时,系统就开始进行加热,如果不加改变,它就会加热一直稳定到设定的温度值;
如果这是想重新设置一温度,只要把8255的PA0读取拨动开关拨到1,屏幕上就会显示:
‘INPUTANEWTEMPERATURE:
这里又得注意一下,在敲入一个新的设定温度之前,得先把PA0读取拨动开关拨到0,否则,在敲完设定温度之后,屏幕上又会显示同样一条信息。
因为它是根据PA0是0还是1来决定是去重新输入设定温度还是去调节温度。
如果不先把PA0拨为0,它就是一直让你输入却不进行调节。
另外,这里温度值的设定的次数没有限制。
参考文献:
[1]周佩玲,傅忠谦.微机原理与接口技术[M].北京:
北京电子工业出版社,2005:
10-15.
[2]李国栋,陆志平.微机原理与接口技术课程设计[M].杭州:
浙江大学出版社,2007:
100-106.
[3]陈继红,徐慧.微机原理及应用2版[M].北京:
高等教育出版社,2011:
56-60.
[4]闫玉德,俞虹.MCS-51单片机原理与应用(C语言版)[M].北京:
机械工业出版社,2003:
150-160.
[5]田爱萍,王力生.微型计算机技术[M].北京:
清华大学出版社,2005:
160-165.
[6]李继灿.微型计算机系统与接口[M].北京:
120-125.
致谢
我在写作过程中遇到了无数的困难和障碍,都在同学和老师的帮助下度过了。
尤其要强烈感谢我的论文指导老师—刘敏娜老师,她对我进行了无私的指导和帮助,不厌其烦的帮助进行论文的修改和改进。
另外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。
在此向帮助和指导过我的各位老师表示最衷心的感谢。
感谢这篇论文所涉及到的各位学者。
本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。
感谢我的同学和朋友,在我写论文的过程中给予我了很多素材,还在论文的撰写和排版等过程中提供热情的帮助。
由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和学友批评和指正。