微机原理与接口课程设计温度控制系统_第1页
微机原理与接口课程设计温度控制系统_第2页
微机原理与接口课程设计温度控制系统_第3页
微机原理与接口课程设计温度控制系统_第4页
微机原理与接口课程设计温度控制系统_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、信息科学与技术学院微机原理与接口课程设计课 程 题 目:温度控制系统 学 生 姓 名: 唐维 学 号: 2009082208 专业、年级 : 计科 09 级1 班 指 导 教 师: 周涛 时 间: 2012年1月12日 目录 1题目及要求31.1 题目:设计一个温度控制系统31.2 要求:32. 功能设计32.1 功能模块32. 2 adc0809与8255的连接52.3系统流程图72.3.2 bcd码转换子程序92.3.3.显示子程序92.3.4.温度值设置子程序93.详细设计113.1 系统工作原理113.2 系统硬件选择和设计113.3 adc0809123.4 8279键盘、显示接口电

2、路143.4.3 led显示器工作原理173.5系统软件设计184.总结195.参考文献196.附:源程序191题目及要求 1.1 题目:设计一个温度控制系统 1.2 要求: 1)、检测 2)、数码管显示 3)、报警2. 功能设计2.1 功能模块 2.1.1 温度测量和控制部分 1)温度测量部分 ad590是ad公司生产的一种精度和线度较好的双端集成传感器,其输出电流与绝对温度有关,对于电源电压从5-10v变化只引起1ua最大电流的变化或1摄氏度等效误差。图4-1给出了用于获得正比于绝对温度的输出电流的基本温度敏感电路。ad590输出的电流i=(273+t)ua(t为摄氏温度)。因此测量的电压

3、v为(273+t)ua10k=(2.73+t/100)v,为了将电压测量出来,又务必使电流i不分流出来。使用电压跟随器使其输出电压v2等于v 。由于一般电源供应多器件之后,电源是带杂波的,因此使用稳压二极管作为稳压元件,再利用可变电阻分压,其输出电压v1需调至2.73v。差动放大器其输出v0 为(100k/10k)(v2-v1)=t/10,如果现在为摄氏28,输出电压为2.8v。 输出电压接ad转换器,那么ad转换输出的数字量就和摄氏温度成线性比例的关系。 图2-1温度测量部分2)温度控制部分 当pc6为高电平时,三极管导通,继电器吸合,向加热系统输出12v电压加热;反之,输入低电平,三极管截

4、止,继电器断开,停止加热。在图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

5、和地址线a1及a0用于芯片选择和通道寻址。分别与8086的高位地址线a19,a1,a0相连接。图 2-4 8086的可编程外设接口电路2.4 数据显示部分 图2-5 数据显示部分 图2-6 系统硬件原理图2.3系统流程图 2.3.1 主程序 通过开始界面,显示提示信息,调用温度子程序,设置温度。通过模数转换器采集ad值并求其平均值。调用bcd码转换子程序将其转换为十进制温度值;调用显示子程序,如果温度高于实际温度,就加热,反之拨动开关关闭,停止加热。在此过程中,还可以重复设置温度值。其流程图如图2-7所示。n开始系统初始化显示提示信息调用温度值设置子程序实际温度低于给定值pa0=1加热8255

6、 pc6口=1停止加热8255 pc6口=0显示提示信息调用温度值设置子程序重新设置温度并将pa0拨到0 以进行重新调节有键按下返回采集ad值并求其平均值调用bcd码转换子程序将其转换为十进制温度值调用显示子程序yynnn 图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所示。通过移位得到组合bc

7、d码bcd码转换子程序将采集得到的平均值乘以0.3 转换为温度值返回对其进行非压缩bcd码乘法调整 图2-8 bcd码转换子程序2.3.3.显示子程序采用动态显示方式,其流程图如图2-9所示。2.3.4.温度值设置子程序 问了避免加热温度过高,在程序设计中加了一条,即设定值不能大于76.8否则就认为有错系统报警。其流程图如图2-10所示。温度设置子程序显示子程序 键入温度值十位上的数值将它存于di返回声音报警并显示错误信息返回将温度值存于di+1设置温度大于76将十位上的数值左移四位并与个位上的数值既得温度值键入温度值个位上的数值将它存于di+1返回延时显示温度值十位上的数值通过查表指令得到对

8、应的数码管的断码得到温度值十位上的数值取出(bl)中的温度值延时显示温度值个位上的数值通过查表指令得到对应的数码管的断码得到温度值各位上的数先将十进制温度值(al)送到(bl) 图2-10温度设置子程序图2-9显示子程序3.详细设计 3.1 系统工作原理 1)温度测量显示部分温度通过ad590温度传感集成芯片,将温度变化量转换成电压值变化量,经过op07一级跟随后输入到电压放大电路,放大后的信号输入到a/d转换器将模拟信号转换成数字信号,然后将该数字信号通过然间编程转化为十进制bcd码,并送到8279进行温度值的显示。2) 温度控制部分温度的上升或下降,通过给加热系统通断电来实现。当需要加热时

9、,8255的pc6输出低电平,启动加热系统。当需要降温时,8255的pc6输出高电平,关闭加热系统。加热或降温的控制信号通过8255的pa0读取拨动开关的状态来实现。 3.2 系统硬件选择和设计 1)系统扩展接口的选择 本次设计采用的是8086微处理器,选择8255a可编程并行接口作为系统的扩展接口,8255a的通用性强,适应灵活,通过它cpu可直接与外设相连接。 2)温度传感器与ad转换器的选择本系统选用温度传感器ad590构成测温系统。ad590是一种电压输入、电流输出型集成温度传感器,测温范围为-55150,非线性误差在0。30,其输出电流与温度成正比,温度没升高1k(k为开尔文温度),

10、输出电流就增加1ua。其输出电流i=(273+t)ua。本设计中串联电阻的阻值选用2k,所以输出电压v+=(2730 + 10t)mv.另外,为满足系统输入模拟量进行处理的功能,对其再扩展一片adc0809,以进行模拟数字量转化。 3)显示接口芯片为满足本次设计温度显示的需要,我们选择了8279芯片,intel8279芯片是一种通用的可编程的键盘、显示接口器件,单个芯片就能完成键盘键入和led显示控制两种功能。备注:系统硬件接线应尽量以插接形式连接,这样便于多用途使用和故障的检查和排除。3.3 adc08091)adc0809概述adc0809是采样分辨率为8位的、以逐次逼近原理进行模数转换的

11、器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行a/d转换。2) adc0809的主要特性1)8路输入通道,8位ad转换器,即分辨率为8位。 2)具有转换起停控制端。 3)转换时间为100s4)单个5v电源供电 5)模拟输入电压范围05v,不需零点和满刻度校准。 6)工作温度范围为-4085摄氏度 7)低功耗,约15mw。3) 内部结构 3.1)adc0809的内部逻辑结构由下图可知,adc0809由一个8路模拟开关、一个地址锁存与译码器、一个a/d转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用a/

12、d转换器进行转换。三态输出锁器用于锁存a/d转换完的数字量,当oe端为高电平时,才可以从三态输出锁存器取走转换完的数据。 图2-11 adc0809的内部逻辑结构 3.2)外部特性(引脚功能)adc0809芯片有28条引脚,采用双列直插式封装,如图1323所示。下面说明各引脚功能。 in0in7:8路模拟量输入端。 2-12-8: 8位数字量输出端。adda、addb、addc:3位地址输入线,用于选通8路模拟输入中的一路ale:地址锁存允许信号,输入,高电平有效。 start: ad转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动a/d转换

13、)。 eoc: ad转换结束信号,输出,当ad转换结束时,此端输出一个高电平(转换期间一直为低电平)。 oe:数据输出允许信号,输入,高电平有效。当ad转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。clk:时钟脉冲输入端。要求时钟频率不高于640khz。 ref(+)、ref(-):基准电压。 vcc:电源,单一5v。 gnd:地。 3.3)adc0809的工作过程首先输入3位地址,并使ale=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。start上升沿将逐次逼近寄存器复位。下降沿启动 ad转换,之后eoc输出信号变低,指示转换正在进行。直到ad转换

14、完成,eoc变为高电平,指示ad转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当oe输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。3.4 8279键盘、显示接口电路intel8279是一种通用的可编程序的键盘、显示接口器件,单片器件就能够完成键盘输入和显示控制两种功能。键盘部分提供一种扫描的工作方式,可以和具有64个按键的矩阵键盘相连接,能对键盘不断扫描,自动消抖,自动识别按下的键并给出编码,能对双键或n键同时按下实行保护。显示部分为发光二极管、荧光管及其它显示器提供了按扫描方式工作的显示接口,它为显示器提供多路复用信号,可以显示多达16位的字符或数字。intel

15、 8279的逻辑符号如图7-28所示。它用于8085、mcs-51系统。它最多可外接8x8的键盘及16x8的七段数码显示器。 图3-4 8279的逻辑符号 3.4.1 8279管脚、引线及功能说明8279为40列引脚封装,详细说明如下: d0d7(数据总线):双向、三态总线。用于和系统数据总线相连,在cpu 和8279之间传递命令或数据。clk(系统时钟):输入线。用于8279内部定时,以产生其工作所需时序。reset(复位):输入线,高电平有效。当复位信号reset=1时,8279被复位。 (片选):输入线,低电平有效。当 =0时,8279被选中,允许cpu对其进行读、写操作,否则被禁止。a

16、0(缓冲器地址):输入线。当a0=1时,若cpu进行写操作,则写入字节是命令字。若进行读操作,则从8279读出的字节是状态字。当a0=0时,写入字节或读出字节均为数据。、(读、写信号):输入线,低电平有效。这两个来自cpu的控制信号,控制8279的读写操作。irq(中断请求):输出线,高电平有效。在键盘工作方式中,当fifo/传感器ram中存有数据时,irq为高电平,向cpu提出中断申请。cpu每次从ram中读出一个字节数据时,irq就变成低电平。如果ram中还有未读完的数据,irq将再次变为高电平,再次提出中断申请求。在传感器工作方式中,每当检测到传感器状态变化时,irq就出现高电平。sl0

17、sl3(扫描线):输出线。这四条输出线用来扫描键盘和显示器。它们可以编程设定为编码输出(16中取1)或译码输出(4中取1)。rl0rl7(回复线):输入线。它们是键盘矩阵或传感器矩阵的列信号输入线。shift(移位信号):输入线,高电平有效。该输入信号是8279键盘数据的次高位d6,通常用来补充键盘开关的功能,可以用作键盘上下挡功能键。在传感器方式和选通方式中,shift无效。cntl/stb(控制/选通):输入线,高电平有效。在键盘方式时,该输入信号是键盘数据的最高位d7,通常用来扩充键开关的控制功能,作为控制功能键用。在传感器方式下,cntl信号无效。在选通输入方式下,该信号的上升沿可将来

18、自rl0rl7的数据存放入fifo ram中。outa0outa3 (a组显示信号):输出线。outb0outb3 (b组显示信号):输出线。这两组引线均是显示信息输出线,它们与多路数字显示的扫描线sl0sl3同步。两组可以独立使用,也可以合并使用。(消隐显示):输出线,低电平有效。该输出信号在数字切换显示或使用显示消隐命令时,将显示消隐。 3.4.2 命令格式与命令字8279的操作方式是通过cpu对8279送入命令时来实现编程的。当数据选择端a0置1时,cpu对8279写入数据为命令字,读出的数据为状态字。8279共有八条命令。其功能及命令字定义分述如下。1、键盘/显示方式设置命令字命令格式

19、:d7 d6 d5 d4 d3 d2 d1 d0000ddkkk其中: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

20、d1 d0011aiaaaa其中: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 d0100aiaaaa其中:d7d6d5 =100为写显示ram命令字的特征位。在写显示器ram之前用该命令用来设定将要写入的显示ram地址。 aaaa(d3、d2、d1、d0)为将要写入的存储单元地址。ai

21、(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的电平即可获得所需的符号

22、显示。显示器的工作方式有两种,一种是静态显示:当显示器显示某一个字符时,相应的发光二极管恒定地导通或截止。另一种事本次设计中采用的动态显示方式:所谓动态显示即一位一位轮流的点亮各位显示器,对于每一位显示器来说,每隔一段时间点亮一次。但由于时间间隔很小,我们就可以看到完整的显示了。3.5系统软件设计本设计的目的是以8086微处理器为控制器,将温度传感器输出的小信号经过放大和低通滤波后,送至a/d转换器;微控制器实时采集、显示温度值(要求以摄氏度显示),同时系统还应可设定、控制温度值,使系统工作在设定温度。4.总结 通过本次课程设计,学到了很多东西,也突然发现以前学到的东西太少了,没有积累足够的知

23、识来让自己强大。所以,刚开始时,很迷茫,不知如何下手。之后,在在网上查了下资料,大部分都是单片机实现的。单片机是我们还没学的知识。所以,第一次拿着单片机的程序给老师检查的时候,老师给了我些很宝贵的建议,让我们用学过的仿真软件来实现。于是,我们重新开始查资料,做了这次的课程设计。收获很多。以后,一定会更努力学习的。加油加油。5.参考文献1 戴梅蕚 微型计算机技术及应用2007 清华大学出版社 2 朱善君 汇编语言程序设计 1998.3 清华大学出版社6.附:源程序csad equ 209hz8279 equ 212hd8279 equ 210hledmod equ 00h;; 左边输入,八位显示

24、外部译码八位显示ledfeq equ 38h; 扫描频率ledcls equ 0c1h; 清除显示ramz8255 equ 21bhz8255a equ 218hz8255c equ 21ahcount equ 8data segmentdata1 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:,$mess4 db 10, 13,in

25、put value error!,0dh,0ah,$ mess5 db 10, 13,input a new temperature value:,$mess6 db 10, 13,* let pa0=0 to adjust the temperature value!*,0dh,0ah,$ 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,39hdata endsstack segment

26、 sracksta dw 50 dup(?)top equ length stastack endscode segmentassume cs: code,ds: data,es: data,ss: stackstart: 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

27、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 21hb

28、egin: mov bx,0 mov cl,count mov ch,0bb: 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 beginup: mov al,40h jmp aadown: mov al,00haa: mov dx,z8255c out dx,al

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论