数字湿度检测控制装置课程设计论文_第1页
数字湿度检测控制装置课程设计论文_第2页
数字湿度检测控制装置课程设计论文_第3页
数字湿度检测控制装置课程设计论文_第4页
数字湿度检测控制装置课程设计论文_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、 .PAGE31 / NUMPAGES34 .课程设计任务书题目数字温湿度检测控制装置 专业学号主要容、基本要求、主要参考数据等:主要容:查阅与课题设计容相关的科技文献数据;熟悉数字温度检测控制装置的结构、功能和工作过程;确定系统硬件与软件设计方案;进行电气原理图的绘制和微控制器部程序的编写; 完成课程设计说明书一份。基本要求:1、设计方案符合课题要求、结构严谨、功能完善;2、系统结构模型绘制规、标注简约明确;3、系统控制电气原理图绘图准确、布局合理;4、微控制器部程序主要功能基本调试通过;5、课程设计说明书严格按照“课程设计报告撰写格式”书写。主要参考数据1、单片微型计算机原理与应用,电子科

2、技大学,毅坤主编;2、单片机原理与接口技术,邮电大学,马淑华等编着;3、现代传感器集成电路,人民邮电,负图主编;4、单片机典型外围器件应用实例,人民邮电,科技编着。完成期限:2011年12月19日-2012年1月9日指导教师签名:课程负责人签名:目录1概述11.1设计题目的意义与简介11.2系统组成总体结构12系统硬件设计22.1单片机最小系统设计22.1.1单片机选择22.1.2时钟电路设计22.1.3复位电路设计22.2温度采集电路设计22.2.1 AD590温度传感器22.2.2测温电路的设计2.2.3 信号调整电路2.3LED显示22.4 键盘接口2.5控制电路3系统软件设计3.1程序

3、初始化3.2主程序3.3 A/D转换子程序3.4 标度转换子程序3.5 显示子程序3.6控制子程序3.7 键盘子程序4结论参考文献附录A 系统硬件原理图附录B程序清单摘要本次设计是采用单片机中的STC89C52和DHT11构成的低成本的湿度的检测控制系统。单片机STC89C52是一款有强大的功能、低消耗,高效率的单片机,因此在很多领域都是用它。DHT11是一款复合型温湿度传感器,并且含有以校准好的数字输出。,DHT11传感器包括一个电阻式感湿原件和一个NTC测温元件,该产品具有超快响应、品质卓越、抗干扰能力强、性价比极高等优点。本设计主要包括系统软件的设计和硬件电路的设计。 硬件电路主要包括单

4、片机、湿度传感器、显示模块、报警器以与控制设备等5部分。其中由DHT11温湿度传感器与1602字符型液晶模块构成系统显示模块;用户根据需要预先输入预设值,当实际测量的温湿度不符合预设的温湿度标准时,发出报警信号(蜂鸣器蜂鸣),动相应控制。 软件部分包括了主程序、显示子程序、测湿度子程序。关键词:STC89C52; DHT11; 湿度传感器。 1.概述1.1设计题目的意义与简介随着生活的不断发展,人们对环境的要求也不断的提高,居住的环境成为人们关心的话题。为了满足人们对适宜适宜环境要求,设计一种低成本、高性能、简单、便于提醒和控制湿度的装置。人们可以根据季节和天气的需要进行湿度的调节,使人居住在

5、一个更加舒适的环境。此设计不仅可以应用到家庭中,也可应用到工厂中,这样大大减少了看护和相应的人工费用。此设计有点在于成本低,操作简单、相应快,并且当超出人们设定值时可自动报警。1.2系统组成总体结构本次的数字湿度控制器主要是由单片机系统组成,其系统组成框图如图1-1所示。湿度采集A/D转换单片机显示反馈信号处理图1-1 系统总体框图其工作流程为湿度传感器采集湿度信号,湿度信号被信号转换器转换成系统所能识别的电信号,采集信号被送入单片机后经过单片机的控制进行分析整理,根据设定值进行湿度调节,再经过湿度反馈环节做进一步调整。2.系统硬件设计2.1单片机最小系统设计2.1.1单片机选择STC89C5

6、2是一种带8K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,stc的stc89c52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。STC89C52引脚如图所示图2-1 STC89C52单片机引脚2.1.2时钟电路设计单片机是在统一的脉冲信号控制下工作的。这个脉冲就是时钟电路产生的。时钟电路选择晶振为12Mhz,两个电容选择60pf作为CPU的部时钟电路,其电路图如下所示:图2-2 由晶

7、振构成时钟电路2.1.3复位电路设计复位电路可以让单片机初始化,也可以使死机状态下的单片机重新启动,因此非常重要。该设计采用的是按键复位和上电自动复位电路。这样图2-3 上电复位电路使用起来比较方便,即每当CPU通电时,CPU自动进行复位操作。省去了人工操作的繁琐,当程序跑飞时,可以手动复位,按下按键后,使RESET端产生高电平,电路设计如图2-3(其中电阻为1K,电容为22uf)2.2温度采集电路设计2.2.1 AD590温度传感器温度采集元件采用AD590温度传感器,AD590 是美国模拟器件公司生产的单片集成两端感温电流源。AD590具有线性优良、性能稳定、灵敏度高、无需补偿、热容量小、

8、抗干扰能力强、可远距离测温且使用方便等优点。可广泛应用于各种冰箱、空调器、粮仓、冰库、工业仪器配套和各种温度的测量和控制等领域。AD590是电流型温度传感器,通过对电流的测量可得到所需要的温度值。其电路外形如图2-4所示,它采用金属壳3脚封装,其中1脚为电源正端V;2脚为电流输出端I0;3脚为管壳,一般不用。集成温度传感器的电路符号如图2-5所示。图2-4 AD590封装形式 图2-5 集成温度传感器电路符号AD590的主特性参数如下:工作电压:430V。工作温度:55150。正向电压:44V。反向电压:20V。 输出电阻为710MW。 精度高。AD590共有I、J、K、L、M五档,其中M档精

9、度最高,在-55+150围,非线性误差为0.3。AD590的工作原理:在被测温度一定时,AD590相当于一个恒流源,把它和530V的直流电源相连,并在输出端串接一个1kW的恒值电阻,那么,此电阻上流过的电流将和被测温度成正比,此时电阻两端将会有1mVK的电压信号。2.2.2测温电路的设计在设计测温电路时,首先应将电流转换成电压。由于AD590为电流输出元件,它的温度每升高1K,电流就增加1A。当AD590的电流通过一个10kW的电阻时,这个电阻上的压降为10mV,即转换成10mVK,为了使此电阻精确,可用一个9.6kW的电阻与一个1kW电位器串联,然后通过调节电位器来获得精确的10kW。图2-

10、6所示是一个电流电压和绝对摄氏温标的转换电路,其中运算放大器A1被接成电压跟随器形式,以增加信号的输入阻抗。而运放A2的作用是把绝对温标转换成摄氏温标,给A2的同相输入端输入一个恒定的电压(如1.235V),然后将此电压放大到273V。这样,A1与A2输出端之间的电压即为转换成的摄氏温标。图2-6 绝对摄氏温标转换电路将AD590放入0的冰水混合溶液中,A1同相输入端的电压应为2.73V,同样使A2的输出电压也为2.73V,因此A1与A2两输出端之间的电压:2.732.730V即对应于0。2.2.3 信号调整电路单片机处理的信号是数字信号,因此,在送往单片机处理之前应对该信号进行放大转换。本系

11、统所采用的A/D转换器为ADC0809,由于ADC0809的输入信号应在05V之间,因此,经过放大电路放大的信号进入A/D转换器的电压信号应控制在05V之间,根据此原则可设计合适的放大倍数。信号调整电路主要由运算放大器0P07等组成。为了使温度检测电路的输出电压能够适合于A/D转换器的参考电压,利用超低温漂移高精度运算放大器0P07将温度电压信号进行放大到05V的围之,便于A/D进行转换,以提高温度采集电路的可靠性。本设计中,信号调理电路部分由集成运放OP07分别构成一个电压跟随器,电压比较器和一个同相输入放大器用于对AD590输出的小电压信号进行放大处理。信号调整电路如图2-7所示在该放大电

12、路中,电压跟随器起阻抗匹配的作用。反馈电阻为零时,放大倍数为1,电压跟随器的输入电压等于输出电压。电压比较器用于对输出电压小信号电压进行调零,在上述电路图中的电压比较器部分由于R2=R4 R3=R5 可得电压比较器的输出电压 根据电压跟随器的输出电压调节电位计R9就改变电压比较器的输入电压。使得当温度为温度测量下限时电压比较器的输出电压为零。起放大作用的是同相输入放大器OP07。其放大倍数:因此放大器的输出电压ADC0809是一种8位逐次逼近式A/D转换器,其部有一个8位“三态输出锁存器”可以锁存A/D转换后的数字量,故它本身既可看作一种输入设备,也可以认为是并行I/O接口芯片。故ADC080

13、9可以和微机直接接口,本设计就是用8051和ADC0809直接相连的。AT89C51与ADC0809的连接方法如图2-8所示,AT89C51通过地址线P2.7和写控制信号线用一个或非门联合控制启动转换信号端(START)和地址锁存信号端(ALE)。地址线P2.7和读控制信号线用一个或非门联合控制输出允许控制端(EOC)。低三位地址线加到ADC0809的ADDA、ADDB、ADDC端,所以选中ADC0809的IN0通道的地址为7FF8H。转换结束信号EOC通过一个反相器接到INT1。图2-8 AT89C51与ADC0809连接图AT89C51和ADC0809连接通常可以采用查询和中断两种方式。本

14、系统采用中断方式传送数据,EOC线作为CPU的中断请求输入线。CPU线响应中断后,应在中断服务程序中使OE线变为高电平,以提取A/D转换后的数字量。对ADC0809地址的确定:根据系统硬件连接图可知所选定模拟电压路数为IN0,其对应的地址为ABC=000,即P0.0、P0.1、P0.2=0 0 0;又P2.7=0时才能启动ADC0809工作和使AT89C51从ADC0809接收A/D转换电压的数字量。故确定ADC0809其中一个地址为: 0111 1111 1111 1000B=7FF8H ,其中“_ ”表示固定量。ADC0809的IN0和变送器输出端线连,故IN0上输入的0V5V围的模拟电压

15、经A/D转换后可由AT89C51通过程序从P0口输入到它的部RAM单元。ADC0809所需时钟信号可以由AT89C51的ALE信号提供。AT89C51的ALE信号通常是每个机器周期出现两次,故它的频率是单片机时钟频率的1/6。本系统AT89C51主频是12MHZ,ALE信号频率为2MHZ,使AT89C51的ALE上信号经过4分频后接到ADC0809的CLOCK输入端,就可获得500KHZ的A/D转换脉冲,当然,ALE上脉冲会在MOVX指令的每个机器周期少出现一次,但通常情况下影响不大。为了给OE线分配一个地址,把AT89C51RD和P2.7经或门和OE相连。平时,使OE处于低电平封锁状态,在响

16、应中断后,AT89C51执行中断服务程序中如下两条指令就可以使OE变为高电平,从而打开三态输出锁存器,让CPU提取A/D转换后的数字量。AT89C51执行如下程序可以启动ADC0809工作。MOV DPTR , # 7FF8H MOVX A , DPTR; OE变为高电平,数字量送A2.3LED显示本设计显示采用LED串行静态显示。MCS-51系列单片机的串行口RXD,TXD为一个全双工串行通信口,当工作在方式0下可作同步移位寄存器用,其数据由RXD(P3.0)端串行输入或输出;而同步移位时钟由TXD(P3.1)串行输出,在同步时钟的作用下,实现由串行到并行的数据通信。在不需要使用串行通信的场

17、合,利用串行口加外围芯片74LS164就可以构成一个或多个并行输入/输出口,用于显示器LED驱动。波特率(每秒传输的位数)固定在fosc/12,即当晶振为12MHZ时,波特率为1MBPS。在CPU将数据写入SBUF寄存器后,立即启动发送。待8位数据输完后,硬件将状态寄存器的TI位置1,TI必须由软件清零。单片机与4片串入并出移位寄存器74LS164相连。其中,RXD作为164的数据输入,TXD作为4片164的同步时钟。程序运行时,单片机将4个数码管的段码(4个字节)连续发送出来,通过串行口送给164。4位字型码送完后,TXD保持高电平。此时每片164的并行输出口将送出保存在部移位寄存器中的8位

18、的段码给数码管,令数码管稳定地显示所需的字符。74LS164是8位串入并出移位寄存器。A、B为串行输入端,QAQH为串行输出端,CLK为串行时钟输入端,为串行输出清零端,VCC为+5V电源输入端,GND为接地端。具体输入输出关系如表2-1所示。X代表任意状态;QA0、QB0QH0代表在稳态输入条件建立之前QA、QBQH的输出状态;QAn、QBnQHn代表在最近的时钟上升沿转换之前QA、QBQH的输出状态;H/L、QAnQBn代表在最近的时钟上升沿转换之后QA、QBQH的输出状态。表2-1 74LS164输入输出关系如所示输入输出清除 时钟 A BQA QB QHL X X XH L X XH

19、H HH L XH X LL L LQA0 QB0 QH0H QAn QGnL QAn QGnL QAn QGn图2-9 74LS164引脚如图串行显示电路属于静态显示,比动态显示亮度更大一些。由于74LS164在低电平输出时,允许通过的电流达8mA,故不必添加驱动电路,亮度也比较理想。与动态扫描相比较,无需CPU不停的扫描,频繁地为显示服务,节省了CPU时间,软件设计也比较简单。由于本设计采用的是共阳极数码管,所以相应的亮段必须送0,相应的暗段必须送1。原理图如图2-10所示:图2-10 LED串行静态显示2.4 键盘接口键盘的工作方式选取的原则是:既要保证能与时响应按键的操作,又不过多的占

20、用CPU的工作时间。键盘的工作方式有:查询方式(编程扫描,定时扫描方式)、中断扫描方式。独立式按键接口就是各按键相互独立,每个按键单独占用一根I/O口线,每根I/O口线的按键工作状态不会影响其他I/O口线上的工作状态。因此,通过检测输入线的电平状态可以很容易判断哪个按键被按下了。优点就是电路配置灵活,软件结构简单;缺点就是每个按键需占用一根I/O口线,在按键数量较多时,I/O口浪费大,电路结构显得复杂。因此,此键盘是用于按键较少或操作速度较高的场合。本设计中由于所用键盘不多,所以采用独立连接式的查询式键盘就能够满足设计要求。在本次设计中采用了软件扫描的方法。通过对键盘接口P1.0和P1.1的查

21、询判断是否有键按下。本次设计采用了软件去抖动的方法。当有键按下时,按键的触点在闭合和断开时均会产生抖动,这时触点的逻辑电平是不稳定的,如果不妥善处理,将会使按键命令的错误执行和重复执行。采用软件延时的方法来避开抖动阶段,这一延时过程一般大于5ms。2.5控制电路在本设计中,被测温度信号经采样处理后,还需要通过单片机系统的P1.2口输出用以控制温度,控制的方式主要有模拟量控制和开关量控制。本系统采用的是开关量控制。所谓的开关量控制就是通过控制设备的“开”或“关”状态的时间来达到控制的目的。由于输出设备往往需要大电压来控制,而单片机系统输出的为TTL电平,这种电平不能直接驱动外部设备的开启和关闭。

22、另一方面,许多外部设备在开关过程中会产生很强的电磁干扰信号,如果不隔离会使系统进行错误的处理。因此在开关量的输出控制过程中要考虑到两个问题,一要隔离;二要放大。本设计采用继电器作为控制电路的主要器件,继电器具有一定的隔离作用,在继电器前面加一个三极管用以放大输出信号就可以驱动继电器的闭合和断开,从而实现弱电控制强电的效果。固态继电器和MCS-51系列单片机组成的控制系统, 具有抗干扰性强、编程简单、系统兼容性好等特点。继电器一般由通电线圈和触电组成。当线圈通电时,由于磁场作用,使开关触电闭合。当不通电时,则开关触点断开。一般线圈可用直流低电压控制(+5V,+9V,+12V)。继电器的特性参数包

23、括输入和输出参数,主要的参数为额定输入电压、额定输出电流、浪涌电流。根据输入电压参数值大小,可确定工作电压大小。如采用TTL或CMOS等逻辑电平控制时,采用有足够带载能力的低电平驱动,并尽可能使“0”电平低于0.8V。本设计就是采用直流驱动电压为+5V的继电器。触电输出部分可以直接与市电连接。继电器控制电路如图2-11所示。2-11 继电器控制电路3.系统软件设计本次单片机温控系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。系统软件的功能又可分为两大类:一是监控软件,它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件,它是用来完成各

24、种实质性的功能如测量、显示等功能。本系统程序设计包括温度采集子程序、显示子程序、标度转换资程序、键盘子程序、控制子程序。程序流程图如图3-1所示。开始初始化温度参数采样当前温度当前温度和设定温度送显示缓冲设定温度-当前温度继电器闭合继电器断开维持状态读键盘键值?向上键向下键设定温度减1设定温度加1无键按下 小于等于-2 大于等于2图3-1 系统流程图3.1程序初始化程序初始化部分根据系统硬件原理图与设计要求对单片机系统进行系统资源分配、参数的设置以与定义。系统部资源分配和参数设置如下:A/D端口地址(ADPORT): 7FF8H显示缓冲起始地址:(LEDBUF): 30H段码存储起始地址(TE

25、MP): 40H设定温值存储地址(SETTEMP): 50h测量温度存储地址(CURTEMP):51H温度设定上限(HIGHLIMIT): 80温度设定下限(LOWLIMIT): 25温度测量上限(HIGHTEMP) 107温度测量下限(LOETEMP) 21初始化程序代码如下:ADPORT EQU 7FF8H ;A/D端口地址LEDBufequ 30H ;显示缓冲TEMPEQU 40H ;段码存储UP equ 1 ;增温DOWN equ 2 ;减温LowLimit equ25;设定值下限HighLimit equ 80 ;设定值上限LowTemp equ 21 ;A/D 0HighTemp

26、equ 107 ;A/D 255SetTemp equ 50h ;设定温值CurTemp equ 51h ;测量温度DINBIT0B0H ;P3.0CLKBIT0B1H ;P3.1 ORG 0000Hljmp Start3.2主程序主程序代码如下:Start:mov SetTemp, #20 ;初始恒温值为20MLoop:call TestKey ;测试有无键入jnz KeyPressed ;更改设定值call DisplayResult ;数制转换call DisplayLED ;显示call ReadTemp ;读入温度CONTROL: ;控制子程序KeyPressed: ;键盘子程序EN

27、D3.3 A/D转换子程序根据系统硬件连接图可知,在系统中将ADC0809作为一个外部扩展并行I/O口,采用线选寻址。由P2.7和联合控制启动转换信号端(ATART)和ALE端,低三位地址线架到ADC0809和ADDA,ADDB,ADDC端,所以选中ADC0809的IN0通道的地址为7FF8H。启动DAC0809的工作过程是:先送通道号地址到ADDA,ADDB,ADDC,由ALE信号锁存通道号地址,后让ATART有效,启动A/D转换,即执行一道“MOVX DPTR ,A”指令产生信号,使ALE,START有效,锁存通道号并启动A/D转换,A/D转换完毕后,EOC端发出一正脉冲,申请中断。 在中

28、断服务程序中,“MOV A , DPTR”指令产生信号,使OE端有效,打开输出锁存器三态门,8位数据便读入到CPU中。A/D转换子程序代码如下:ReadAD:mov dptr,#ADPORTclr amovx dptr,a ;start A/DJNB P3.3,$MOVX A, DPTR ;读入结果ret3.4 标度转换子程序系统温度测量围的计算原理:根据温度标定结果选取两个温度状态T1 T2,模拟输出电压V1 V2;根据0809的输入围在0到5伏,即可计算出温度极限。计算公式如下:0伏时对应的温度TL:T1-(V1-0)(T2-T1)/(V2-V1)5伏时对应的温度TH:T1-(V1-5)(

29、T2-T1)/(V2-V1)根据所得结果采用在温度为50和60下所测量的电压输出1.6V和2.2V为计算温度测量围的参数,根据上式可得:TL=50-(1.68-0)(50-40)/(2.26-1.68)=21TH=50-(1.68-5)(50-40)/(2.26-1.68)=107所以A/D转化的极限围为21-107之间,而根据系统要求温度的控制围为25-80之间,符合系统要求。程序中温度的计算原理:首先用温度围除以0到256(即每个十六进制数的温度增长率),然后乘以模拟转换的数字量,即得到升高的温度,再和最低温度相加,就可以得到实际的温度值。其公式为:TL+AX(TH-TL)/256TL:显

30、示的最低温度TH:显示的最高温度AX:模拟电压所转换的数字量标度转换代码如下:ReadTemp:call ReadADmov b, #(HighTemp-LowTemp) ;温度值计算mul abmov a,b ; /256add a,#LowTempmov CurTemp,aret3.5 显示子程序显示模块包括数制转换和LED串口静态显示两部分。显示容包括当前温度和设定温度两个参数。在数制转换程序中将十六进制数的数据转换为十进制数数据,各分为十位数和个位数。在编写显示程序时,先送高位再送低位。显示模块程序流程图如图3-2所示数制转换子程序代码如下:DisplayResult:mov a,Cu

31、rTemp ;实际值mov b,#10div abmov dptr,#LEDMAP ;显示码首址movc a, a+dptr ;取显示码mov LEDBuf,a ;存显示缓冲mov a, bmovc a,a+dptrmov LEDBuf+1, amov a,SetTemp ;设定的恒温值 mov b,#10div abmov LEDBuf+2, Amov a, bmov LEDBuf+3, Aret显示子程序代码如下:DisplayLED: ;显示子程序MOV R0,#LEDBUF ;置存储区首地址MOV R1,#TEMP ;置缓冲区首地址MOV R2,#4 ;制段码字节数DP10:MOV D

32、PTR, #LEDMAP ;表头地址MOV A,R0MOVC A,A+DPTR ;查表指令N地址指针设置取段码段码左移一位输出一位段码输出一个移位脉冲N开 始取段码结束取段码结束YYMOV R1,AINC R0INCR1DJNZ R2 , DP10MOV R0,#TEMP ;段码地址指针MOV R1,#4 ;段码字节数DP12:MOV R2,#8 ;输出子程序MOV A,R0 ;取段码DP13:RLC A ;段码左移图MOV DIN,C ;输出一位段码CLR CLK ;输出移位脉冲SETB CLKDJNZ R2,DP13INC R0DJNZ R1,DP12 图3-2 显示流程RET 3.6控制

33、子程序本设计采用P1.2作为输出控制口。当设定温度比当前温度高2以上时,P1.2置1,使其输出高电平,用以驱动继电器,使继电器闭合,保温箱开始加热。当设定温度比当前温度低2以下时,P1.2置零,使继电器断开,保温箱停止加热。CONTROL:mov a,CurTemp ;实际温度clr cmov b, SetTemp ;设定的恒温值dec bdec bsubb a, b ;实际值-(恒温值-2)jnc GN2 ;判断实际值是否比恒温值低2Setb p1.2;是,开始加热sjmp GN4GN2: mov a,CurTempsetb cmov b, SetTempinc binc bsubb a,

34、bjc GN4 ;判断实际值是否比恒温值高2CLR P1.2 ;是,停止加热sjmp GN4 GN4: CALL DELAY1sjmp MLoopDELAY1: ;延时子程序1MOV R4,#0FFHAA1: MOV R5,#0FFHAA: NOPNOPDJNZ R5,AADJNZ R4,AA1RET3.7 键盘子程序按键的触点在闭合和断开时均会产生抖动,这时触点的逻辑电平是不稳定的,如不妥善处理,将会使按键命令的错误执行或重复执行。在这里采用软件延时的方法来避开抖动阶段,这一延时程序一般大于5ms。在第一次检测到有键按下时,执行一段延时子程序后,再确认电平是否仍保持闭合状态电平,如果保持闭合

35、状态电平,则确认真正有键按下,进行相应处理工作,消除了抖动的影响。这种消除抖动影响的软件措施是切实可行的。键盘子程序程序代码如下:TestKey: ;测试有无键入子程序MOV P1, #03H ;读键盘情况MOV A, P1 RETKeyPressed:call GetKeymovb,axrla,#DOWNjnz Key0 ;判断是否减小键mov a,SetTempxrl a, #LowLimitjz Key1 ;判断是否低于下限值dec SetTempsjmp Key1Key0: mov a, bxrl a,#UPjnz Key1 ;判断是否增加键mov a,SetTempxrl a, #H

36、ighLimitjz Key1 ;判断是否高于上限值inc SetTempKey1: sjmp MLoop KeyTable: ;键码定义DB 0EEH,0DEH,0BEH,07EHDB 0EDH,0DDH,0BDH,07DHDB 0EBH,0DBH,0BBH,07BHDB 0E7H, 0D7H, 0B7H, 077H GetKey: ;取键值MOV R6,#10ACALL DELAYMOV A,P1anl a,#03h ;高六位不用CJNE A,#03H,K01 ;确有键按下LJMP MLOOPK01: MOV R3,#2 ;2个键MOV R2,#0 ;键码MOV B,A ;暂存键值MOV

37、DPTR,#KeyTableK02: MOV A,R2MOVC A,A+DPTR ;从键值表中取键值CJNE A,B,K04 ;键值比较MOV A,R2 ;得键码INC ARETK04:INC R2 ;不相等,到继续访问键值表DJNZ R3,K02MOV A,#0FFH ;键值不在键值中,即多键同时按下LJMP MLOOPDelay: ;延时子程序mov r7 , #0DelayLoop:djnz r7 , DelayLoopdjnz r6 ,Delayret DELAY1: ;延时子程序1MOV R4,#0FFHAA1:MOV R5,#0FFHAA: NOPNOPDJNZ R5,AADJNZ

38、 R4,AA1RET4.结论本设计本着方便、实用性、易于扩展的指导思想,采用AT89C51为中央处理器加上各种外围电路构成了整个单片机控制系统。在设计中运用温度传感器采集温度,通过转换、处理与设定值进行比较,得到控制信号用以控制保温箱的温度,实现了保温箱温度显示和控制功能。本次设计的具体步骤如下:系统整体设计,根据设计要求,选择合理可行的设计总体方案,实现系统功能。元件选择,根据需求分析选择电子元器件,以达到设计的目的。硬件设计,用Protel软件画好电路原理图,生成PCB板图,制作成电路板。软件设计,画好程序流程图,设计主程序和子程序。焊接电路板,把电子元件焊接到做好的电路板上,对电路进行检

39、查。在仿真器上对系统进行软、硬件调试,修改错误或改进缺陷,找出硬件错误。对整个系统进行联合调试,使系统达到本次设计的设计要求。 由于个人的能力有限,本次设计中还有许多可以改进的地方,能使系统达到更优的控制效果。系统还有很多可以应用的资源没有充分的得到利用,例如ADC0809的输入通道还没有完全开发,系统的I/O资源还没有完全利用。在设计上还有很多潜力挖掘。保温箱的加热控制可以采用控制效果更好的输出脉宽调制PWM调节加热器的加热功率,使控制精度更高。本次设计是对我大学四年里所学的知识进行了综合利用。在设计中涉与到得知识涵盖了大学所学的所有知识,包括单片机、自动控制控制、电工电子技术、传感器等多领

40、域知识。通过这次设计学会了查找问题、分析问题、处理问题的方法,可以说为今后的工作、学习都打下了比较坚实的基础。参考文献1、单片微型计算机原理与应用,电子科技大学,毅坤编;2、单片机原理与接口技术,邮电大学,马淑华等编着;3、现代传感器集成电路,人民邮电,负图主编;4、单片机典型外围器件应用实例,人民邮电,科技编着。附录A 系统硬件原理图附录B 程序清单ORG 0000HJMP START1 ;ORG 000BH ;定时器/计数器0溢出中断JMP TIM0 ; 转中断程序START1: MOV TMOD,#01H; 设定定时器0工作方式1 MOV TH0 , #HIGH(65536-50000)

41、; 设定初值 MOV TL0,#LOW(65536-50000); SETB TR0;启动定时器0 MOV IE,#82H;定时器0开放中断MOV 24H,#0FFH; ANL P1,#00H; MOV R0,#14; 延时START: MOVX R0,A; 启动A/D转换WAIT: JNB P2.1,SET0; 检测温度输入P2.0,ADC;检测转换是否完成 JMP WAITADC: MOVX A,R0;将转换好的值送入ALCALL L1;LCALL DISP;JMP STARTL1: CLR C; 清0 MOV 20H,#00H; MOV 21H,#00H; MOV R3,#08H;显示位

42、数NEXT: RLC A;将A的容和Cy左移一位,显示准备 MOV R2,A; MOV A,20H; ADDC A,20H DA A;对A进行十进制调整 MOV 20H,A; MOV A,21H; ADDC A,21H MOV 21H,A; MOV A,R2; DJNZ R2,NEXT; R2-10 循环计数L2: MOV A,20H ADD A,20H; DA A; MOV 20H,A;MOV A,21H;ADDC A,21H;DA A;MOV 21H,A; RETDISP: MOV A,20H;显示程序 ANL A,#0F0H SWAP A; 交换高低位 MOV 22H,A MOV A,2

43、1H; ANL A,#0FFH SWAP A ; ORL A,22H; MOV 23H,A MOV P1,A; MOV R7,#0FFH; DJNZ R7,$; 是否显示完 RETSET0: LCALL DELAY; JNB P2.1,$;等待按键操作LCALL DELAY;消除按键抖动A2: CJNE R0,#0FFH,A1; MOV R0,#14;延时A1: MOV A,R0; MOV DPTR,#TABLE ; 数据指针指向表头 MOVC A,A+DPTR; 查表 MOV P1,A; MOV 24H,A;MOV R5,#4FH;D4: MOV R7,#0FFHD2: MOV R6,#0FFHD1: JNB P2.1,SET1; 有按键按下 转SET1 DJNZ R6,D1 DJNZ R7,D2 DJNZ R5,D4JMP START;SET1: LCALL DELAY; JNB P2.1,$; 等待按键操作LCALL DELAY; 消除抖动 DEC R0; JMP A2;TIM0: PUSH ACC; 保护现场 PUSH PSW MOV TH0,#HIGH (65536 - 50000); 重装定时初值 MOV TL0,#LOW (65536 -50000) CLR C ; 进位标志清0 MOV A,

温馨提示

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

最新文档

评论

0/150

提交评论