温度测控系统设计Word文档下载推荐.docx
《温度测控系统设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《温度测控系统设计Word文档下载推荐.docx(26页珍藏版)》请在冰点文库上搜索。
![温度测控系统设计Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/df5f9629-5086-4c0d-8fa4-05e9c38b84b1/df5f9629-5086-4c0d-8fa4-05e9c38b84b11.gif)
AD590是一种电压输入、电流输出型集成温度传感器,测温范围为-55℃~150℃,非线性误差在±
0。
30℃,其输出电流与温度成正比,温度没升高1K(K为开尔文温度),输出电流就增加1uA。
其输出电流I=(273+T)uA。
本设计中串联电阻的阻值选用2KΩ,所以输出电压V+=(2730+10T)MV.另外,为满足系统输入模拟量进行处理的功能,对其再扩展一片ADC0809,以进行模拟—数字量转化。
2.3显示接口芯片
为满足本次设计温度显示的需要,我们选择了8279芯片,INTEL8279芯片是一种通用的可编程的键盘、显示接口器件,单个芯片就能完成键盘键入和LED显示控制两种功能。
3、系统各部分功能模块介绍
3.1温度测量和控制部分
3.1.1温度测量部分
A\D590是AD公司生产的一种精度和线度较好的双端集成传感器,其输出电流与绝对温度有关,对于电源电压从5-10V变化只引起1uA最大电流的变化或1摄氏度等效误差。
图4-1给出了用于获得正比于绝对温度的输出电流的基本温度敏感电路。
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转换输出的数字量就和摄氏温度成线性比例的关系。
图3-1
3.1.2温度控制部分
当PC6为高电平时,三极管导通,继电器吸合,向降温系统输出12V电压降温;
反之,输入低电平,三极管截止,继电器断开,停止降温。
在图4-中,二极管的作用是吸收继电器端开时产生的浪涌电压。
图3-2
3.2ADC0809与8255的连接
模拟输入通道地址A,B,C直接接地,因此ADC0809只对通道IN0输入的电压进行模数转换。
为了减少输入噪声其他通道直接接地。
ADC0809的数据线D0-D7与8255的PB0-PB7相连接。
其片选CS与8086的地址/数据总线AD14相连接。
图3-3
3.38086的可编程外设接口电路
8255的数据口D0-D7与CPU的6根控制线相连接,控制8255A内部的各种操作。
控制线RESET用来使8255A复位。
CS和地址线A1及A0用于芯片选择和通道寻址。
分别与8086的高位地址线A19,A1,A0相连接。
图3-4
3.4数据显示部分
图3-5
3.5系统硬件原理图
图3-6
4、系统流程图
4.1主程序
通过开始界面,显示提示信息,调用温度子程序,设置温度。
通过模数转换器采集A\D值并求其平均值。
调用BCD码转换子程序将其转换为十进制温度值;
调用显示子程序,如果温度高于实际温度,不降温,反之拨动开关关闭,开始降温。
在此过程中,还可以重复设置温度值。
其流程图如图5-1所示。
图4-1
4.2BCD码转换子程序
设定温度为0摄氏度时变换放大电路送出的模拟量为0.0V,此时A/D输出的数字量为00H;
温度为60℃时变换器送出对应电压4.98V,此时A/D输出的数字量为FFH,即每0.3℃对应1LSB的变化量,对应电压值为19.5mV。
报警温度设定为60℃,此时,输出电压约为5.0V左右。
其流程图如图4-2所示。
图4-2
4.3显示子程序
采用动态显示方式,其流程图如图4-3所示。
4.4温度值设置子程序
为了避免降温过低,在程序设计中加了一条,即设定值不能大于60℃,否则就认为有错系统报警。
其流程图如图4-4所示。
图4-3
5系统调试
通过前一部分的介绍说明,我们对系统的工作情况有了大体的了解。
为了进一步了解系统的工作过程,这里介绍一下系统调试过程及调试过程中出现的一些具体的问题。
我们的实验调试软件运行于DOC环境下,其步骤如下:
5.1根据硬件图和原理图连接好线路。
5.2在PC机上敲入程序,并对其进行的查错,编译,连接,最后生成可执行文件。
5.3接上电源,敲入可执行文件的文件名,系统就开始了工作过程。
5.3.1这是DOC屏幕上会出现的一些提示信息,如
’ENTERANYKEYTOBEGIN!
’
’***LETPA0=0TOADJUSTTHETEMPERATUREVALUE!
***’
’***LETPA0=1TOINPUTA
NEWTEMPERATUREVALUE!
这里后两条只作注释用。
5.3.2然后敲任意一个键,系统就开始进行温度测量和显示,屏幕上就会显示
’INPUTTHETEMPERATURE:
在这一条信息之后敲入一温度值。
注意这里敲入的温度值不能大于76摄氏度,否则屏幕将会显示’INPUTVALUEERROR!
’并返回DOC。
(以后重新设定温度时也是如此)
5.4在正常情况下,敲入设定温度后系统就开始进行控制调节,当实际温度小鱼设定值时,系统就开始进行加热,如果不加改变,它就会加热一直稳定到设定的温度值;
如果这是想重新设置一温度,只要把8255的PA0读取拨动开关拨到1,屏幕上就会显示:
‘INPUTANEWTEMPERATURE:
这里又得注意一下,在敲入一个新的设定温度之前,得先把PA0读取拨动开关拨到0,否则,在敲完设定温度之后,屏幕上又会显示同样一条信息。
因为它是根据PA0是0还是1来决定是去重新输入设定温度还是去调节温度。
如果不先把PA0拨为0,它就是一直让你输入却不进行调节。
另外,这里温度值的设定的次数没有限制。
6程序如下:
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
显示提示信息六
MOVDX,OFFSETMESS6
显示提示信息七
MOVDX,OFFSETMESS7
MOVAH,08H
显示提示信息三
MOVDX,OFFSETMESS3
CALLinput;
输入设置的温度值存DATA1
OK:
MOVDX,Z8255;
设置A口为输入,C口为输出
MOVAL,92H
OUTDX,AL
MOVDX,Z8255C
MOVAL,00H
CALLdelay
CALLdelay
MOVDX,Z8279;
初始化8279
MOVAL,LEDMOD
MOVAH,09H;
显示提示信息二
MOVDX,OFFSETMESS2
BEGIN:
MOVBX,0
MOVCL,COUNT
MOVCH,0
BB:
MOVDX,CSAD;
启动A/D
MOVAX,0
INAL,DX;
采样A/D值
ADCBX,AX;
求平均值
LOOPBB
MOVAX,BX
RCRAX,1
RCRAX,
RCRAX,1
CALLchangtoBCD;
转化为十进制的温度值
MOVDI,OFFSETDATA1
MOV[DI+3],AL
CALLDIS
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:
AA:
MOVAH,0BH;
坚持键盘状态,有键按下则返回DOC
CMPAL,0
JZCC
MOVAX,4C00H
CC:
JMPBEGIN
delayPROCNEAR;
延时子程序
PUSHCX
MOVCX,0F00H
LOOP$
POPCX
RET
DelayENDP
inputPROCMEAR;
温度值的设置子程序
MOVAH,1H
MOV[DI],AL
MOVBH,AL
MOVAH,1L
MOV[DI+1],AL
MOVBL,AL
ANDBH,0FH
RCLBH,1
RCLBH,1
ORBL,BH
MOVAL,BL
CMPAL,76H;
输入温度大于60则显示错误提示信息
JAERR
MOV[DI+2],AL
InputENDP
ERR:
显示错误提示信息
MOVDX,OFFSETMESS4
ChangetoBCDPROCNEAR;
BCD码转换子程序
MOVBL,3
MULBL
MOVBL,10
DIVBL
AAM;
非压缩BCD码乘法调整指令
MOVAL,AH
MOVCL,04H
RORAL,CL
XORAL,BL
ChangetoBCDENDP
DISPROCNEAR;
显示子程序
MOVAL,0FH
PUSHAX
MOVDX,Z8279
MOVAL,90H
POPAX
PUSHBX
LEABX,LED
XLAT
POPBX
MOVDX,D8279
ANDAL,0FH
DISENDP
CODEENDS
ENDSTART
四、结论与展望
本设计中应用了许多单片机芯片和单片机常用的外部设,单片机芯片如:
ADC0809,8255等。
单片机外部设备如:
温度检测元件AD590,键盘和显示系统中的LED显示器等。
该系统的主要优点如下:
一、本系统本着简单可靠的原则完成了设计要求,尽量做到线路简单,充分利用软件编程,安装比较灵活而且价格较低。
二、在系统的硬件和软件设计中,都加有安全设计部分,避免加热过高造成设备的损坏。
同时,该系统在测量过程中会带来系统误差。
五、心得体会及建议
通过近一周的课程设计时间,课程设计的基本目的达到了
随着科技的进步温度控制系统的实现方法已经很多,由传统的物理实现转变到软件实现,而且起精确程度也大大的提高,且实现方法也越来越简单。
在这里是在学完了《微型计算机原理及应用》进行的课程设计,所以这里是基于微机原理的基础知识来实现温度控制的,首先应该画出硬件设计图,这个过程是基础,然后是流程图,这个是重点,流程图的完成在很大程度上等于程序的完成,然后是程序的编写。
通过辅导老师的指导,同学们的相互帮助,我收获了很多,也通过设计增强了自己动手的能力,同时也对自己所学到的知识作一个肯定。
学好这门课程在自己今后的学习和工作中都有很大的作用,对自己以后的帮助也很大.这次课程设计给我的最大的印象就是如果自己有了兴趣,就动手去做,困难在你的勇气和毅力下是抬不了头的。
而在这次课程设计中,也是对《微型计算机原理及应用》的复习。
同时在设计中使我的编程水平提高了一大步,使我认识到合作的可贵。
这次设计涉及到很多芯片的应用,最大特点是软,硬件的结合,对动手能里的要求很大。
也使我更加的体会到,在一定程度和科技水平上,硬件和软件是可以实现对等转化的。
温控系统的发展史就很好的诠释了这个过程。
从物理硬件实现到软件实现。
六、附录
1、8086微处理器的一般性能特点
(1)16位的内部结构,16位双向数据信号线;
(2)20位地址信号线,可寻址1M字节存储单元;
(3)较强的指令系统;
(4)利用第16位的地址总线来进行I/O端口寻址,可寻址64K个I/O端口;
(5)中断功能强,可处理内部软件中断和外部中断,中断源可达256个;
(6)单一的+5V电源,单相时钟5MHz。
2、8086CPU芯片是双列直插式集成电路芯片,都有40个引脚,其中32个引脚在两种工作模式下的名称和功能是相同的,还有8个引脚在不同的工作模式下,具有不同的名称和功能。
下面,我们分别来介绍这些引脚的输入/输出信号及其功能。
VCC、GND:
电源、接地引脚(3),8088/8086CPU采用单一的+5V电源,但有两个接地引脚。
AD15—AD0(AddressDataBus):
地址/数据复用信号输入/输出引脚(16),分时输出低16位地址信号及进行数据信号的输入/输出。
A19/s6—A15/s3(AddressStatusBus):
地址/状态复用信号输出引脚(4),分时输出地址的高4位及状态信息,其中s6为0用以指示8086/8088CPU当前与总线连通;
s5为1表明8086/8088CPU可以响应可屏蔽中断;
s4、s3共有四个组态,用以指明当前使用的段寄存器,00—ES,01—SS,10—CS,11—DS。
(4)NMI(Non-MaskableInterrupt)、INTR(InterruptRequest):
中断请求信号输入引脚
(2),引入中断源向CPU提出的中断请求信号,高电平有效,前者为非屏蔽中断请求,后者为可屏蔽中断请求信号。
(5)
(Read):
读控制输出信号引脚
(1),低电平有效,用以指明要执行一个对内存单元或I/O端口的读操作,具体是读内存单元,还是读I/O端口,取决于
控制信号。
(6)CLK/(Clock):
时钟信号输入引脚
(1),时钟信号的方波信号,占空比约为33%,即1/3周期为高电平,2/3周期为底电平,8088/8088的时钟频率(又称为主频)为4。
77MHz,即从该引脚输入的时钟信号的频率为4。
77MHz。
(7)Reset(Reset):
复位信号输入引脚
(1),高电平有效。
8088/8086CPU要求复位信号至少维持4个时钟周期才能起到复位的效果,复位信号输入之后,CPU结束当前操作,并对处理器的标志寄存器、IP、DS、SS、ES寄存器及指令队列进行清零操作,而将CS设置为0FFFFH。
(8)READY(Ready):
“准备好”状态信号输入引脚
(1),高电平有效,“Ready”输入引脚接收来自于内存单元或I/O端口向CPU发来的“准备好”状态信号,表明内存单元或I/O端口已经准备好进行读写操作。
该信号是协调CPU与内存单元或I/O端口之间进行信息传送的联络信号。
(9)
(Test):
测试信号输入引脚
(1),低电平有效,TEST信号与WAIT指令结合起来使用,CPU执行WAIT指令后,处于等待状态,当TEST引脚输入低电平时,系统脱离等待状态,继续执行被暂停执行的指令。
(10)MN/MX(Minimum/MaximumModelControl):
最小/最大模式设置信号输入引脚
(1),该输入引脚电平的高、低决定了CPU工作在最小模式还是最大模式,当该引脚接+5V时,CPU工作于最小模式下,当该引脚接地时,CPU工作于最大模式下。
(11)
/S7(BusHighEnable/Status):
高8位数据允许/状态复用信号输出引脚
(1),输出。
分时输出
有效信号,表示高8为数据线D15—D8上的数据有效和S7状态信号,但S7未定义任何实际意义。
38255A并行I\O接口
一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口。
具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB口和PC口。
它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3)。
A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式;
B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定。
3.28255引脚功能
RESET:
复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:
芯片选择信号线,当这个输入引脚为低电平时,即
=0时,表示芯片被选中,允许8255与CPU进行通讯;
=1时,8255无法与CPU做数据传输。
RD:
读信号线,当这个输入引脚为低电平时,即
=0且
=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:
写入信号,当这个输入引脚为低电平时,即
=0时,允许CPU将数据或控制字写入