信息科学与技术学院 微机原理与接口课程设计
课 程 题 目:温度控制系统 学 生 姓 名: 唐维 学 号: 2009082208 专业、年级 : 计科 09 级1 班 指 导 教 师: 周涛 时 间: 2012年1月12日
目录 1(题目及要
求 ....................................................................................... 3
1.1 题目:设计一个温度控制系
统 ................................................. 3
1.2 要
求: ........................................................................................ 3 2. 功能设
计 ............................................................................................ 3
2.1 功能模
块 .................................................................................... 3
2. 2 ADC0809与8255的连
接 ....................................................... 5
2.3系统流程
图 ................................................................................. 7
2.3.2 BCD码转换子程
序 ............................................................ 9
2.3.3.显示子程
序 ......................................................................... 9
2.3.4.温度值设置子程
序 ............................................................. 9
3.详细设
计 ............................................................................................ 11
3.1 系统工作原
理........................................................................... 11
3.2 系统硬件选择和设
计 ............................................................... 11
3.3
ADC0809 ................................................................................... 12
3.4 8279键盘、显示接口电
路 ....................................................... 14
3.4.3 LED显示器工作原
理 ...................................................... 17
3.5系统软件设
计............................................................................ 18 4.总
结 .................................................................................................... 19 5.参考文
献 ............................................................................................ 19 6.附:源程
序 ........................................................................................ 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.2 ADC0809与8255的连接
模拟输入通道地址A,B,C直接接地,因此ADC0809只对通道IN0输入的电压进行模数转换。为了减少输入噪声其他通道直接接地。ADC0809的数据线D0-D7与8255的PB0-PB7相连接。其片选CS与8086的地址/数据总线AD14相连接。
图2-3 ADC0809与8255的连接 2.1.3 8086的可编程外设接口电路 8255的数据口D0-D7与CPU的6根控制线相连接,控制8255A内部的各种操作。控制线RESET用来使8255A复位。CS和地址线A1及A0用于芯片选择和通道寻址。分别与8086的高位地址线A19,A1,A0相连接。
图 2-4 8086的可编程外设接口电路 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 停止加热
加热 8255 PC6口=0 8255 PC6口=1 Y N
有键按下 返回 图2-7主程序
2.3.2 BCD码转换子程序
设定温度为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-8 BCD码转换子程序 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.3 ADC0809 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-11 ADC0809的内部逻辑结构 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.4 8279键盘、显示接口电路
Intel8279是一种通用的可编程序的键盘、显示接口器件,单片器件就能够完成键盘输入和显示控制两种功能。键盘部分提供一种扫描的工作方式,可以和具有64个按键的矩阵键盘相连接,能对键盘不断扫描,自动消抖,自动识别按下的键并给出编码,能对双键或n键同时按下实行保护。显示部分为发光二极管、荧光管及其它显示器提供了按扫描方式工作的显示接口,它为显示器提供多路复用信号,可以显示多达16位的字符或数字。
INTEL 8279的逻辑符号如图7-28所示。它用于8085、MCS-51系统。它最多可外接8X8的键盘及16X8的七段数码显示器。
图3-4 8279的逻辑符号
3.4.1 8279管脚、引线及功能说明 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的数据存放入FIFO RAM中。
OUTA0~OUTA3 (A组显示信号):输出线。 OUTB0~OUTB3 (B组显示信号):输出线。
这两组引线均是显示信息输出线,它们与多路数字显示的扫描线SL0~SL3同步。两组可以独立使用,也可以合并使用。
(消隐显示):输出线,低电平有效。该输出信号在数字切换显示或使用显示消隐命令时,将显示消隐。
3.4.2 命令格式与命令字
8279的操作方式是通过CPU对8279送入命令时来实现编程的。当数据选择端A0置1时,CPU对8279写入数据为命令字,读出的数据为状态字。
8279共有八条命令。其功能及命令字定义分述如下。 1、键盘/显示方式设置命令字 命令格式:
D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 D D K K K
其中:D7、D6、D5=000方式设置命令特征位。 D D(D4、D3):来设定显示方式,其定义如下: 00:8个字符显示,左入口 00:16个字符显示,左入口
00:8个字符显示,右入口
00:16个字符显示,右入口 所谓左入口,即显示位置从最左一位(最高位)开始,以后逐次输入的显示字符逐个向右顺序排列; 所谓右入口,即显示位置从最右一位(最低位)开始,以后逐次输入的显示字符时,已有的显示字符逐个向左顺序移动。
KKK(D2、 D1、 D0):用来设定七种键盘、显示工作方式 2、读显示RAM命令 命令格式:
D7 D6 D5 D4 D3 D2 D1 D0 0 1 1 AI A A A A
其中:D7D6D5 =011为读显示RAM命令字的特征位。该命令用来设定将要读出的显示RAM地址。
AAAA(D3、D2、D1、D0)用来寻址显示RAM命令字的特征位。由位显示RAM中有16个字节单元故需要4位寻址。
AI(D4)为自动增量特征位。当AI=1时,每次读出后地址自动加1指向下一地址。
5(写显示RAM命令 命令格式:
D7 D6 D5 D4 D3 D2 D1 D0 1 0 0 AI A A A A
其中:D7D6D5 =100为写显示RAM命令字的特征位。在写显示器RAM之前用该命令用来设定将要写入的显示RAM地址。
AAAA(D3、D2、D1、D0)为将要写入的存储单元地址。
AI(D4)为自动增量特征位。当AI=1时,每次写入后地址自动加1指向下一次写入地址。
3.4.3 LED显示器工作原理
发光二极管组成的显示器事单片机应用产品中最常用的廉价输出设备。它由若干个发光二极管按一定的规律排列而成。当某一个发光二极管导通时,相应的一个点或一个比划被点亮,控制不同组合的二极管导通,就能显示出多种字符。常见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-3 LED显示器工作原理
通过控制管脚a、b、c、d、e、f、g、dp的电平即可获得所需的符号显示。 显示器的工作方式有两种,一种是静态显示:当显示器显示某一个字符时,相应的发光二极管恒定地导通或截止。另一种事本次设计中采用的动态显示方式:所谓动态显示即一位一位轮流的点亮各位显示器,对于每一位显示器来说,每隔一段时间点亮一次。但由于时间间隔很小,我们就可以看到完整的显示了。 3.5系统软件设计
本设计的目的是以8086微处理器为控制器,将温度传感器输出的小信号经过放大和低通滤波后,送至A/D转换器;微控制器实时采集、显示温度值(要求以摄氏度显示),同时系统还应可设定、控制温度值,使系统工作在设定温度。
4.总结
通过本次课程设计,学到了很多东西,也突然发现以前学到的东西太少了,没有积累足够的知识来让自己强大。所以,刚开始时,很迷茫,不知如何下手。之后,在在网上查了下资料,大部分都是单片机实现的。单片机是我们还没学的知识。所以,第一次拿着单片机的程序给老师检查的时候,老师给了我些很宝贵的建议,让我们用学过的仿真软件来实现。于是,我们重新开始查资料,做了这次的课程设计。收获很多。以后,一定会更努力学习的。加油加油。 5.参考文献
[1] 戴梅蕚 《微型计算机技术及应用》2007 清华大学出版社
[2] 朱善君 《汇编语言程序设计》 1998.3 清华大学出版社 6.附:源程序 CSAD EQU 209H Z8279 EQU 212H D8279 EQU 210H
LEDMOD EQU 00H;; 左边输入,八位显示外部译码八位显示 LEDFEQ EQU 38H; 扫描频率
LEDCLS EQU 0C1H; 清除显示RAM Z8255 EQU 21BH Z8255A EQU 218H Z8255C EQU 21AH COUNT EQU 8 DATA SEGMENT DATA1 DB 4 DUP(?)
MESS1 DB \"ENTER ANY KEY TO BEGIN!\" ,0DH,0AH,\"$\" MESS2 DB 10, 13,\"ENTER ANY KEY CAN EXIT TO DOS!\" ,0DH,0AH,\"$\" MESS3 DB 10, 13,\"INPUT THE TEMPERATURE VALUE:\
ERROR!\MESS6 DB 10, 13,\"*** LET PA0=0 TO ADJUST THE TEMPERATURE VALUE!***\
MESS7 DB 10, 13,\"*** LET PA0=1 TO INPUT A NEW TEMPERATURE VALUE!***\0DH,0AH,\"$\"
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H DATA ENDS STACK SEGMENT 'SRACK' STA DW 50 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT
ASSUME CS: CODE,DS: DATA,ES: DATA,SS: STACK START: MOV AX, DATA MOV DS, AX MOV ES, AX
MOV AH,09H ; 显示提示信息一 MOV DX,OFFSET MESS1 INT 21H
MOV AH,09H ; 显示提示信息六 MOV DX, OFFSET MESS6 INT 21H
MOV AH,09H ; 显示提示信息七 MOV DX, OFFSET MESS7
INT 21H MOV AH,08H INT 21H
MOV AH,09H ; 显示提示信息三 MOV DX, OFFSET MESS3 INT 21H
CALL input ; 输入设置的温度值存DATA1 OK:
MOV DX,Z8255 ; 设置A口为输入,C口为输出 MOV AL,92H OUT DX,AL MOV DX,Z8255C MOV AL,00H OUT DX,AL CALL delay CALL delay
MOV DX,Z8279 ; 初始化8279 MOV AL,LEDMOD OUT DX,AL
MOV AH,09H ; 显示提示信息二 MOV DX,OFFSET MESS2 INT 21H
BEGIN: MOV BX,0 MOV CL,COUNT
MOV CH,0
BB: MOV DX,CSAD ; 启动A/D MOV AX,0 OUT DX, AL CALL delay
IN AL,DX ; 采样A/D值 ADC BX,AX ; 求平均值 LOOP BB MOV AX,BX RCR AX,1 RCR AX,1 RCR AX, 1
CALL ChangetoBCD ; 转化为十进制的温度值 MOV DI, OFFSET DATA1 MOV [DI+3] , AL CALL DIS
MOV DI, OFFSET DATA1 MOV BL,[DI+2] ; 取输入值 MOV AL,[DI+3] ; 取实际值 CMP AL,BL ; 实际值与输入值比较 JB UP ; 小于则加热
MOV DX,Z8255A ; 否则读开关量 IN AL,DX AND AL,01H
JZ DOWN ; PA0=0 则停止加热
MOV AH, 09H; PA0=1 则设置新的温度值,并将PA0切换到0进行新的控制调节
MOV DX,OFFSET MESS5 INT 21H CALL input JMP BEGIN UP: MOV AL,40H JMP AA
DOWN: MOV AL,00H AA: MOV DX,Z8255C OUT DX,AL
MOV AH, 0BH ; 坚持键盘状态,有键按下则返回DOC INT 21H CMP AL,0 JZ CC MOV AX,4C00H
INT 21H CC: JMP BEGIN delay PROC NEAR ; 延时子程序 PUSH CX MOV CX,0F00H LOOP $ POP CX RET
Delay ENDP input PROC NEAR ;温度值的设置子程序
MOV AH,1H INT 21H
MOV DI, OFFSET DATA1 MOV [DI],AL MOV BH,AL MOV AH,1H INT 21H MOV [DI+1],AL MOV BL,AL AND BH,0FH RCL BH,1 RCL BH,1 RCL BH,1 RCL BH,1 AND BH,0FH OR BL,BH MOV AL,BL
CMP AL,76H ; 输入温度大于76则显示错误提示信息 JA ERR
MOV [DI+2], AL RET Input ENDP
ERR: MOV AH,09H ; 显示错误提示信息 MOV DX,OFFSET MESS4
INT 21H MOV AX, 4C00H INT 21H
ChangetoBCD PROC NEAR ; BCD码转换子程序 MOV BL,3 MUL BL MOV BL,10 DIV BL
AAM ; 非压缩BCD码乘法调整指令 MOV BL,AL MOV AL,AH MOV CL,04H ROR AL,CL XOR AL,BL RET
ChangetoBCD ENDP
DIS PROC NEAR ; 显示子程序 MOV BL,AL MOV AL,0FH PUSH AX MOV DX ,Z8279 MOV AL ,90H OUT DX, AL POP AX
PUSH BX LEA BX,LED XLAT POP BX MOV DX,D8279 OUT DX,AL CALL delay MOV AL,BL MOV CL,04H ROR AL, CL AND AL, 0FH LEA BX, LED XLAT MOV DX,D8279 OUT DX,AL CALL delay CALL delay RET DIS ENDP
CODE ENDS END START
因篇幅问题不能全部显示,请点此查看更多更全内容