基于51单片机的温度控制系统设计论文_第1页
基于51单片机的温度控制系统设计论文_第2页
基于51单片机的温度控制系统设计论文_第3页
基于51单片机的温度控制系统设计论文_第4页
基于51单片机的温度控制系统设计论文_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

基于51单片机的温度控制系统基于51单片机的温度控制系统摘要:温度控制系统在工业,农业上应用广泛,在当代社会,对于温度控制方面要求越来越高,越来越精细。因此我们在本次学校实习中选择完成一个基本的温度测量并控制温度在一定范围内的课题,因此来锻炼自己的能力。本次设计采用单片机对温度进行测量和控制,并控制其温度稳定在某一个设定值上。通过数码管显示温度,并具有报警系统,可以通过键盘输入来控制基准温度与上下限温度。基本达到自动控制的目的。基于STC89C52单片机的温控系统主要实现了温度采集、A/D转换、温度控制及报警等功能。首先,介绍了我们选择的课题要求,同时重点介绍了我们选择的芯片资料,如STC89C52,ADC0809。其次,阐述了系统的工作原理,完成了系统结构图的设计,把系统划分为5大模块并完成了各大模块的设计工作,同时附以系统硬件电路原理图。最后,设计了系统的软件。系统软件是用C语言进行软件设计的,C语言具有指令简单,数据量小等特点。关键词:温度控制;STC89C52;C语言Abstract:Thetemperaturecontrolsysteminindustry,agricultureonawiderangeofapplications,inthecontemporarysociety,thetemperaturecontrolrequirementsmoreandmorehigh,moreandmorefine.Therefore,weintheschoolpracticechoosetocompleteabasictemperaturemeasurementandprojectcontroltemperatureinacertainrange,thustoexercisetheirabilities.Thisdesignusesthemonolithicintegratedcircuitformeasuringandcontrollingtemperature,andtocontrolitstemperaturestabilityinacertainsetofvalues.Throughdigitaltubedisplaytemperature,andhasalarmsystem,throughthekeyboardinputtocontrolthereferencetemperatureandminimumtemperature.Basicallyachievethepurposeofautomaticcontrol.ThetemperaturecontrolsystemofSTC89C52singlechipmicrocomputerismainlyrealizedthetemperatureacquisition,A/Dconversion,temperaturecontrolandalarmfunctionsbasedon.Secondly,itdescribestheprincipleofthesystem,designedthesystemstructurediagram,thesystemisdividedinto5majorpartsandfinishedthedesigningofeachmodule,andattachedtothesystemhardwarecircuitdiagram.Finally,thedesignofthesystemsoftware.ThesystemsoftwareiswritteninClanguageforsoftwaredesign,Clanguagehasthecharacteristicsofsimpleinstruction,smallamountofdata.KeyWords:temperaturecontrol;STC89C52;Clanguage目录1课题要求 52总体设计方案 62.1系统总体设计 62.2单片机选择 62.3显示电路选择 72.4键盘电路选择 82.5AD电路选择 82.6温度采集电路选择 92.7控制电路选择 113系统硬件设计 123.1系统硬件功能分析 123.2单片机最小系统设计 123.4温度检测电路设计 143.4AD转换模块设计 153.5温度控制系统设计 173.6报警模块设计 183.7键盘输入模块设计 194系统软件设计 204.1主程序分析 204.2显示模块分析 204.3AD转换模块分析 204.4键盘输入模块设计 214.5报警控制模块设计 225实习结果 236总结与鸣谢 24参考文献 24附录1 25附录2 251课题要求本课题是设计一个基于单片机的温度控制系统,用来测量温度并将温度控制在一定范围内。系统框图如下图所示,包括6部分:单片机系统、温度采集电路、显示电路、温度控制电路、键盘电路和报警电路。系统采用AT89C51作为主机,温度采集电路包括温度传感器、信号调理电路和ADC。单片机将测量的温度在数码管上显示,并与设定的门限值进行比较,如超出门限则驱动报警电路,并启动温度控制电路调节温度到预定值。这里温度传感器可采用电阻式温度传感器(Pt100)或电流温度传感器(AD590);数码显示电路可采用四位一体共LED数码管;报警电路采用蜂鸣器使和发光二极管;温度调节电路采用两个固态继电器(SSR),分别接热电阻和电风扇进行升温和降温。要求如下:1)温度测量范围0℃-99℃;2)温度测量误差小于±1℃;3)温度控制误差小于±2℃;4)可设置上下限报警温度和预定温度。5)上下限报警值、预定值和实际测量值可通过LED显示。2总体设计方案2.1系统总体设计系统整体硬件结构框图如图2-1所示,采用STC89C52作为主机;由电阻式温度传感器测量温度值并转换成电压信号经过放大,再经A/D转换器进行模数转换,由I/O接口读入CPU,CPU进行数据处理。处理后的数据,一方面送LED数码管显示;另一方面与检测开关设定的温度控制值进行比较,并判断是否超限,人通过输出I/O口信号控制加热和冷却模块,达到控制温度的目的。2.2单片机选择单片机的种类繁多,Intel公司的MCS-518位单片机系列、MCS-9616位单片机系列;Atmel的AT89、AVR系列;Philips的P89V51、LPC700/9008位单片机系列、LPC200016/32系列;Motorola公司的MC68HC9088位单片机系列、DSP型16位单片机。方案一:选择8031单片机8031单片机是Intel公司生产的MCS-51系列单片机中的一种,除无片内ROM外,其余特性与MCS-51单片机基本一样。采用40个引脚的8031芯片。该芯片有4个8位并行I/O接口: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口线,看门狗,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。【1】由于本次实验我们要达到控制效果,并且结合在学校里的学习知识,我们小组决定用STC89C52单片机作为主机,这款单片机是我们熟悉的,做起来比较有把握。2.3显示电路选择在单片机系统中常用的显示电路有LED显示、LCD显示。方案一:选择LED显示采用七段码显示时,数码管中的每一段相当于一个发光二极管。对于共阳极的数码管,内部每个发光二极管的阳极被连在一起,成为该各段的公共选通线,发光二极管的阴极则成为段选线。对于共阴极数码管,则正好相反,内部发光二极管的阴极接在一起,阳极成为段选线。这两种数码管的驱动方式是不同的。当需要点亮共阳极数码管的一段时,公共段需接高电平,该段的段选线接低电平。从而该段被点亮。当需要点亮共阴极数码管的一段时,公共段需接低电平,该段的段选线接高电平,该段被点亮。方案二:选择LCD显示C系列LCD显示可以显示字母、数字符号、中文字型及图形,具有绘图及文字画面混合显示功能。提供三种控制接口,分别是8位微处理器接口,4位微处理器接口及串行接口(OCMJ4X16A/B无串行接口)。所有的功能,包含显示RAM,字型产生器,都包含在一个芯片里面,只要一个最小的微处理系统,就可以方便操作模块。内置2M-位中文字型ROM(CGROM)总共提供8192个中文字型(16x16点阵),16K-位半宽字型ROM(HCGROM)总共提供126个符号字型(16x8点阵),64x16-位字型产生RAM(CGRAM),另外绘图显示画面提供一个64x256点的绘图区域(GDRAM),可以和文字画面混和显示。提供多功能指令:画面清除(Displayclear)、光标归位(Returnhome)、显示打开/关闭(Displayon/off)、光标显示/隐藏(Cursoron/off)、显示字符闪烁(Displaycharacterblink)、光标移位(Cursorshift)、显示移位(Displayshift)、垂直画面卷动(Verticallinescroll)、反白显示(By_linereversedisplay)、待命模式(Standbymode)。为了较方便的显示LED,本系统采用了利用上拉电阻与CD4511译码器组合控制段选,位选直接使用单片机控制,这大大的降低了成本,也节省了元器件。它还具有可用程序来实现多种功能、通用性强、使用灵活的特点。如果使用LCD显示在经济上不能降低成本,编程也比较繁琐,反而显得不合理。综上所述我们使用四位共阴极数码管与CD4511 组合来完成显示部分2.4键盘电路选择一般键盘电路有两种:独立式键盘和矩阵式键盘。方案一:选择独立式键盘独立式键盘中,各按键相互独立,每个按键各接一根输入线,每根输入线上的按键工作状态不会影响其它输入线上的工作状态。因此,通过检测输入线的电平状态就可以很容易的判断按键是否被按下了。独立式键盘电路配置灵活,软件结构简单。但每个按键需占用一根输入线,在按键数量较多时,输入口浪费大,电路结构显得很繁杂,故此种按键适用于按键较少或操作速度较高的场合。方案二:选择矩阵式键盘矩阵式键盘由行线和列线组成,按键位于行、列的交叉点上,分别连接到按键开关的两端。行线通过上拉电阻接到VCC上。平时无按键动作时,行线处于低电平状态,而当有按键按下时,列线电平为低,行线电平为高。这一点是识别矩阵式是否被按下的关键所在。因此,各按键彼此将相互影响,所以必须将行、列线信号配合起来并作适合的处理,才能确定闭合键的位置。很明显,在按键数量较多的场合,矩阵式键盘与独立式键盘相比,要节省很多的I/O口。本次设计中对于控制要求不高,所以我们使用4*4矩阵键盘来作为输入,完全可以满足要求,若使用PS2键盘,不仅编程麻烦,成本也高,所以舍弃。2.5AD电路选择方案一:选择TLC2543TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。由于是串行输入结构,能够节省51系列单片I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。TLC2543特点:·12位分辩率A/D转换器;·在工作温度范围内10μs转换时间;·11个模拟输入通道;·3路内置自测试方式;·采样率为66kbps;·线性误差±1LSBmax;·有转换结束输出EOC;·具有单、双极性输出;·可编程的MSB或LSB前导。方案二:选择ADC0809ADC0809是8位、逐次逼近式A/D转换芯片,具有地址锁存控制的8路模拟开关,应用单一+5V电源,其模拟量输入电压的范围为0~-5V,对应的数字量输出为00~FFH,转换时间为100us,无需调零或调整满量程。综合来说,我们选择ADC0809,首先他的精度完全可以满足我们的需要,其次这种芯片我们用过不少次,也比较熟悉,做起来比较有把握,第三,于12位AD相比编程简单,价格更加便宜,适合学生使用。ADC0809是8位、逐次逼近式A/D转换芯片,具有地址锁存控制的8路模拟开关,应用单一+5V电源,其模拟量输入电压的范围为0~-5V,对应的数字量输出为00~FFH,转换时间为100us,无需调零或调整满量程。ADC0809的内部结构框图如图2-2所示,本系统采用ADC0809构成A/D转换电路。ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近寄存器、三态输出锁存器等其它一些电路组成。因此,ADC0809可处理8路模拟量输入,且有三态输出能力,既可与各种微处理器相连,也可单独工作。输入输出与TTL兼容。由于ADC0809的片内无时钟,它的时钟频率在10KHZ—1280KHZ之间。可利用AT89C52提供的地址锁存允许信号ALE经D触发器二分频所得,ALE脚的频率是AT89C52单片机时钟频率的1/6。由于ADC0809具有输出三态锁存器,故其8位数据输出引脚可直接与数据总线相连。2.6温度采集电路选择温度采集的传感器上我们有两种选择,PT100与AD590。方案一:AD590AD590是美国ANALOGDEVICES公司的单片集成两端感温电流源,其输出电流与绝对温度成比例。在4V至30V电源电压范围内,该器件可充当一个高阻抗、恒流调节器,调节系数为1µA/K。片内薄膜电阻经过激光调整,可用于校准器件,使该器件在298.2K(25°C)时输出298.2µA电流。AD590适用于150°C以下、目前采用传统电气温度传感器的任何温度检测应用。低成本的单芯片集成电路及无需支持电路的特点,使它成为许多温度测量应用的一种很有吸引力的备选方案。应用AD590时,无需线性化电路、精密电压放大器、电阻测量电路和冷结补偿。除温度测量外,还可用于分立器件的温度补偿或校正、与绝对温度成比例的偏置、流速测量、液位检测以及风速测定等。AD590可以裸片形式提供,适合受保护环境下的混合电路和快速温度测量。AD590特别适合远程检测应用。它提供高阻抗电流输出,对长线路上的压降不敏感。任何绝缘良好的双绞线都适用,与接收电路的距离可达到数百英尺。这种输出特性还便于AD590实现多路复用:输出电流可以通过一个CMOS多路复用器切换,或者电源电压可以通过一个逻辑门输出切换。方案二:PT100PT100的工作原理:当PT100在0摄氏度的时候他的阻值为100欧姆,它的阻值会随着温度上升而成近似匀速的增长。但他们之间的关系并不是简单的正比的关系,而更应该趋近于一条抛物线。铂电阻的阻值随温度的变化而变化的计算公式:-200<t<0℃Rt=R0[1+At+Bt*t+C(t-100)t*t*t](1)0≤t<850℃Rt=R0(1+At+Bt2)(2)Rt为t℃时的电阻值,R0为0℃时的阻值。公式中的A,B,系数为实验测定。这里给出标准的DINIEC751系数:A=3.9083E-3、B=-5.775E-7、C=-4.183E-12根据韦达公式求得阻值大于等于100欧姆的Rt-〉t的换算公式:0≤t<850℃t=(sqrt((A*R0)^2-4*B*R0*(R0-Rt))-A*R0)/2/B/R0PT100温度感测器是一种以白金(Pt)作成的电阻式温度检测器,属于正电阻系数,其电阻和温度变化的关系式如下:R=Ro(1+αT)其中α=0.00392,Ro为100Ω(在0℃的电阻值),T为摄氏温度<br>因此白金作成的电阻式温度检测器,又称为PT100。1:Vo=2.55mA×100(1+0.00392T)=0.255+T/1000。2:量测Vo时,不可分出任何电流,否则测量值会不准。【2】由于有四个组做这个课题,我们想与他人选择尽量不同的传感器,PT100是电压型传感器,它的输出是电压范围,AD590是电流型,我们与其他小组探讨商量后决定使用PT100。它的工作原理:当PT100在0摄氏度的时候他的阻值为100欧姆,它的阻值会随着温度上升而成近似匀速的增长。但他们之间的关系并不是简单的正比的关系,而更应该趋近于一条抛物线。但是对于简单的处理中我们可以认为他在0-100度范围内近似于一条直线,方便我们运算.2.7控制电路选择在常用的控制方法中有两种:晶闸管控制和继电器控制。方案一:选择晶闸管控制当晶闸管承受反向电压时,不论门极是否有触发电流,晶闸管都不会导通;当晶闸管承受正向电压时,仅在门极有触发电流的情况下晶闸管才能导通;晶闸管一旦导通,门极就失去控制作用,不论门极触发电流是否还存在,晶闸管都保持导通;若要使已导通的晶闸管关断,只能利用外加和外电路的作用使流过晶闸管的电流降到接近于零的某一数值一下。方案二:选择继电器控制继电器室一种在其输入的物理量达到规定值时,其电气输入电路被接通或分断的自动电器。继电器按其输入量性质分为电气继电器和非电气继电器两大类。按其用途分为控制继电器盒保护继电器两大类。根据它们的特性和用途,还有本设计的特点,如果选用晶闸管他有有静态及动态的过载能力较差;容易受干扰而误导通,这对于控制精度影响不利。所以我们选择继电器作为控制元器件。,3系统硬件设计由于本次课程设计经费有限,只能在万用板上焊接并调试,所以我们画出电路图自己焊接,对于精确度,稳定性可能有一部分影响,但是总体上完成了实验要求。3.1系统硬件功能分析我们以STC89C52为核心控制器,包括传感器电路,键盘电路,显示电路、报警电路和控制电路5大模块,系统的详细结构框图,如下图所示。STC89C52内部没有A/D转换器,需要专门添加,这里使用的是ADC0809,传感器采集到的模拟信号经过放大,接着通过ADC0809转换成数字量送给单片机。单片机实时采集温度,通过数码管将当前温度显示出来,并根据采样结果控制继电器导通与关断来控制加热和降温;同时超过设定温度一到,蜂鸣器发出声音报警。3.2单片机最小系统设计最小系统主要由晶振电路和复位电路组成,在电路中要注意Vcc是电源,必须保证稳定可靠;管脚不可悬空,必须连到VSS,或者通过上拉电阻接到VSS;复位电路采用传统的RC复位,并多带一个复位按键,以方便操作;晶振的频点不是任意的,这里使用12MHz;注意:/PSEN管脚作悬空处理,不能接地,这和P89V51RD2的情况不同。复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤消复位信号。我们为了使用方面还增加了按键复位的功能。STC89C52的操作频率为0~40MHz,如前面所述,这里使用市场上常见的12MHz的晶振。单片机内含一个高增益的反相放大器,通过XTAL1、XTAL2外接作为反馈元件的晶体后便成为自激振荡器。晶体呈感性,与C4、C5构成并联谐振电路。振荡器的振荡频率主要取决于晶体。在应用时为了保证正常起振,振荡器的位置要最接近单片机,且连线要最短。外部振荡器电容C4和C5,用于振荡频率微调或振荡器匹配,并可用于调整起振时间,复位电路由C3和S1组成,为了防止抖动现象。他的参数如下1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051.2.工作电压:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)3.工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz4.用户应用程序空间为8K字节5.片上集成512字节RAM6.通用I/O口(32个),复位后为:P0/P1/P2/P3是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成一片8.具有EEPROM功能9.共3个16位定时器/计数器。即定时器T0、T1、T210.外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒11.通用异步串行口(UART),还可用定时器软件实现多个UART12.工作温度范围:-40~+85℃(工业级)/0~75℃(商业级)13.PDIP封装【3】3,3显示电路设计LED数码管显示有所用数码管是共阴管、还是共阳管,由数码转换为笔划信息借软件译码、还是硬件译码,以及显示扫描采用动态扫描、还是静态扫描等种种区别。采用共阴极数码管还是共阳极数码管没有太明显的优、缺点,然而与同一数码对应的笔划信息码往往是相互置反的关系。字符数据字与LED段码关系如表3-2。动态扫描各数码管是轮流点亮的,由于视觉的暂留现象,却好像都点亮着。实际控制数码管点亮的位选信号是依次逐一送出的,而各个数码管应显示数码的笔划信息则与其位选信号同时送给,于是各管将按序一一亮出自己的数码;待各管都轮到后,又再从头轮起,反复不已。对于动态扫描,轮到某管、等待该管点亮必须留给一段恰当的时间。时间过短,数码管来不及点亮;时间过长,其他数码管将熄灭、不能显示。静态扫描无位选信号,各数码管是同时点亮的;每个数码管应显示数码的笔划信息也分路同时送给。当选用共阴极的LED显示管时,所有发光二极管的阴极连在一起接地,当某个发光二极管的阳极加入高电平时,对应的二极管点亮。因此要显示某字形就应使此字型的相应段的二极管点亮,实际上就是送一个用不同电平组合代表的数据字来控制LED的显示,此数据称为字符的段码。数据字D7D6D5D4D3D2D1D0LED段DPgfedcba在这里我们由于硬件原因选择共阴极数码管。由于端口不够我们选择使用CD4511来减少段选的选择,使用CD4511后可以减少3个端口的使用,但是在使用过程受限,这样一来就无法显示如AC这样的字母,只能显示数字了,界面可能不好看,但是满足了要求。3.4温度检测电路设计我们使用的是二线式PT100,测温原理:电路采用200欧姆调节产生4.2V的参考电源;采用R7、R8、VR2、Pt100构成测量电桥(其中R7=R8,VR2为0-200欧姆电位器),当Pt100的电阻值和VR2的电阻值不相等时,电桥输出一个mV级的压差信号,这个压差信号经过运放op07放大后输出期望大小的电压信号(0-5V之间),该信号可直接连AD转换芯片。差动放大电路中R9=R13、R5=R17、放大倍数=R17/R13,运放采用正负12V供电。

设计及调试注意点:

1.同幅度调整R7和R8的电阻值可以改变电桥输出的压差大小;

2.改变R5/R3的比值即可改变电压信号的放大倍数,以便满足设计者对温度范围的要求

3.放大电路必须接成负反馈方式,否则放大电路不能正常工作

4.VR2也可为电位器,调节电位器阻值大小可以改变温度的零点设定,例如Pt100的零点温度为0℃,即0℃时电阻为100Ω,当电位器阻值调至109.885Ω时,温度的零点就被设定在了25℃。测量电位器的阻值时须在没有接入电路时调节,这是因为接入电路后测量的电阻值发生了改变。

5.理论上,运放输出的电压为输入压差信号×放大倍数,但实际在电路工作时测量输出电压与输入压差信号并非这样的关系,压差信号比理论值小很多,实际输出信号为

4.2*(RPt100/(R7+RPt100)-RVR2/(R8+RVR2))(1)

式中电阻值以电路工作时量取的为准。

6.电桥的正电源必须接稳定的参考基准,因为如果直接VCC的话,当网压波动造成VCC发生波动时,运放输出的信号也会发生改变,此时再到以VCC未发生波动时建立的温度-电阻表中去查表求值时就不正确了,这可以根据式(1)进行计算得知。【4】3.4AD转换模块设计AD我们采用ADC0809与74LS02(或非门)构成AD电路,具有自行启动使能端的作用。通过或非门的作用控制AD转换的启动和开始,在前段增加稳压二极管保证模拟电压输入稳定。AD工作原理如下IN0-IN7:8条模拟量输入通道ADC0809

对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。地址输入和控制线:4条ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。通道选择表如下表所示。CBA选择的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7数字量输出及控制线:11条ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,VREF(+),VREF(-)为参考电压输入。3、ADC0809

应用说明(1).

ADC0809

内部带有输出锁存器,可以与AT89S51单片机直接相连。(2).初始化时,使ST和OE信号全为低电平。(3).送要转换的哪一通道的地址到A,B,C端口上。(4).在ST端给出一个至少有100ns宽的正脉冲信号。(5).是否转换完毕,我们根据EOC信号来判断。(6).当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。【3】3.5温度控制系统设计通过继电器控制外接电器,但是由于该处电流不够,无法直接驱动继电器,所以我们使用三极管加大电流,保证继电器工作。电磁继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”。继电器一般有两股电路,为低压控制电路和高压工作电路。在电路中我们使用固态继电器看,固态继电器是一种两个接线端为输入端,另两个接线端为输出端的四端器件,中间采用隔离器件实现输入输出的电隔离。固态继电器按负载电源类型可分为交流型和直流型。按开关型式可分为常开型和常闭型。按隔离型式可分为混合型、变压器隔离型和光电隔离型,以光电隔离型为最多。【5】我们在这里使用的是有一个交流,一个直流。因为我们要控制一个交流的电吹风和一个简单的直流小电扇。如图P34口控制直流小电扇,当温度低于下限温度是启动继电器打开小电扇,当进入设定温度范围内关闭小电扇,同理P35工作原理也一样,在这里要注意电器的电源必须外接,如果使用单片机电源的话对电路有非常大的影响。3.6报警模块设计我们设计的报警电路较为简单,蜂鸣器报警电路由三极管和蜂鸣器组成。要在蜂鸣器两端加上超过5V的电压,在我们所要求的温度达到一定的上界或者下界时,蜂鸣器就会叫个不停,由单片机I/O口输出信号控制晶体管的导通或截止,,则蜂鸣器报警。通过单片机来控制蜂鸣器产生报警声音。但是也要注意,电流不够无法驱动蜂鸣器,所以我们使用三极管来放大电流。并且要结合端口特性来使用,如P31口启动就是高电平,所以我们外加了5V电压这样达到他启动时不响的效果。三极管我们使用PNP型8550型号。3.7键盘输入模块设计我们使用4*4矩阵键盘,八位并行接至P2口,扫描键盘读出键值,再继续其他操作。使用了矩阵键盘行扫描法行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,如上图所示键盘,介绍过程如下。1、判断键盘中有无键按下将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。2、判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。当我们按下A键时,就进入设置上限温度,这是也可以看到初始的上限温度。同理B为设置下限温度,C为设置设定温度。4系统软件设计4.1主程序分析 由需要的功能,构建出如下程序框图:再按照程序框图,分模块进行设计。4.2显示模块分析将tmp温度赋予局部变量tempture,将两位数温度的个位和十位分别赋值给两个变量,然后利用显示和循环进行显示,分别对P1口进行赋值,再通过位选进行数码管点亮位置的选择,中间加上合适的延时函数,使数码管显示保持在一个不太闪,又不会让人看不清的程度。4.3AD转换模块分析AD启动有两种方式:中断和查询。我们组利用的是中断方式来启动ADC0809。在程序开始时,定义一个中间变量Amp,用于存放AD转换的数据,方便处理,然后令EA=0关闭中断。令P3^0=0的原因是,我们组硬件连接AD方式使START,EOC,EN,ALE都会进行自行判断,连接或非门之后利用单片机的WR和RD两脚的电平刚好能使ADC0809正常工作,这个连接方式需要的就是令P30一直维持在低电平。进入循环之后,数组用于存放当前AD采样得到的二进制数据,将中间变量Amp清零。接下来进入if循环之后将每次得到的二进制数据累加放入Amp之中用于取平均值,求取平均值之后,Amp还是一个二进制数,因为我们采样电路中电压与温度的关系是:13V=T,那么,我们乘以一个量化单位5/256,就可以得到十进制数,再将十进制数调零后存放入全局变量tmp中。4.4键盘输入模块设计该模块以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,即关闭两个电器。当结果在上下限温度之外时,再对温度和下限值对比,从而判断出温度是过高还是过低,发现过高时,打开风扇,执行降温工作,当发现温度过低时,打开电吹风进行加热工作。然后温度渐渐靠近控制温度,当进入上下限温度时,报警停止,当温度在控制温度上下1摄氏度时,风扇以及电吹风停止工作,将温度保持在一个较为恒定的值上。5实习结果本次实习基本完成了所有功能的实现,通过调节电位器可以达到测量0-99度的温度测量,并且可以通过键盘设置上限下限和保持值,可以自动调节精度在1C之内,测量精度在1C左右,基本完成了实习要求。主要电路部分控制电路部分6总结与鸣谢在这次实验中我们遇到了许多问题,几乎所有模块都出现或多或少的问题,比如一开始我们数码管接到P0口,但是由于没有接上拉电阻,导致显示模块使用不了,查询书后我们知道了P0口作为信号输出必须接上拉电阻,我们才得以完成。但是后来发现我们的AD使用功能又不对,我们就把数码管接到了P1口,AD接P0口,这样的修改电路才完成了功能,这对我们是一次挑战,也是一种锻炼。模拟电路方面由于芯片和电阻等的精确程度不太高,导致了整体电路的精确度也不是很高,但是作为基本的测温功能是完全可以满足的。在焊接方面我们用了很多功夫,很多地方一开始无法下手,但是只要走出第一步,后面就是很简单的了。我们的在调试过程中AD芯片也出现了问题,我们查询引脚,测电平,时钟,都是正常的,但是使能端EOC就是始终低电压,信号始终输入不进单片机,查询一下午都没有找到结果,就在我们快要放弃的时候,我们换了一块芯片,结果就成功了,这对我们是一个教训,有时候不一定是电路问题,硬件的好坏是一个隐藏的条件,在所有的调试中我们都继续按照这个想法进行,先测硬件好坏,再测电路。控温电路我们也出现了问题,对于继电器控制的电器我们发现不能将继电器使用电压与电器电压相连否则就会出现跳闸的现象,时开时断,这也是我们实习的经验。在软件方面,尤其是AD模块的编程出现了许许多多的问题。我们是参考宋恒力老师的开发板上的AD采样电路来制作的我们的电路,但是在编程过程中,我们忽略了宋老师的开发板上市硬件与软件相结合的程序,是利用52单片机的数据总线和地址总线来进行扩展I/O口的变成。利用单片机自身的RD和WR两个引脚在输入输出时的高低电平来形成一个自行判断的系统,硬件与软件结合的十分巧妙。本次实习我们学习到了很多,更多的是团队合作,大家分工,做硬件,软件,再一起调试,这是我们宝贵的财富。在这里尤其要感谢指导老师薛伟,薛老师给我们的电路,使用方面提出了非常宝贵的意见,帮助我们修正了很多错误,非常感谢薛老师的帮助,还要感谢李国,张旭两位同学,在我们整个实习过程中,我们许多地方都弄的不是很清楚,但是两位同学都不遗余力的给我们提供帮助,无论是硬件检查,硬件更换,软件修正,都给我们提出了许多宝贵的意见,这是我们实习过程中感受到的朋友情谊,更是人生美好的经历。再次感谢薛伟老师和李国,张旭。希望在今后的学习中再接再厉,做到更好参考文献【1】李广地,单片机基础,北京航空航天出版社。【2】罗文广吴彤峰《传感器技术》2003。【3】百度百科STC89C52芯片参数。【4】蔡彬彬包亚萍陶卉金自强基于PT100测温,《微计算机信息》2008第10期【5】黄正,浅谈固态继电器的使用,《电子质量》2000第7期附录1附录2#include<reg52.h>#include"intrins.h"#include<math.h>#include<absacc.h>#defineADC0809XBYTE[0xfdff]/*P21=0*/#defineN8/*测量次数*/unsignedinttmp;unsignedcharADValue;unsignedcharMeasure[N]=0;unsignedcharCounter1=15;unsignedcharKey; //键值intnum_key; //输入数值intht,ht1,ht2,lt,lt1,lt2,ct,ct1,ct2;intdown;unsignedcharcodevalue[16]={0x77,0x7b,0x7d,0x7e,0xb7,0xbb,0xbd,0xbe,0xd7,0xdb,0xdd,0xde,0xe7,0xeb,0xed,0xee};sbitP1_4=P1^4;sbitP1_5=P1^5;sbitP1_6=P1^6;sbitP1_7=P1^7;sbitP3_4=P3^4;sbitP3_5=P3^5;sbitP3_1=P3^1;sbitP3_0=P3^0;/*************************************延时函数*******************************/voidDly_mS(unsignedintms){unsignedinti;while(ms--)for(i=0;i<75;i++);}/***********************************AD启动函数*******************************/voidADStart(){EX1=1;//开外部中断1ADC0809=0;//启动AD}/*********************************************************************/voidIniSys(){Dly_mS(200);EA=0;TCON=0x00;//中断标志清0IT1=0;//中断1边缘触发EX1=0;//中断1暂时关闭EA=1;//开中断}/*********************************LED显示实时温度*******************************/voiddisplay(inttempture){unsignedchart1,t2; t1=tempture/10; t2=tempture-t1*10; P1=t1;P1_4=1; P1_5=1; P1_6=0; P1_7=1;Dly_mS(15); P1=t2;P1_4=1; P1_5=1; P1_6=1; P1_7=0;Dly_mS(15);}/***********************************AD转换函数*******************************/voidADResult()interrupt2{unsignedintAmp=0; unsignedchari;EA=0;//关中断IE1=0;//中断请求清0 P3_0=0; Counter1++;ADValue=ADC0809; for(i=N-1;i>0;i--){Measure[i]=Measure[i-1];}Measure[0]=ADValue; Amp=0; if(Counter1>=8) { for(i=0;i<N;i++) {Amp=Amp+Measure[i]; } Amp=Amp/N;//测量8次求平均 Amp=Amp*65/256;//算出电压的13倍,用于显示 tmp=Amp+3;//转换为8位 }EA=1;//开中断 EX1=0;//关外部中断}/**************************************************************/voiddelay(){unsignedintn;n=1000;while(n--);}voidup() //扫描按键是否松开{ unsignedcharP2buf=0x0f; while(P2buf!=0) { P2=0x0f; delay(); P2buf=P2; P2buf=P2buf-0x0f; } down=1; } voidkey_on(){ unsignedcharP2buf; down=1; P2=0x0f; delay(); P2buf=P2; if(P2buf==0x0f) down=1; else down=0;}voidin(){unsignedcharP2buf,scan,j; P2=0x0f;P2buf=P2;if(P2buf!=0x0f){P2=0xf0;scan=P2buf;P2buf=P2;scan=scan+P2buf; for(j=0;j<16;j++){if(value[j]==scan){Key=j;break;}}}}voidnumber(){ switch(Key) { case0:num_key=1;break; case1:num_key=2;break; case2: num_key=3;break; case4: num_key=4;break; case5: num_key=5;break; case6: num_key=6;break; c

温馨提示

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

评论

0/150

提交评论