微机原理与接口课程设计温度控制系统.docx
《微机原理与接口课程设计温度控制系统.docx》由会员分享,可在线阅读,更多相关《微机原理与接口课程设计温度控制系统.docx(19页珍藏版)》请在冰豆网上搜索。
微机原理与接口课程设计温度控制系统
微机原理与接口课程设计温度控制系统
信息科学与技术学院
微机原理与接口课程设计
课程题目:
温度控制系统学生姓名:
唐维学号:
**********专业、年级:
计科09级1班指导教师:
周涛时间:
2012年1月12日
1(题目及要求.......................................................................................3
1.1题目:
设计一个温度控制系统.................................................3
1.2要求:
........................................................................................32.功能设计............................................................................................3
2.1功能模块....................................................................................3
2.2ADC0809与8255的连接.......................................................5
2.3系统流程图.................................................................................7
2.3.2BCD码转换子程序............................................................9
2.3.3.显示子程序.........................................................................9
2.3.4.温度值设置子程序.............................................................9
3.详细设计............................................................................................11
3.1系统工作原理...........................................................................11
3.2系统硬件选择和设计...............................................................11
3.3ADC0809...................................................................................12
3.48279键盘、显示接口电路.......................................................14
3.4.3LED显示器工作原理......................................................17
3.5系统软件设计............................................................................184.总结....................................................................................................195.参考文献............................................................................................196.附:
源程序........................................................................................19
1(题目及要求
1.1题目:
设计一个温度控制系统
1.2要求:
1)、检测
2)、数码管显示
3)、报警
2.功能设计
2.1功能模块
2.1.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不分流出来。
使用电压跟随器使其输出电压V等于V。
2
由于一般电源供应多器件之后,电源是带杂波的,因此使用稳压二极管作为稳压元件,再利用可变电阻分压,其输出电压V需调至2.73V。
1
差动放大器其输出V为(100K/10K)×(V-V)=T/10,如果现在为摄氏28?
,021
输出电压为2.8V。
输出电压接A\D转换器,那么A\D转换输出的数字量就和摄氏温度成线性比例的关系。
图2-1温度测量部分
2)温度控制部分
当PC6为高电平时,三极管导通,继电器吸合,向加热系统输出12V电压加热;反之,输入低电平,三极管截止,继电器断开,停止加热。
在图4-中,二极管的作用是吸收继电器端开时产生的浪涌电压。
图2-2温度控制部分
2.1.2ADC0809与8255的连接
模拟输入通道地址A,B,C直接接地,因此ADC0809只对通道IN0输入的电压进行模数转换。
为了减少输入噪声其他通道直接接地。
ADC0809的数据线D0-D7与8255的PB0-PB7相连接。
其片选CS与8086的地址/数据总线AD14相连接。
图2-3ADC0809与8255的连接2.1.38086的可编程外设接口电路
8255的数据口D0-D7与CPU的6根控制线相连接,控制8255A内部的各种操作。
控制线RESET用来使8255A复位。
CS和地址线A1及A0用于芯片选择和通道寻址。
分别与8086的高位地址线A19,A1,A0相连接。
图2-48086的可编程外设接口电路
2.4数据显示部分
图2-5数据显示部分
图2-6系统硬件原理图
2.3系统流程图
2.3.1主程序
通过开始界面,显示提示信息,调用温度子程序,设置温度。
通过模数转换器采集A\D值并求其平均值。
调用BCD码转换子程序将其转换为十进制温度值;调用显示子程序,如果温度高于实际温度,就加热,反之拨动开关关闭,停止加热。
在此过程中,还可以重复设置温度值。
其流程图如图2-7所示。
开始
系统初始化
显示提示信息
调用温度值设置
子程序
采集A\D值并
求其平均值
调用温度值设置子
调用BCD码转换子程序程序重新设置温度
将其转换为十进制温度值并将PA0拨到0以
进行重新调节调用显示子程序
显示提示信息
N
N实际温度低PA0=1
于给定值
N
Y
停止加热
加热8255PC6口=0
8255PC6口=1
YN
有键按下返回
图2-7主程序
2.3.2BCD码转换子程序
设定温度为0摄氏度时变换放大电路送出的模拟量为0.0V,此时A/D输出的数字量为00H;温度为76.5?
时变换器送出对应电压4.98V,此时A/D输出的数字量为FFH,即每0.3?
对应1LSB的变化量,对应电压值为19.5mV。
报警温度设定为76.8?
,此时,输出电压约为5.0V左右。
其流程图如图2-8所示。
BCD码转换子程序
将采集得到的平均值
乘以0.3转换为温度
值
对其进行非压缩BCD
码乘法调整
通过移位得到组合BCD码
返回
图2-8BCD码转换子程序
2.3.3.显示子程序
采用动态显示方式,其流程图如图2-9所示。
2.3.4.温度值设置子程序
问了避免加热温度过高,在程序设计中加了一条,即设定值不能大于76.8?
否则就认为有错系统报警。
其流程图如图2-10所示。
温度设置子程序
显示子程序
键入温度值十位上的
数值将它存于,DI,先将十进制温度值
(AL)送到(BL)
键入温度值个位上的数值
得到温度值各位上的数将它存于,DI+1,
通过查表指令得到对应的将十位上的数值左移四位并
数码管的断码与个位上的数值既得温度值
显示温度值个位上的数值
设置温度大
于76?
延时
声音报警并取出(BL)中的温度值
显示错误信将温度值存于,DI+1,息得到温度值十位上的数值返回返回
通过查表指令得到
对应的数码管的断码图2-10温度设置子程
序
显示温度值十位上的数值
延时
返回
图2-9显示子程序
3.详细设计
3.1系统工作原理
1)温度测量显示部分
温度通过AD590温度传感集成芯片,将温度变化量转换成电压值变化量,经过OP07一级跟随后输入到电压放大电路,放大后的信号输入到A/D转换器将模拟信号转换成数字信号,然后将该数字信号通过然间编程转化为十进制BCD码,并送到8279进行温度值的显示。
2)温度控制部分
温度的上升或下降,通过给加热系统通断电来实现。
当需要加热时,8255的PC6输出低电平,启动加热系统。
当需要降温时,8255的PC6输出高电平,关闭加热系统。
加热或降温的控制信号通过8255的PA0读取拨动开关的状态来实现。
3.2系统硬件选择和设计
1)系统扩展接口的选择
本次设计采用的是8086微处理器,选择8255A可编程并行接口作为系统的扩展接口,8255A的通用性强,适应灵活,通过它CPU可直接与外设相连接。
2)温度传感器与A\D转换器的选择
本系统选用温度传感器AD590构成测温系统。
AD590是一种电压输入、电流输出型集成温度传感器,测温范围为-55?
~150?
,非线性误差在?
0。
30?
,其输出电流与温度成正比,温度没升高1K(K为开尔文温度),输出电流就增加1uA。
其输出电流I=(273+T)uA。
本设计中串联电阻的阻值选用2KΩ,所以输出电压V=2730+10MV.另外,为满足系统输入模拟量进行处理的功能,对其(T)+
再扩展一片ADC0809,以进行模拟—数字量转化。
3)显示接口芯片
为满足本次设计温度显示的需要,我们选择了8279芯片,INTEL8279芯片是一种通用的可编程的键盘、显示接口器件,单个芯片就能完成键盘键入和LED显示控制两种功能。
备注:
系统硬件接线应尽量以插接形式连接,这样便于多用途使用和故障的检查和排除。
3.3ADC0809
1)ADC0809概述
ADC0809是采样分辨率为8位的、以逐次逼近原理进行模—数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
2)ADC0809的主要特性
1)8路输入通道,8位A,D转换器,即分辨率为8位。
2)具有转换起停控制端。
3)转换时间为100μs
4)单个,5V电源供电
5)模拟输入电压范围0,,5V,不需零点和满刻度校准。
6)工作温度范围为-40,,85摄氏度
7)低功耗,约15mW。
3)内部结构
3.1)ADC0809的内部逻辑结构
由下图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。
三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
图2-11ADC0809的内部逻辑结构
3.2)外部特性(引脚功能)
ADC0809芯片有28条引脚,采用双列直插式封装,如图13(23所示。
下面说明各引脚功能。
IN0,IN7:
8路模拟量输入端。
2-1,2-8:
8位数字量输出端。
ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路
ALE:
地址锁存允许信号,输入,高电平有效。
START:
A,D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC:
A,D转换结束信号,输出,当A,D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:
数据输出允许信号,输入,高电平有效。
当A,D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
REF(+)、REF(-):
基准电压。
Vcc:
电源,单一,5V。
GND:
地。
3.3)ADC0809的工作过程
首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。
此地址经译码选通8路模拟输入之一到比较器。
START上升沿将逐次逼近寄存器复位。
下降沿启动A,D转换,之后EOC输出信号变低,指示转换正在进行。
直到A,D转换完成,EOC变为高电平,指示A,D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。
当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。
3.48279键盘、显示接口电路
Intel8279是一种通用的可编程序的键盘、显示接口器件,单片器件就能够完成键盘输入和显示控制两种功能。
键盘部分提供一种扫描的工作方式,可以和具有64个按键的矩阵键盘相连接,能对键盘不断扫描,自动消抖,自动识别按下的键并给出编码,能对双键或n键同时按下实行保护。
显示部分为发光二极管、荧光管及其它显示器提供了按扫描方式工作的显示接口,它为显示器提供多路复用信号,可以显示多达16位的字符或数字。
INTEL8279的逻辑符号如图7-28所示。
它用于8085、MCS-51系统。
它最多可外接8X8的键盘及16X8的七段数码显示器。
图3-48279的逻辑符号
3.4.18279管脚、引线及功能说明
8279为40列引脚封装,详细说明如下:
D0~D7(数据总线):
双向、三态总线。
用于和系统数据总线相连,在CPU和8279之间传递命令或数据。
CLK(系统时钟):
输入线。
用于8279内部定时,以产生其工作所需时序。
RESET(复位):
输入线,高电平有效。
当复位信号RESET=1时,8279被复位。
(片选):
输入线,低电平有效。
当=0时,8279被选中,允许CPU对其进行读、写操作,否则被禁止。
A0(缓冲器地址):
输入线。
当A0=1时,若CPU进行写操作,则写入字节是命令字。
若进行读操作,则从8279读出的字节是状态字。
当A0=0时,写入字节或读出字节均为数据。
、(读、写信号):
输入线,低电平有效。
这两个来自CPU的控制RDWR
信号,控制8279的读写操作。
IRQ(中断请求):
输出线,高电平有效。
在键盘工作方式中,当FIFO/传感器RAM中存有数据时,IRQ为高电平,向CPU提出中断申请。
CPU每次从RAM中读出一个字节数据时,IRQ就变成低电平。
如果RAM中还有未读完的数据,IRQ将再次变为高电平,再次提出中断申请求。
在传感器工作方式中,每当检测到传感器状态变化时,IRQ就出现高电平。
SL0~SL3(扫描线):
输出线。
这四条输出线用来扫描键盘和显示器。
它们可以编程设定为编码输出(16中取1)或译码输出(4中取1)。
RL0~RL7(回复线):
输入线。
它们是键盘矩阵或传感器矩阵的列信号输入线。
SHIFT(移位信号):
输入线,高电平有效。
该输入信号是8279键盘数据的次高位D6,通常用来补充键盘开关的功能,可以用作键盘上下挡功能键。
在传感器方式和选通方式中,SHIFT无效。
CNTL/STB(控制/选通):
输入线,高电平有效。
在键盘方式时,该输入信号是键盘数据的最高位D7,通常用来扩充键开关的控制功能,作为控制功能键用。
在传感器方式下,CNTL信号无效。
在选通输入方式下,该信号的上升沿可将来自RL0~RL7的数据存放入FIFORAM中。
OUTA0~OUTA3(A组显示信号):
输出线。
OUTB0~OUTB3(B组显示信号):
输出线。
这两组引线均是显示信息输出线,它们与多路数字显示的扫描线SL0~SL3同步。
两组可以独立使用,也可以合并使用。
(消隐显示):
输出线,低电平有效。
该输出信号在数字切换显示或使用显示消隐命令时,将显示消隐。
3.4.2命令格式与命令字
8279的操作方式是通过CPU对8279送入命令时来实现编程的。
当数据选择端A0置1时,CPU对8279写入数据为命令字,读出的数据为状态字。
8279共有八条命令。
其功能及命令字定义分述如下。
1、键盘/显示方式设置命令字
命令格式:
D7D6D5D4D3D2D1D0
000DDKKK
其中:
D7、D6、D5=000方式设置命令特征位。
DD(D4、D3):
来设定显示方式,其定义如下:
00:
8个字符显示,左入口
00:
16个字符显示,左入口
00:
8个字符显示,右入口
00:
16个字符显示,右入口所谓左入口,即显示位置从最左一位(最高位)开始,以后逐次输入的显示字符逐个向右顺序排列;所谓右入口,即显示位置从最右一位(最低位)开始,以后逐次输入的显示字符时,已有的显示字符逐个向左顺序移动。
KKK(D2、D1、D0):
用来设定七种键盘、显示工作方式
2、读显示RAM命令
命令格式:
D7D6D5D4D3D2D1D0
011AIAAAA
其中:
D7D6D5=011为读显示RAM命令字的特征位。
该命令用来设定将要读出的显示RAM地址。
AAAA(D3、D2、D1、D0)用来寻址显示RAM命令字的特征位。
由位显示RAM中有16个字节单元故需要4位寻址。
AI(D4)为自动增量特征位。
当AI=1时,每次读出后地址自动加1指向下一地址。
5(写显示RAM命令
命令格式:
D7D6D5D4D3D2D1D0
100AIAAAA
其中:
D7D6D5=100为写显示RAM命令字的特征位。
在写显示器RAM之前用该命令用来设定将要写入的显示RAM地址。
AAAA(D3、D2、D1、D0)为将要写入的存储单元地址。
AI(D4)为自动增量特征位。
当AI=1时,每次写入后地址自动加1指向下一次写入地址。
3.4.3LED显示器工作原理
发光二极管组成的显示器事单片机应用产品中最常用的廉价输出设备。
它由若干个发光二极管按一定的规律排列而成。
当某一个发光二极管导通时,相应的一个点或一个比划被点亮,控制不同组合的二极管导通,就能显示出多种字符。
常见LED数码管的外形及内部结构如图3-4-3-1所示。
图3-4-3-2属于共阳极结构,图3-4-3-3采用共阴极结构。
图3-4-3-1图3-4-3-2图3-4-3-3
图3-4-3LED显示器工作原理
通过控制管脚a、b、c、d、e、f、g、dp的电平即可获得所需的符号显示。
显示器的工作方式有两种,一种是静态显示:
当显示器显示某一个字符时,相应的发光二极管恒定地导通或截止。
另一种事本次设计中采用的动态显示方式:
所谓动态显示即一位一位轮流的点亮各位显示器,对于每一位显示器来说,每隔一段时间点亮一次。
但由于时间间隔很小,我们就可以看到完整的显示了。
3.5系统软件设计
本设计的目的是以8086微处理器为控制器,将温度传感器输出的小信号经过放大和低通滤波后,送至A/D转换器;微控制器实时采集、显示温度值(要求以摄氏度显示),同时系统还应可设定、控制温度值,使系统工作在设定温度。
4.总结
通过本次课程设计,学到了很多东西,也突然发现以前学到的东西太少了,没有积累足够的知识来让自己强大。
所以,刚开始时,很迷茫,不知如何下手。
之后,在在网上查了下资料,大部分都是单片机实现的。
单片机是我们还没学的知识。
所以,第一次拿着单片机的程序给老师检查的时候,老师给了我些很宝贵的建议,让我们用学过的仿真软件来实现。
于是,我们重新开始查资料,做了这次的课程设计。
收获很多。
以后,一定会更努力学习的。
加油加油。
5.参考文献
[1]戴梅蕚《微型计算机技术及应用》2007清华大学出版社
[2]朱善君《汇编语言程序设计》1998.3清华大学出版社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,39HDATAENDS
STACKSEGMENT'SRACK'
STADW50DUP(?
)
TOPEQULENGTHSTA
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES