采用单片机的温度控制器电路设计2_第1页
采用单片机的温度控制器电路设计2_第2页
采用单片机的温度控制器电路设计2_第3页
采用单片机的温度控制器电路设计2_第4页
采用单片机的温度控制器电路设计2_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、题目:采用单片机的温度控制器电路设计采用单片机的温度控制器电路设计摘要温度是工业生产和社会生活中常见的被控参数,温度的测量与控制在自动化生产过程中占有很大比重。本文介绍的是一种基于单片机 at89c51和温度传感器 ad590的温度控制器。为了实现对温度的检测及控制的功能,本系统电路由以下几个部分构成:温度检测、信号处理、模数转换、数据显示、设定值输入和温度控制。本文具体研究内容包括:通过4*3 键盘设定控制温度并由数码管显示;利用温度传感器 ad590对温度进行检测;采集的信号经过调零、放大处理后送给 a/d 转换器 adc0809;将转换后得到的数字信号送给单片机并由数码管显示,单片机 a

2、t89c51将检测值与设定值进行比较,根据比较结果发出不同的控制信号。本温度控制器的设计达到了设计要求,能够实现对 00 c1000c 范围内温度的检测和控制功能。关键词: 温度测量;传感器;模数转换器;键盘输入temperature controller using microcontrollerabstractin industrial production and social life,the temperature parameter is a common control parameter,the measurement and control of the temperatur

3、e is one of the most important missions of the automated production.this paper introduces a temperature-controller based on at89c51 single chip microcomputer and ad590 temperature sensor.in order to achieve the function of temperature measurement and control,the system is consist of these parts: tem

4、perature measurement,signal process,a/d conversion,data display,the input of the given value and temperature control.the specific contents of the paper include: the given value is input by 4*3 keyboards and displayed by digital lights;by using ad590 temperature sensor,we can measure the temperature;

5、 gathered signal is delayed to a/d converter after rectified and amplified , then the signal is delayed to at89c51 single chip microcomputer and displayed by digital lights. at89c51 single chip microcomputer can compare the measurement value with the given value and then create the different control

6、 signals according to the comparison result.in the end this intelligent temperature-controller can meet the design requirements and realize the function of temperature measurement and control from00c to 1000c.key words:temperature measurement;sensors; adc; keyboard input目录前言11.1课题设计背景和意义11.2国内外研究状况和

7、发展趋势11.3课题设计的主要内容1系统硬件设计22.1总体设计思路22.2温度检测及调零放大电路22.2.1ad590简介22.2.2温度检测电路32.2.3调零放大电路42.3a/d 转换电路42.3.1adc0809简介42.3.2adc0809与单片机的接口电路62.4led显示电路72.5键盘接口和控制电路82.6单片机外围电路及控制93系统软件设计113.1程序设计总体思路113.2模数转换模块113.3温度显示模块133.4温度设定模块153.5控制模块 .174结论20参考文献错误!未定义书签。致谢21附录22前言1.1课题设计背景和意义随着科学技术的发展、社会的进步,在控制系

8、统以及仪器、仪表的发展中,以单片机取代传统的模拟电路已经成为仪器、仪表智能化、先进化的标志。基于单片机的智能温度控制系统以其体积小、自动化程度高,使用方便等特点在工业领域得到广泛的应用。单片机具有体积小,重量轻,价格便宜,可靠性高等特点,所以深受广大设计人员的喜爱。这使得单片机控制技术取代传统的模拟控制技术,从而提高产品的控制精度,使高产低耗变成为现实。因此,温度检测与控制成为一个重要的课题,设计采用单片机的温度控制器具有较强的现实意义。1.2国内外研究状况和发展趋势采用单片机的温度控制器是含有微型计算机或者微型处理器的测量仪器,拥有对数据的存储运算逻辑判断及自动化操作等功能。 它的出现,极大

9、的扩充了传统仪器的应用范围。智能温度控制器凭借其体积小、功能强、功耗低等优势,迅速在家用电器、科研单位和工业中得到了广泛的应用。伴随着网络技术的飞速的发展, internet技术正在逐渐向工业控制和智能仪器仪表设计领域渗透,实现智能仪器仪表系统基于 internet 的通讯能力以及对设计好的仪表进行远程升级、功能重置和系统维护,因此温度控制器有着无限的发展前景。1.3课题设计的主要内容本课题研究的目标是完成基于单片机的智能温度控制器的设计。根据设计要求本温度控制器可以实现对温度信号的检测处理、数据显示、设定温度输入以及对温度的控制。本温度控制器的具体功能主要由下面几个部分实现:温度检测以及调零

10、放大部分、模数转换部分、数据显示部分、设定值输入部分和温度控制部分。本文将重点解决以下问题:利用集成温度传感器ad590对被控温度进行检测,将采集到与热力学温度成线性关系的电流信号经过调零、放大处理电路转换成与摄氏温度成线性关系的电压信号;将该电压信号后送给模数转换器 adc0809,再将模数转换后得到的数字信号送给单片机;单片机 at89c51将检测值与设定值进行比较,根据控制要求发出不同的控制信号;温度显示部分采用数码管动态显示方式显示温度值;设定温度输入部分是通过4*3 键盘与 74c922配合实现。本文将具体阐述上述问题的解决方案和实现过程,最终完成满足设计要求的温度控制器。1系统硬件

11、设计2.1总体设计思路根据设计目标和要求, 本系统硬件电路总体设计思路如下:首先用 ad590 作为温度传感器,将其采集到的温度量转换为模拟电流量, 然后经过模拟放大电路, 使其变为 adc0809 可以接受的电压量,然后再输入到模数转换器 adc0809中,经过模数转换后的数字量再输入到 at89c51单片机进行处理并显示温度值,单片机根据检测值与设定值的比较结果发出控制信号驱动外部设备(控制装置)工作,进而进一步调节控制温度,最后本系统可通过键盘输入温度上限和下限两个设定值,将控制温度控制在一个范围内。当检测温度高于设定的上限温度值时,单片机发出驱动信号使红色二极管点亮;当检测温度低于设定

12、的下限温度值时,单片机发出驱动信号使绿色二极管点亮。系统硬件组成框图如图2-1 所示。信号调零温度检测模数转换放大控制温度设定单片机温度显示控制提示图 2-1系统硬件组成框图2.2温度检测及调零放大电路本系统温度采集选用电流输出型集成温度传感器ad590。本单元电路所解决的问题是将温度传感器 ad590输出的电流信号转换成与温度呈线性关系的电压信号。2.2.1ad590简介集成温度传感器 ad590是一种电流型温度传感器,它是由美国模拟器件公司生产的,所需的温度值通过测量电流值即可得到,然后在输出端串联一个电阻便可转换为电压信号。它只需直流电源就能工作,而且无需进行线性校正1 。作为直流输出型

13、传感器的一个特点是,和电压输出型相比,它具有很强的抗外界干扰能力。它的主要特性有:00 测量温度范围 :-55 c+150 c。 线性电流输出 : 流过器件的电流等于器件所处环境的热力学温度度数,即电流变化21 a,相当于温度变化1k。 稳定性好 : 在 5v 15v之间变化 , 其电流波动在 1a 以下。 输出阻抗高 :710m。 精度高 : ad590 分为五个等级 , 以后缀i 、 j、 k、 l、m(由精度低到精度高)加以区分。低档的ad590误差较大,对精密要求较高的测温电路中一般选用灵敏度高的l 或 m型。其中 m档精度最高,在 -55 0 c +1500c 范围内,非线性误差为0

14、.3 0c2 。ad590的外形如图 2-2(a) 所示 , 它采用金属壳 3 脚封装 , 其中 1 脚接电源端 v+;2 脚为电流输出端 io;3 脚为管壳,一般将其接地,起到屏蔽作用。 ad590在电路设计时所用的电路符号为图 2-2(b) 所示。( a)外形( b)符号图 2-2ad590电路符号2.2.2温度检测电路以摄氏零度(对应绝对温度273.2k)为基准,温度每升高1k,ad590的输出电流就增加 1a。因为 ad590输出电流比较小,且模数转换器要求输入是电压信号,所以将ad590的输出接一个精密的 10k电阻,当 ad590输出 1a 电流时,电阻上的压降要增加10mv,即温

15、度每变化 1k 电压就会随着变化 10mv。但是由于电阻本身存在误差,在实际应用电路中用一个阻值可调的 5k 和一个阻值为 6.8k 的电阻串联替代 10k电阻进行补偿, 以消除电阻误差。电路如图 2-3 所示。图 2-3实际应用电路32.2.3调零放大电路由于温度传感器采集到的温度信号转变成的电信号一般非常微弱,不能直接传输给 a/d 转换器,因此需要进行调零放大处理。本电路实现的功能即为将输出的电压信号处理成适合于 adc0809的输入信号。电路如图2-4 所示。图 2-4调零放大电路ad590输出电流经 10k电阻转换成电压,该电压经过电压跟随器得到测量电压 u2, u2 =(273.2

16、+t) a*10k( t 为摄氏温度值),此处电压跟随器的作用为利用其高输入阻抗使电流不分流。本设计想要实现当被测温度为 00c 时,输出的测量电压为 0v 即 u2=0v,所以电路需要加调零环节。电路中使用齐纳二极管作为稳压元件 , 作用是消除电源杂讯。通过调节可变电阻r1来得到调零电压。调试时调节的阻值并测量调零电压使u1=2.732v。u1 和 u2 经差分比例运算电路运算放大后得到输出电压u0=rf(u2-u1)/r=t/20 ( v)。经运算可知,当检测温度t=1000c 时, u0=5v;t=00 c时, u0=0v。这样就实现了ad590检测输出的电流信号转换为05v 电压信号的

17、设计目标。2.3a/d 转换电路由于单片机只能处理数字信号,因此要将调零放大后的模拟信号转换为数字信号再送单片机进行处理。本电路采用 adc0809作为 a/d 转换器。2.3.1adc0809简介adc0809含 8 位 a/d 转换器,8 路多路开关,以及与微型计算机兼容的控制逻辑的 cmos 组件,其转换方法为逐次逼近型。在 a/d 转换器内部有一个高阻抗斩波稳定比较器,一个带模拟开关数组的 256 电阻分压器,以及一个逐次逼近型寄存器。 8 路的模拟开关的通 / 断由地址锁存器和译码器控制,可以在 8 个通道中任意访问一个单边的模拟信号。本系统只用到一个 0 通道。输出具有 ttl三态

18、锁存缓冲器,可直接连到单片机数据总线上 3 。4(1)adc0809 芯片技术指标 单一电源, +5v供电,模拟量输入范围是05v。 可锁存三态输出,输出与ttl兼容。 分辨率为 8 位。 不需经行零位及满量程调整。00 功耗为 15mw。(2)adc0809 芯片引脚功能介绍adc0809为 28 引脚双列直插式器件,其引脚图如图2-5 所示。图 2-5adc0809引脚图 start:启动信号输入端。正脉冲信号有效,脉冲上升沿复位a/d 转换器,将所有内部寄存器清零,下降沿启动a/d 转换。 start可与 ale共用一个脉冲信号。 ale:地址锁存允许,高电平有效。当 ale为高电平时,

19、允许 c、b、a 所示的通道被选中,并把该通道的模拟量接入 a/d 转换器。 eoc:转换结束信号。高电平有效,转换期间为低电平,转换结束为高电平,可用作查询或中断信号。 oe:数据输出允许端。 当此信号有效时, 允许从 a/d 转换器的锁存器中读出数字量。此信号可作为 adc0809的片选信号,高电平有效。 in 0-in 7:8 路模拟量输入端。输入电压 05v(5v 供电 )8 通道多路开关能直接存取 8 个单端模拟信号中的一个,是用地址译码器来选择某一个特定的通道。 clk:时钟信号,允许频率范围为 101280khz,超出此范围 adc0809将不能正常工作。 adda,addb,a

20、ddc:8 路模拟开关的地址选通信号输入端。 d7-d0:数字量输出端。5 v ref(+) ,v ref(-) : 参考电压端子。一般情况下, vref(+) =+5v,vref(-) =0v。 vcc :电源端子,接 +5v。 gnd:接地端。2.3.2adc0809与单片机的接口电路adc0809与单片机 at89c51的接口电路图如图2-6 所示。电压信号输入端图 2-6adc0809与单片机接口电路a/d 转换电路的功能是将调零放大电路得到的模拟量转换成数字量供单片机处理,需要解决 adc0809与单片机的接口问题。(1) 根据设计要求,本系统只扩展了一块adc0809,使单片机的

21、wr 经反相器连接到adc0809的 start和 ale端口, rd 经反相器连接到 enable端口 , 不用连接 p2 的端口 4 。(2) 本系统中只有一路检测信号,所以 adc0809只需一个输入端口,这里采用 in0 作为输入端口(in1-in7 置零),所以通道号选择端子 cba=000(即将 c,b,a 三个端子置零)。(3) 单片机 p0.0-p0.7 口接到 adc0809的数字量输出端 d0-d7,此处需注意的是:由于at89c51的 p0 口没有上拉电阻,故其在此应加外部上拉电阻。(4)adc0809没有内部时钟电路 ,clock需由 at89c51来提供。本系统中,单

22、片机 at89c51用 12mhz晶振 ,ale 端为 fosc 的六分频 2mhz,这个频率对于 adc0809来说频率太高,于是ale信号经过两个 d 触发器四分频得到500khz时钟信号,接入 adc0809的 clock端。本电路 d触发器采用 74ls74。在 74ls74中集成了两个触发器单元, 它们都是 cp上升沿触发的边沿 d触发器。本电路中异步输入端 rd,sd 置为高电平。 74ls74特性表如表 2-1 所示。6表 2-174ls74 特性表(部分)输入输出备注cpdrdsdqn+1上升沿0110同步置 0上升沿1111同步置 1下升沿11qn保持工作过程:本电路单片机检

23、查判断 a/d 转换结束采用查询方式。 at89c51向 adc0809 发送任意数据,即 wr有效,其经过反向器产生的信号使 start和 ale 有效,这样就启动了 adc0809进行 a/d 转换。然后通过 at89c51单片机的 p2.0 端口查询转换结束信号 eoc(高电平有效)。转换结束后,向相应的口地址发出读命令,则 rd有效,经过一非门使 oe 有效,从而打开 adc0809内部的三态门, at89c51便可以接收到数据。2.4led显示电路由于发光二极管价廉,配置灵活,与单片机接口方便,所以系统的显示采用发光二极管作为显示器件。 led 显示的方法有两种:一种为静态显示;一种

24、为动态显示。其中动态显示 , 是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的7 个显示笔划 a,b,c,d,e,f,g的同名端连在一起,另外为每个数码管的公共极com增加位选通控制电路,位选通由各自独立的 i/o 线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通com端电路的控制,所以只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮 5 。通过分时轮流控制各个数码管的的com端,就使各个数码管轮流受控显示。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及

25、发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据, 不会有闪烁感, 动态显示能够节省大量的i/o 端口,而且功耗更低 6 。本系统采用动态显示,使用 3 个 7 端共阳极的数码管显示温度的检测值和设定值,精确到 10c。由单片机 p1 口输出显示码, p3.3 、p3.4 、p3.5 口输出位选码。数码管正常显示时,为防止管子烧坏,需要接限流电阻。本设计使用红色显示的数码管,它工作时的压降约为 1.9v ,电流视所选的扫描方法而定,动态扫描显示时段电流约为4ma,由此可以计算出数码管与单片机 p1 口串接的电阻值为:(5-1.9

26、)/4=0.775k ,为了保护数码管这里选择阻值为 1k 的限流电阻。因为单片机 i/o 口的驱动能力很低, 一般只有 10ma,而驱动 7 端共阳极的数码管需要30ma左右的电流,因此要用驱动电路来驱动数码管的各个段码。 本电路中采用高压输出反相驱动器 7406,其输出电路为 40ma,故满足上述要求。 7406 是集电极开路门,为了使其可7靠饱和导通所以需接 1k 上拉电阻。 7406 为反向驱动器,而此处为共阳极的数码管,所以 p1 口输出共阳极的七段显示码。 at89c51与 led的接口电路图如图 2-7 所示,图中三个数码管从左至右分别为温度值百位、温度值的十位和温度值的个位。图

27、 2-7at89c51与 led接口电路2.5键盘接口和控制电路在单片机应用系统中,用键盘来实现输入数据、传送命令的功能。键盘分两大类:编码键盘和非编码键盘。编码键盘采用硬件线路来实现键盘编码,每按下一个键,键盘能自动生成按键代码, 键数较多,而且还具有去抖动功能, 这种键盘使用方便, 但硬件较复杂,pc机所用的键盘就属于这种 ; 非编码键盘仅提供按键开关工作状态, 其他工作由软件完成,这种键盘数较少,硬件简单,一般在单片机应用系统中广泛用 , 本设计虽然是单片机系统但设计由 set键、“09”数字键、“kp”“ki ”“ kp”、确定键,按键数目较多,所以仍对键盘进行了编码,属于编码键盘7

28、。按键盘与 cpu的连接方式可以分为独立式按键和矩阵式键盘。本设计中选用的是矩阵式键盘,又称行列式键盘。它的 i/o 端线分为行线和列线,按键跨接在行线和列线上。按键按下时,行线与列线连通 8 。本部分电路采用键盘专用芯片74c922与 4*3 键盘实现设定值输入功能。74c922 芯片采用 cmos工艺技术制造。内部带有键盘编码器,还有去抖动的功能,工作电压 +3+15v,“二键锁定”功能,编码输出为三态输出,可直接与微处理器数据总线相连,内部振荡器能完成 4*4 矩阵键盘扫描,亦可用外部振荡器使键盘操作与其他处理同步,通过外接电容避免开关发生前、后沿跳变所用的延时。 有按键按下时数据有效线

29、变高,同时封锁其他键,片内锁存器将保持键盘矩阵的4 位键盘编码,可由微处理器读出7 。874c922引脚如图 2-8 所示。图 2-874c922 引脚图 osc:接振荡电容 0.01 f,以便扫描矩阵键盘。 kbm:用来消除键盘抖动,接一个电容是 osc电容的 10 倍。 da:数据有效端。检测到 da脚由 0-1 (按)到 1-0 (放)信号变换时,将 abcd值读入单片机。 oe:数据输出使能端。 x1-x4 :列输入端。本电路中只用到 3 列输入,故将 x4 置零。 y1-y4 :行输入端。 a 、b、c、d:74c922数据输出端。本电路键盘输入采用中断方式。利用单片机外部中断0,将

30、 74c922的 da端经反向器与单片机 p3.2 口相连,当 da=1即int=0立即向单片机申请中断,转向键盘输入程序,将 74c922的 d、c、b、a 口数据送给单片机 at89c51。这样节省了 cpu的时间,提高了效率。键盘与单片机接口电路如图 2-9 所示。图 2-9键盘与单片机接口电路2.6单片机外围电路及控制本系统采用 at89c51单片机作为控制核心。它是一种低能耗、低电压、高性能的8 位单片机 ,片内带有一个4k 字节的flash可编程、可擦除只读存储器(eprom), 它采用了9cmos工艺和 aimel公司的高密度非易失性存储器(nuram)技术 ,而且其输出引脚和指

31、令系统都与 mcs-51相兼容 ,片内的 flash存储器允许在系统内编程序或用常规的非易失性存储器编程器来编程。单片机时钟产生方式有两种:一是内部时钟方式;二是外部时钟方式。本系统采用的是内部时钟方式,在 51 单片机内部有一振荡电路, xtal1为振荡反相放大器的输入端, xtal2为振荡反相放大器的输出端,本系统中12mhz的石英谐振器与电容值均为33pf 的 c1、 c2构成了并联谐振电路,这样就能在单片机内部产生时钟脉冲信号,连接如图2-10 所示。单片机复位有两种基本形式: 一是上电复位: 二是按键复位。 这里采用按键复位方式,当振荡器复位单片机时,要保持 rst 脚两个机器周期的

32、高电平时间 , 复位按键被按下,电容 c1 通过电阻 r1 迅速放电,使 rst端迅速变为高电平,复位按键松开后,电容通过 r2 和内部下拉电阻充电,逐渐使 rst端恢复低电平 9 。在本系统中为了实现对智能温度控制系统的简单模拟,将实际工作中制冷或加热设备换成发光二极管作为控制设备的信号指示,p2.1 口和 p2.2 口分别接红色发光和绿色发光二极管。当检测温度高于设定的上限温度值时,单片机发出驱动信号使红色二极管点亮;当检测温度低于设定的下限温度值时,单片机发出驱动信号使绿色二极管点亮。电路如图 2-10 所示。图 2-10单片机外围电路103 系统软件设计3.1程序设计总体思路本次单片机

33、温控系统的功能是由硬件电路配合软件来实现的,软件的设计采用模块化设计,主要包括 a/d 转换模块、 显示模块、控制温度模块和模块等, 其程序设计思路如下:温度传感器 ad590采集的数据进行调零、放大处理后送给a/d 转换模块进行转换,然后将处理好的数字信号送入单片机并由数码管显示,单片机 at89c51将检测值与设定值进行比较,若检测值高于设定上限值或低于设定下限值 10c 以上时,单片机发出控制信号。3.2模数转换模块本模块工作主要由adc0809完成,该芯片的输入量为0-5v 的电压量。具体过程:当adc0809 的启动引脚接收到一个来自单片机at89c51 的启动脉冲,adc0809就

34、开始工作,将经调零放大处理后的温度检测的模拟信号转化为数字信号, 送入单片机内部。经过一段时间后,转换结束。10单片机检查判断结束信号的方法有三种:将转换结束标志信号接到微型计算机的中断申请引脚或允许中断的i/o 接口的相应引脚上。当转换结束后, 即提出中断申请, 微型计算机响应后, 在中断服务程序中读出数据。( 2)查询方式将转换结束标志信号经三态门送到cpu数据总线或 i/o 接口某一位上,微型计算机向a/d 转换器发出启动信号后,便开始查询a/d 转换是否结束。一旦查询到a/d 转换结束 ,就读出结果数据。( 3)软件延时方法微型计算机启动a/d 转换后,就根据转换芯片完成转换所需要的时

35、间,调用一段软件延时程序,延时程序执行完成以后,a/d 转换也已完成,既可读出结果数据。本模块采用查询方式,因为这种方法的程序设计比较简单,实时性较强,具有很强的位处理功能。在主函数中设置一个死循环,不断查询a/d 转换是否结束。当转换结束后将adc0809的输出值进行十进制调整以方便按位存储和显示。模块流程图如图3-1 所示。11开始转换a/d 转换结束 ?否是十进制调整存储转换值返回图 3-1模数转换流程图程序如下:start0 : movx r0,a;令 adc0809开始转换wait: jb p2.0,adc0809;p2.0=1(eoc=1) 转换结束jmp waitadc0809:

36、 movx a,r0;转换结束 , 把数据读入 acall l1;十进制转换l1: clr cmov r5,#00h;十进制转换低位暂存器mov r4,#00h;十进制转换高位暂存器mov r3,#08h;调整次数next: rlc amov r2,amov a,r5addc a,r5da a;十进制调整mov r5,a;结果存回 r5mov a,r4addc a,r412mov r4,amov a,r2djnz r3,next;调整结束mov r7,#02l2: mov a,r5add a,r5da amov r5,amov a,r4addc a,r4da amov r4,adjnz r7,

37、l2mov a,r5;取检测温度个位anl a,#f0hswap amov 20h,a;存检测值个位mov a,r4;取检测温度十位anl a,#0fhmov 21h,a;存检测温度十位mov a,r4;取检测温度百位anl a,#f0hswap amov 22,a;存检测温度百位clr aret3.3温度显示模块此系统选用动态显示, 这种显示方法硬件连线简单, 所需硬件少与静态显示相比可以节省单片机 i/o 口线。因为是动态显示 , 让三位循环点亮 , 并且每一个数码管点亮延时1ms。本系统所用的 led是共阳极数码管,接有7406 反向驱动器,所以p1 口输出共阳极的七段显示码。程序思路:

38、通过远程查表法分别使三个led显示从储存检测值和设定值的单元中得到数值的百位、 十位、个位,在显示每一位时都使其延时1ms。温度显示程序流程图3-2所示。13初始化送百位数, 查表并显示延时 1ms送十位数, 查表并显示延时 1ms送个位数, 查表并显示延时 1ms返回图 3-2温度显示程序流程图程序如下:disp : mov dptr,#tab;置 tab表首地址clr p3.3;数码管清零clr p3.4clr p3.5mov a,r1;把百位数给 amovc a,a+dptr;查表得到 7 段显示代码mov p1,a;输出代码setb p3.3;输出位选码acall d1ms;延时 1m

39、sclr p3.3dec r1;把十位数给 amovc a,a+dptr;查表得到 7 段显示代码mov p1,a;输出代码setb p3.4;输出位选码acall d1ms;延时 1msclr p3.4dec r1;把个位数给 amovc a,a+dptr;查表得到 7 段显示代码mov p1,a;输出代码14setb p3.5;输出位选码acall d1ms;延时 1msclr p3.5rettab:db 0c0h ,0f9h,0a4h,0b0hdb 99h,92h,82h,0f8h3.4温度设定模块本系统键盘输入采用中断方式。使74c922的 da端通过反向器与单片机p3.2 口相连。当

40、没有键按下时, cpu不对键盘进行扫描,以节省大量时间对系统进行监控和数据处理。一旦有键盘输入, da=1,int=0则外部中断 0 立即上 cpu申请中断。 cpu响应中断后,立即转到响应的中断服务程序,读取输入值。中断程序流程图3-3 所示。保护现场设定值输入程序恢复现场中断返回图 3-3键盘中断程序流程图程序如下:org 0003h;外部中断 0 入口地址ljmp int0;转向中断服务程序setb it0;设 int0 为边沿触发方式setb ea; cpu开放中断setb ex0;允许 int0 中断int0: push psw;现场保护push accjb p3.2,keyin;

41、da=1则跳转到设定值输入程序pop acc;恢复现场pop pswreti;中断返回本电路采用具有键盘编码功能的74c922配合 4*3 键盘完成数据输入。当“* ”号键被按下时开始设定控制温度的上限值, 将输入的数值按百位、 十位、个位的顺序分别存在 28h、27h、26h内存单元中,当“ * ”再次被按下时则温度上限设定值输入完成;当“ #”号键被按下时开始设定控制温度的下限值, 将输入的数值按百位、 十位、个位的顺序分别存在 25h、1524h、23h 内存单元中,当“ #”再次被按下时则温度下限设定值输入完成。被按下的键号由 74c922 直接给出,同时其还具有防抖动等功能,这些优点

42、都有助于简化程序设计。通过建立一个 table表,就可以利用 749c22 设计各种键盘。 74c922 的键盘设计与编码设计如表 3-1 所示。(“* ”表示设定控制温度的上限值, “#”表示设定控制温度的下限值。 )设定值输入程序流程图 3-4 所示。表 3-1键盘与编码设计表键盘设计编码设计123010203456040506789070809*0#0a000b有键按下是是中断数码管显示是否是否为 *键否是否为 #存键值并显示键* 键再次是按下否存键值并显示是#键再次按下否设定完成是设定完成图 3-4设定值输入程序流程图163.5控制模块本系统控制模块采用定时中断方式。利用定时/ 计数器

43、 t0 产生定时时钟,每50ms 由单片机将检测温度值与设定值进行比较,根据比较结果发出不同的控制信号。将t0 工作方式 1 即 16 位定时 / 计数器。at89c51单片机定时 / 计数器工作方式由寄存器tmod来设置,其低四位用于t0,高四位用于 t1,其格式如表 3-2 所示。表 3-2工作方式寄存器tmod76543210gatec/ tm1m0gatec/ tm1m0gate:门控位。 gate=0时,只要用软件使tcon中的 tr0或 tr1为 1,就可以启动定时 / 计数器工作; gate=1时,要用软件使 tcon中的 tr0或 tr1为 1,同时外部中断引脚也为高电平,才能

44、启动定时 / 计数器工作。 c/ : 定时 / 计数模式选择位。 c/ t=0 时为定时模式; c/ t=1 时为计数模式。tm1m0:工作方式设置位。 m1m0=00时,工作在方式 0,为 13 位定时 / 计数器; m1m0=01 时,工作在方式 1,为 16 位定时 / 计数器; m1m0=10时,工作在方式 2,为 8 位自动重装定时 / 计数器; m1m0=11时,工作在方式 3,t0 分成两个独立的 8 位定时 / 计数器。设置 t0 的工作方式控制字 tmod:m1m0=01,gate=0, c/t=0,可取工作方式控制字为01h。计算计数初值x:由于晶振为 12mhz,所以机器

45、周期 tcy 为 110-6s 。所以,n=t/tcy=50 10-3/1 10-6=50000,x=216-n=65536-50000=15536=3cafh 即应将 3ch送入 th0中, afh送入 tl0 中。定时中断控制程序流程图3-5 所示。17绿灯亮红灯亮图 3-5控制程序流程图程序清单如下:org 000bh;定时 / 计数器 0 溢出中断服务程序入口地址jmp timer0;转向中断服务程序mov tmod,#01h;工作在模式 1mov th0,#3ch;设置计数初值mov tl0,#afhset tr0mov ie #83htimer0 : push pswpush accmov th0,#3ch;重设时间mov tl0,#afhclr c;清标志位mov a,25h;下限比较cjne a,22h,t1;百位不等则跳到t1mov a,24h;百位相等则比较十位cine a,21h,ti;十位不等则跳到t1mov a,23h;十位相等则比较个位mov r5,20hsubb a,r5subb a,

温馨提示

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

评论

0/150

提交评论