《本科毕业论文---基于51单片机的温度控制系统设计论文.doc》由会员分享,可在线阅读,更多相关《本科毕业论文---基于51单片机的温度控制系统设计论文.doc(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于51单片机的温度控制系统基于51单片机的温度控制系统 摘 要:温度控制系统在工业,农业上应用广泛,在当代社会,对于温度控制方面要求越来越高,越来越精细。因此我们在本次学校实习中选择完成一个基本的温度测量并控制温度在一定范围内的课题,因此来锻炼自己的能力。 本次设计采用单片机对温度进行测量和控制,并控制其温度稳定在某一个设定值上。通过数码管显示温度,并具有报警系统,可以通过键盘输入来控制基准温度与上下限温度。基本达到自动控制的目的。 基于STC89C52单片机的温控系统主要实现了温度采集、A/D转换、温度控制及报警等功能。首先,介绍了我们选择的课题要求,同时重点介绍了我们选择的芯片资料,如S
2、TC89C52,ADC0809。其次,阐述了系统的工作原理,完成了系统结构图的设计,把系统划分为5大模块并完成了各大模块的设计工作,同时附以系统硬件电路原理图。最后,设计了系统的软件。系统软件是用C语言进行软件设计的,C语言具有指令简单,数据量小等特点。关键词:温度控制;STC89C52;C语言Abstract:The temperature control system in industry, agriculture on a wide range of applications, in the contemporary society, the temperature control r
3、equirements more and more high, more and more fine. Therefore, we in the school practice choose to complete a basic temperature measurement and project control temperature in a certain range, thus to exercise their abilities.This design uses the monolithic integrated circuit for measuring and contro
4、lling temperature, and to control its temperature stability in a certain set of values. Through digital tube display temperature, and has alarm system, through the keyboard input to control the reference temperature and minimum temperature. Basically achieve the purpose of automatic control.The temp
5、erature control system of STC89C52 single chip microcomputer is mainly realized the temperature acquisition, A/D conversion, temperature control and alarm functions based on.Secondly, it describes the principle of the system, designed the system structure diagram, the system is divided into 5 major
6、parts and finished the designing of each module, and attached to the system hardware circuit diagram.Finally, the design of the system software. The system software is written in C language for software design, C language has the characteristics of simple instruction, small amount of data. Key Words
7、: temperature control;STC89C52 ;C language目录1课题要求52总体设计方案62.1系统总体设计62.2单片机选择62.3显示电路选择72.4键盘电路选择82.5 AD电路选择82.6温度采集电路选择92.7控制电路选择113 系统硬件设计123.1系统硬件功能分析123.2单片机最小系统设计123.4温度检测电路设计143.4 AD转换模块设计153.5温度控制系统设计173.6报警模块设计183.7键盘输入模块设计194 系统软件设计204.1主程序分析204.2显示模块分析204.3 AD转换模块分析204.4 键盘输入模块设计214.5报警控制模块
8、设计225 实习结果236 总结与鸣谢24参考文献24附录125附录2251课题要求本课题是设计一个基于单片机的温度控制系统,用来测量温度并将温度控制在一定范围内。系统框图如下图所示,包括6部分:单片机系统、温度采集电路、显示电路、温度控制电路、键盘电路和报警电路。系统采用AT89C51作为主机,温度采集电路包括温度传感器、信号调理电路和ADC。单片机将测量的温度在数码管上显示,并与设定的门限值进行比较,如超出门限则驱动报警电路,并启动温度控制电路调节温度到预定值。这里温度传感器可采用电阻式温度传感器(Pt100)或电流温度传感器(AD590);数码显示电路可采用四位一体共LED数码管;报警电
9、路采用蜂鸣器使和发光二极管;温度调节电路采用两个固态继电器(SSR),分别接热电阻和电风扇进行升温和降温。要求如下:1)温度测量范围0-99;2)温度测量误差小于1;3)温度控制误差小于2;4)可设置上下限报警温度和预定温度。5)上下限报警值、预定值和实际测量值可通过LED显示。2总体设计方案2.1系统总体设计系统整体硬件结构框图如图2-1所示,采用STC89C52作为主机;由电阻式温度传感器测量温度值并转换成电压信号经过放大,再经A/D转换器进行模数转换,由I/O接口读入CPU,CPU进行数据处理。处理后的数据,一方面送LED数码管显示;另一方面与检测开关设定的温度控制值进行比较,并判断是否
10、超限,人通过输出I/O口信号控制加热和冷却模块,达到控制温度的目的。2.2单片机选择单片机的种类繁多,Intel公司的MCS-51 8位单片机系列、MCS-96 16位单片机系列;Atmel的AT89、AVR系列;Philips的P89V51、LPC700/900 8位单片机系列、LPC2000 16/32系列;Motorola公司的MC68HC908 8位单片机系列、DSP型16位单片机。方案一:选择8031单片机8031单片机是Intel公司生产的MCS-51系列单片机中的一种,除无片内ROM外,其余特性与MCS-51单片机基本一样。采用40个引脚的8031芯片。该芯片有4个8位并行I/O
11、接口:P0、P1、P2、P3,128个字节的片内数据存储器,但没片内程序存储器,需扩展,价格便宜。方案二:STC89C52单片机 STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗,内置4KB EEPROM,
12、MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。【1】由于本次实验我们要达到控制效果,并且结合在学校里的学习知识,我们小组决定用STC89C52单片机作为主机,这款单片机是我们熟悉的,做起来比较有把握。2.3显示
13、电路选择在单片机系统中常用的显示电路有LED显示、LCD显示。方案一:选择LED显示采用七段码显示时,数码管中的每一段相当于一个发光二极管。对于共阳极的数码管,内部每个发光二极管的阳极被连在一起,成为该各段的公共选通线,发光二极管的阴极则成为段选线。对于共阴极数码管,则正好相反,内部发光二极管的阴极接在一起,阳极成为段选线。这两种数码管的驱动方式是不同的。当需要点亮共阳极数码管的一段时,公共段需接高电平,该段的段选线接低电平。从而该段被点亮。当需要点亮共阴极数码管的一段时,公共段需接低电平,该段的段选线接高电平,该段被点亮。方案二:选择LCD显示C系列LCD显示可以显示字母、数字符号、中文字型
14、及图形,具有绘图及文字画面混合显示功能。提供三种控制接口,分别是8位微处理器接口,4位微处理器接口及串行接口(OCMJ4X16A/B无串行接口)。所有的功能,包含显示RAM,字型产生器,都包含在一个芯片里面,只要一个最小的微处理系统,就可以方便操作模块。内置2M-位中文字型ROM (CGROM) 总共提供8192 个中文字型(16x16 点阵),16K-位半宽字型ROM (HCGROM) 总共提供126 个符号字型(16x8 点阵),64 x 16-位字型产生RAM (CGRAM),另外绘图显示画面提供一个64x256点的绘图区域(GDRAM),可以和文字画面混和显示。提供多功能指令:画面清除
15、(Display clear)、光标归位(Return home)、显示打开/关闭(Display on/off)、光标显示/隐藏(Cursor on/off)、显示字符闪烁(Display character blink)、光标移位(Cursor shift)、显示移位(Displayshift)、垂直画面卷动(Vertical line scroll)、反白显示(By_line reverse display)、待命模式(Standby mode)。为了较方便的显示LED,本系统采用了利用上拉电阻与CD4511译码器组合控制段选,位选直接使用单片机控制,这大大的降低了成本,也节省了元器件。
16、它还具有可用程序来实现多种功能、通用性强、使用灵活的特点。如果使用LCD显示在经济上不能降低成本,编程也比较繁琐,反而显得不合理。综上所述我们使用四位共阴极数码管与CD4511组合来完成显示部分2.4键盘电路选择一般键盘电路有两种:独立式键盘和矩阵式键盘。方案一:选择独立式键盘 独立式键盘中,各按键相互独立,每个按键各接一根输入线,每根输入线上的按键工作状态不会影响其它输入线上的工作状态。因此,通过检测输入线的电平状态就可以很容易的判断按键是否被按下了。独立式键盘电路配置灵活,软件结构简单。但每个按键需占用一根输入线,在按键数量较多时,输入口浪费大,电路结构显得很繁杂,故此种按键适用于按键较少
17、或操作速度较高的场合。方案二:选择矩阵式键盘矩阵式键盘由行线和列线组成,按键位于行、列的交叉点上,分别连接到按键开关的两端。行线通过上拉电阻接到VCC上。平时无按键动作时,行线处于低电平状态,而当有按键按下时,列线电平为低,行线电平为高。这一点是识别矩阵式是否被按下的关键所在。因此,各按键彼此将相互影响,所以必须将行、列线信号配合起来并作适合的处理,才能确定闭合键的位置。很明显,在按键数量较多的场合,矩阵式键盘与独立式键盘相比,要节省很多的I/O口。 本次设计中对于控制要求不高,所以我们使用4*4矩阵键盘来作为输入,完全可以满足要求,若使用PS2键盘,不仅编程麻烦,成本也高,所以舍弃。2.5
18、AD电路选择方案一:选择TLC2543TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。由于是串行输入结构,能够节省51系列单片I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。TLC2543特点: 12位分辩率A/D转换器; 在工作温度范围内10s转换时间; 11个模拟输入通道; 3路内置自测试方式; 采样率为66kbps; 线性误差1LSBmax; 有转换结束输出EOC; 具有单、双极性输出; 可编程的MSB或LSB前导。方案二:选择ADC0809ADC0809是8位、逐次逼近式A/D转换芯片,具有地址锁存控制的8路模拟开关,应
19、用单一5V电源,其模拟量输入电压的范围为0-5V,对应的数字量输出为00FFH,转换时间为100us,无需调零或调整满量程。综合来说,我们选择ADC0809,首先他的精度完全可以满足我们的需要,其次这种芯片我们用过不少次,也比较熟悉,做起来比较有把握,第三,于12位AD相比编程简单,价格更加便宜,适合学生使用。ADC0809是8位、逐次逼近式A/D转换芯片,具有地址锁存控制的8路模拟开关,应用单一5V电源,其模拟量输入电压的范围为0-5V,对应的数字量输出为00FFH,转换时间为100us,无需调零或调整满量程。ADC0809的内部结构框图如图2-2所示,本系统采用ADC0809构成A/D转换
20、电路。ADC0809是CMOS单片型逐次逼近式AD转换器,内部结构它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型DA转换器、逐次逼近寄存器、三态输出锁存器等其它一些电路组成。因此,ADC0809可处理8路模拟量输入,且有三态输出能力,既可与各种微处理器相连,也可单独工作。输入输出与TTL兼容。由于ADC0809的片内无时钟,它的时钟频率在10KHZ1280KHZ之间。可利用AT89C52提供的地址锁存允许信号ALE经D触发器二分频所得,ALE脚的频率是AT89C52单片机时钟频率的1/6。由于ADC0809具有输出三态锁存器,故其8位数据输出引脚可直接与数据总线相连。2.6温度采集电
21、路选择温度采集的传感器上我们有两种选择,PT100与AD590。方案一:AD590AD590是美国ANALOG DEVICES公司的单片集成两端感温电流源,其输出电流与绝对温度成比例。在4 V至30 V电源电压范围内,该器件可充当一个高阻抗、恒流调节器,调节系数为1 A/K。片内薄膜电阻经过激光调整,可用于校准器件,使该器件在298.2K (25C)时输出298.2 A电流。AD590适用于150C以下、目前采用传统电气温度传感器的任何温度检测应用。低成本的单芯片集成电路及无需支持电路的特点,使它成为许多温度测量应用的一种很有吸引力的备选方案。应用AD590时,无需线性化电路、精密电压放大器、
22、电阻测量电路和冷结补偿。除温度测量外,还可用于分立器件的温度补偿或校正、与绝对温度成比例的偏置、流速测量、液位检测以及风速测定等。AD590可以裸片形式提供,适合受保护环境下的混合电路和快速温度测量。AD590特别适合远程检测应用。它提供高阻抗电流输出,对长线路上的压降不敏感。任何绝缘良好的双绞线都适用,与接收电路的距离可达到数百英尺。这种输出特性还便于AD590实现多路复用:输出电流可以通过一个CMOS多路复用器切换,或者电源电压可以通过一个逻辑门输出切换。方案二:PT100PT100的工作原理:当PT100在0摄氏度的时候他的阻值为100欧姆,它的阻值会随着温度上升而成近似匀速的增长。但他
23、们之间的关系并不是简单的正比的关系,而更应该趋近于一条抛物线。铂电阻的阻值随温度的变化而变化的计算公式:-200t0 Rt=R01+At+Bt*t+C(t-100)t*t*t (1)0t850 Rt=R0(1+At+Bt2) (2)Rt为t时的电阻值,R0为0时的阻值。公式中的A,B,系数为实验测定。这里给出标准的DIN IEC751系数:A=3.9083E-3、 B=-5.775E-7、 C=-4.183E-12根据韦达公式求得阻值大于等于100欧姆的Rt -t的换算公式:0t850 t=(sqrt(A*R0)2-4*B*R0*(R0-Rt)-A*R0)/2/B/R0PT100温度感测器是一
24、种以白金(Pt)作成的电阻式温度检测器,属于正电阻系数,其电阻和温度变化的关系式如下:R=Ro(1+T)其中=0.00392,Ro为100(在0的电阻值),T为摄氏温度因此白金作成的电阻式温度检测器,又称为PT100。1:Vo=2.55mA 100(1+0.00392T)=0.255+T/1000 。2:量测Vo时,不可分出任何电流,否则测量值会不准。【2】由于有四个组做这个课题,我们想与他人选择尽量不同的传感器,PT100是电压型传感器,它的输出是电压范围,AD590是电流型,我们与其他小组探讨商量后决定使用PT100。它的工作原理:当PT100在0摄氏度的时候他的阻值为100欧姆,它的阻值
25、会随着温度上升而成近似匀速的增长。但他们之间的关系并不是简单的正比的关系,而更应该趋近于一条抛物线。但是对于简单的处理中我们可以认为他在0-100度范围内近似于一条直线,方便我们运算.2.7控制电路选择 在常用的控制方法中有两种:晶闸管控制和继电器控制。方案一:选择晶闸管控制当晶闸管承受反向电压时,不论门极是否有触发电流,晶闸管都不会导通;当晶闸管承受正向电压时,仅在门极有触发电流的情况下晶闸管才能导通;晶闸管一旦导通,门极就失去控制作用,不论门极触发电流是否还存在,晶闸管都保持导通;若要使已导通的晶闸管关断,只能利用外加和外电路的作用使流过晶闸管的电流降到接近于零的某一数值一下。方案二:选择
26、继电器控制继电器室一种在其输入的物理量达到规定值时,其电气输入电路被接通或分断的自动电器。继电器按其输入量性质分为电气继电器和非电气继电器两大类。按其用途分为控制继电器盒保护继电器两大类。根据它们的特性和用途,还有本设计的特点,如果选用晶闸管他有有静态及动态的过载能力较差;容易受干扰而误导通,这对于控制精度影响不利。所以我们选择继电器作为控制元器件。,3 系统硬件设计由于本次课程设计经费有限,只能在万用板上焊接并调试,所以我们画出电路图自己焊接,对于精确度,稳定性可能有一部分影响,但是总体上完成了实验要求。3.1系统硬件功能分析 我们以 STC89C52为核心控制器,包括传感器电路,键盘电路,
27、显示电路、报警电路和控制电路5大模块,系统的详细结构框图,如下图所示。STC89C52内部没有A/D转换器,需要专门添加,这里使用的是ADC0809,传感器采集到的模拟信号经过放大,接着通过ADC0809转换成数字量送给单片机。单片机实时采集温度,通过数码管将当前温度显示出来,并根据采样结果控制继电器导通与关断来控制加热和降温;同时超过设定温度一到,蜂鸣器发出声音报警。3.2单片机最小系统设计最小系统主要由晶振电路和复位电路组成,在电路中要注意Vcc是电源,必须保证稳定可靠;管脚不可悬空,必须连到VSS,或者通过上拉电阻接到VSS;复位电路采用传统的RC复位,并多带一个复位按键,以方便操作;晶
28、振的频点不是任意的,这里使用12MHz;注意:/PSEN管脚作悬空处理,不能接地,这和P89V51RD2 的情况不同。复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤消复位信号。我们为了使用方面还增加了按键复位的功能。STC89C52的操作频率为040MHz,如前面所述,这里使用市场上常见的12MHz的晶振。单片机内含一个高增益的反相放大器,通过XTAL1、XTAL2外接作为反馈元件的晶体后便成为自激振荡器。晶体呈感性,与C4、C5构成并联谐振电路。振荡器的振荡频率主要取决于晶体 。在应用时为了保证正常起振,振荡器的位置要最接近单片机,且连线要最短。外部振荡器电容C4和C5
29、,用于振荡频率微调或振荡器匹配,并可用于调整起振时间,复位电路由C3和S1组成,为了防止抖动现象。他的参数如下1. 增强型8051单片机,6 时钟/机器周期和12 时钟/机器周期可以任意 选择,指令代码完全兼容传统8051. 2. 工作电压:5.5V3.3V(5V单片机)/3.8V2.0V(3V 单片机)3.工作频率范围:040MHz,相当于普通8051 的080MHz,实际工作 频率可达48MHz4. 用户应用程序空间为8K字节5. 片上集成512 字节RAM6. 通用I/O 口(32 个),复位后为:P0/P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不
30、用加上拉电阻,作为 I/O 口用时,需加上拉电阻。7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无 需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序,数秒即可完成一片8. 具有EEPROM 功能9. 共3 个16 位定时器/计数器。即定时器T0、T1、T210.外部中断4 路,下降沿中断或低电平触发电路,Power Down 模式可 由外部中断低电平触发中断方式唤醒11. 通用异步串行口(UART),还可用定时器软件实现多个UART12. 工作温度范围:-40+85(工业级)/075(商业级)13. PDIP封装【3】 3,3显示电路设计
31、LED数码管显示有所用数码管是共阴管、还是共阳管,由数码转换为笔划信息借软件译码、还是硬件译码,以及显示扫描采用动态扫描、还是静态扫描等种种区别。采用共阴极数码管还是共阳极数码管没有太明显的优、缺点,然而与同一数码对应的笔划信息码往往是相互置反的关系。字符数据字与LED段码关系如表3-2。动态扫描各数码管是轮流点亮的,由于视觉的暂留现象,却好像都点亮着。实际控制数码管点亮的位选信号是依次逐一送出的,而各个数码管应显示数码的笔划信息则与其位选信号同时送给,于是各管将按序一一亮出自己的数码;待各管都轮到后,又再从头轮起,反复不已。对于动态扫描,轮到某管、等待该管点亮必须留给一段恰当的时间。时间过短
32、,数码管来不及点亮;时间过长,其他数码管将熄灭、不能显示。静态扫描无位选信号,各数码管是同时点亮的;每个数码管应显示数码的笔划信息也分路同时送给。当选用共阴极的LED显示管时,所有发光二极管的阴极连在一起接地,当某个发光二极管的阳极加入高电平时,对应的二极管点亮。因此要显示某字形就应使此字型的相应段的二极管点亮,实际上就是送一个用不同电平组合代表的数据字来控制LED的显示,此数据称为字符的段码。数据字D7D6D5D4D3D2D1D0LED段DP g f e d c b a在这里我们由于硬件原因选择共阴极数码管。由于端口不够我们选择使用CD4511来减少段选的选择,使用CD4511后可以减少3个
33、端口的使用,但是在使用过程受限,这样一来就无法显示如A C这样的字母,只能显示数字了,界面可能不好看,但是满足了要求。3.4温度检测电路设计 我们使用的是二线式PT100,测温原理:电路采用200欧姆调节产生4.2V的参考电源;采用R7、R8、VR2、Pt100构成测量电桥(其中R7R8,VR2为0-200欧姆电位器),当Pt100的电阻值和VR2的电阻值不相等时,电桥输出一个mV级的压差信号,这个压差信号经过运放op07放大后输出期望大小的电压信号(0-5V之间),该信号可直接连AD转换芯片。差动放大电路中R9R13、 R5R17、放大倍数R17/R13,运放采用正负12V供电。设计及调试注
34、意点:1. 同幅度调整R7和R8的电阻值可以改变电桥输出的压差大小;2. 改变R5/R3的比值即可改变电压信号的放大倍数,以便满足设计者对温度范围的要求3. 放大电路必须接成负反馈方式,否则放大电路不能正常工作4. VR2也可为电位器,调节电位器阻值大小可以改变温度的零点设定,例如Pt100的零点温度为0,即0时电阻为100,当电位器阻值调至109.885时,温度的零点就被设定在了25。测量电位器的阻值时须在没有接入电路时调节,这是因为接入电路后测量的电阻值发生了改变。5. 理论上,运放输出的电压为输入压差信号放大倍数,但实际在电路工作时测量输出电压与输入压差信号并非这样的关系,压差信号比理论
35、值小很多,实际输出信号为4.2*(RPt100/(R7+RPt100)- RVR2/(R8+RVR2) (1)式中电阻值以电路工作时量取的为准。6. 电桥的正电源必须接稳定的参考基准,因为如果直接VCC的话,当网压波动造成VCC发生波动时,运放输出的信号也会发生改变,此时再到以VCC未发生波动时建立的温度-电阻表中去查表求值时就不正确了,这可以根据式(1)进行计算得知。【4】3.4 AD转换模块设计 AD我们采用ADC0809与74LS02(或非门)构成AD电路,具有自行启动使能端的作用。通过或非门的作用控制AD转换的启动和开始,在前段增加稳压二极管保证模拟电压输入稳定。AD工作原理如下IN0
36、IN7:8 条模拟量输入通道ADC0809对输入模拟量要求:信号单极性,电压范围是05V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。地址输入和控制线:4条ALE 为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A, B,C 三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B 和C 为地址输入线,用于选通IN0IN7 上的一路模拟量输入。通道选择表如下表所示。C B A 选择的通道0 0 0 IN00 0 1 IN10 1 0 IN20 1 1 IN31 0 0 IN
37、41 0 1 IN51 1 0 IN61 1 1 IN7数字量输出及控制线:11 条ST 为转换启动信号。当ST 上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D 转换;在转换期间,ST 应保持低电平。EOC 为转换结束信号。当EOC 为高电平时,表明转换结束;否则,表明正在进行A/D 转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE1,输出转换得到的数据;OE0,输出数据线呈高阻状态。D7D0 为数字量输出线。CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,VREF(),VREF()为参
38、考电压输入。3 、ADC0809应用说明(1)ADC0809内部带有输出锁存器,可以与AT89S51 单片机直接相连。(2) 初始化时,使ST 和OE信号全为低电平。(3) 送要转换的哪一通道的地址到A,B,C 端口上。(4) 在ST 端给出一个至少有100ns 宽的正脉冲信号。(5) 是否转换完毕,我们根据EOC 信号来判断。(6) 当EOC变为高电平时,这时给OE 为高电平,转换的数据就输出给单片机了。【3】3.5温度控制系统设计通过继电器控制外接电器,但是由于该处电流不够,无法直接驱动继电器,所以我们使用三极管加大电流,保证继电器工作。电磁继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。
39、只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。继电器一般有两股电路,为低压控制电路和高压工作电路。在电路中我们使用固态继电器看,固态继电器是一种两个接线端为
40、输入端,另两个接线端为输出端的四端器件,中间采用隔离器件实现输入输出的电隔离。固态继电器按负载电源类型可分为交流型和直流型。按开关型式可分为常开型和常闭型。按隔离型式可分为混合型、变压器隔离型和光电隔离型,以光电隔离型为最多。【5】我们在这里使用的是有一个交流,一个直流。因为我们要控制一个交流的电吹风和一个简单的直流小电扇。如图P34口控制直流小电扇,当温度低于下限温度是启动继电器打开小电扇,当进入设定温度范围内关闭小电扇,同理P35工作原理也一样,在这里要注意电器的电源必须外接,如果使用单片机电源的话对电路有非常大的影响。3.6报警模块设计我们设计的报警电路较为简单,蜂鸣器报警电路由三极管和
41、蜂鸣器组成。要在蜂鸣器两端加上超过5V 的电压,在我们所要求的温度达到一定的上界或者下界时, 蜂鸣器就会叫个不停,由单片机I/O 口输出信号控制晶体管的导通或截止, 则蜂鸣器报警。通过单片机来控制蜂鸣器产生报警声音。但是也要注意,电流不够无法驱动蜂鸣器,所以我们使用三极管来放大电流。并且要结合端口特性来使用,如P31口启动就是高电平,所以我们外加了5V电压这样达到他启动时不响的效果。三极管我们使用PNP型8550型号。3.7键盘输入模块设计我们使用4*4矩阵键盘,八位并行接至P2口,扫描键盘读出键值,再继续其他操作。使用了矩阵键盘行扫描法 行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按
42、键识别方法,如上图所示键盘,介绍过程如下。1、判断键盘中有无键按下 将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。2、判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。当我们按下A键时,就进入设置上限温度,这是也可以看到初始的上限温度。
43、同理B为设置下限温度,C为设置设定温度。4 系统软件设计4.1主程序分析由需要的功能,构建出如下程序框图:再按照程序框图,分模块进行设计。4.2显示模块分析将tmp温度赋予局部变量tempture,将两位数温度的个位和十位分别赋值给两个变量,然后利用显示和循环进行显示,分别对P1口进行赋值,再通过位选进行数码管点亮位置的选择,中间加上合适的延时函数,使数码管显示保持在一个不太闪,又不会让人看不清的程度。4.3 AD转换模块分析AD启动有两种方式:中断和查询。我们组利用的是中断方式来启动ADC0809。在程序开始时,定义一个中间变量Amp,用于存放AD转换的数据,方便处理,然后令EA=0关闭中断
44、。令P30=0的原因是,我们组硬件连接AD方式使START,EOC,EN,ALE都会进行自行判断,连接或非门之后利用单片机的WR和RD两脚的电平刚好能使ADC0809正常工作,这个连接方式需要的就是令P30一直维持在低电平。进入循环之后,数组用于存放当前AD采样得到的二进制数据,将中间变量Amp清零。接下来进入if循环之后将每次得到的二进制数据累加放入Amp之中用于取平均值,求取平均值之后,Amp还是一个二进制数,因为我们采样电路中电压与温度的关系是:13V=T,那么,我们乘以一个量化单位5/256,就可以得到十进制数,再将十进制数调零后存放入全局变量tmp中。4.4 键盘输入模块设计该模块以
45、input()为核心,up(),key_on(),in(),number()四个子程序为补充,实现在实时温度显示时,按下按键A,B,C分别进入上限温度,下限温度,控制温度的显示修改,输入两位数字然后按下#键确认,期间任意时刻按下D回到实时温度显示的功能。首先对按键扫描,判断其是否有按下,在发现按下的时,对按键的键值进行计算,得出一个key值,再将其与我设定的A,B,C三个按键的key值进行对比,当出现符合的情况是进入对应的程序,首先做一个动态显示,循环条件是没有按键按下,将原有的A,B,C三项的温度分两位进行显示,然后将输入的两位数字作为P1进行显示,最后#确认或者D取消离开该模块。如不符合A,B,C三个的任意键值时,直接离开该模块。4.5报警控制模块设计 该模块将对报警电路,温度控制电路进行控制,主要对程序内的四个变量进行比较,首先用实时温度与上下限进行对比,当结果在范围内时,关闭报警,再将实时温度与控制温度进行对比,如果差值小于2,即关闭两个电器。当结果在上下限温度之外时,再对温度和下限值对比,从而判断出温度是过高还是过低,发现过高时,打开风扇,执行降温工作,当发现温度过低时,打开电吹风进行加热工作。然后温度渐