简易温度控制系统doc_第1页
简易温度控制系统doc_第2页
简易温度控制系统doc_第3页
简易温度控制系统doc_第4页
简易温度控制系统doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、目录1、 要求 . 32、 摘要 . 43、 前言 . 54、 方案分析. 65、 实现 . 10六、结论 . 14七、附录 . 15一、要求 简易温度控制系统 设计并制作一个简易的单片机温度自动控制系统(见图一)。控制对象为自定。恒温箱执行器可编程控制器显示器变送器设置键盘电源220VAC温度传感器 图一 恒温箱控制系统设计要求如下(1)温度设定范围为4090,最小区分度为1(2)用十进制数码显示实际温度。(3)被控对象温度采用发光二极管以光柱形式和数码形式显示。(4)温度控制的静态误差2。扩充功能:控制温度可以在一定范围内设定,并能实现自动调整,以保持设定的温度基本保持不变(测量温度时只要

2、求在现场任意设置一个检测点)。二、摘要 本次设计的主要目的是实现对温度的控制,其主要思路是通过温度传感器感应物体的温度,通过数码管显示出来,由于本此设计的温度设定范围是在40度到90度之间,因此如果物体的温度不在这个设定范围内,那么就需要通过加热或降温使物体的温度达到这个范围。另外本次设计设定了键盘,通过键盘输入设定的数,然后通过调温使该物体的温度达到设定的数值。本次设计采用单片机原理,共有温度感应模块、显示模块、键盘输入模块、比较模块四大块。通过温度动态显示,可以显示被测物体的温度,而通过键盘扫描可以求出设定的温度值,通过温度传感器可以感应物体的温度。那么,本次设计所能实现的功能就是可以测定

3、物体的温度并能实现自动调整和手动键盘调整。三、前言随着社会的发展和科技的进步以及测温仪器在各个领域的应用,智能化是现代温控系统发展的主流方向,特别是今年来,温度控制系统已应用到生活的各个方面,但是温度控制一直是一个未开发的领域,是与人们息息相关的一个问题。针对这种实际情况,设计一个温度控制系统,具有广泛的应用前景和实际意义。温度是科学技术中最基本的物理量之一。物理、化学、生物等学科都离不开温度,在工业生产等许多领域,温度常常是表征对象和过渡状态的重要物理量。各行各业对温度的要求越来越高,可见温度的测量和控制是非常重要的。单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测

4、和温度控制。随着温度控制器应用越来越广泛,各种试用于不同场和的温度控制器应运而生。四、方案分析本次设计主要版块分为温度感应模块,温度显示模块,键盘设定模块以及温度比较模块。一、方案的选择 1.对于温度感应模块有两种方案: 一种是使用普通温度传感器pt100再结合电压放大器和AD转换器将感应到的温度数值转换为数字量存储在某一单元内。但由于该方案电路繁多,线路冗长,所以舍之不用。 第二种是使用温度传感器18B20感应温度,由于该温度传感器内含AD转换器,因此连接简单,应用方便,故选用该方案。 2.对于温度显示模块有两种方案: 一种是使用静态显示,通过数码管显示被测温度和设定温度。该方案程序简单,但

5、硬件连接复杂,所需元件数量多,不适合设计应用。 第二种是使用动态显示,通过数码管显示被测温度和设定温度。该方案程序复杂,但硬件连接简单,所需元件少,适合设计应用。3.对于键盘设定模块有两种方案:一种是使用线反转法,通过矩阵键盘,一次求出行数和列数,然后求出设定的数值。由于该方案不具有扫描功能,因此不适用于一般的键盘程序,而适用于键盘中断程序。第二种是使用键盘扫描法,通过矩阵键盘,求出设定的数值,由于该方案具有扫描功能,因此在不使用中断的情况下,使用键盘扫描程序是十分恰当的,本次设计采用的是键盘扫描程序。4. 对于温度比较模块,是通过比较程序,直接决定进行升温还是降温。2、 硬件的说明 本次设计

6、硬件用到了单片机89C52、温度传感器18B20、三八译码器74LS138、驱动74LS245、数码管、矩阵式键盘、灯泡等。单片机89C52是常用的单片机之一,单片机上有32个P口,其中P0、P1、P2、P3各8个。温度传感器18B20接到单片机的一个P口上,本次设计是P1.3,因为温度传感器18B20可以直接将数据传输给单片机,因此可直接连接。三八译码器74LS138出线端用于连接驱动74LS245,入线端ABC连接到单片机的P1口上的P1.0、P1.1、P1.2,通过调节P1口上的这三端的值进而控制出线端0到7哪个为低电平。本次设计用到2个74LS245,它的输出端接数码管,输入端一个接P

7、0口,一个接74LS138,它们分别控制数码管的字型码输出和数码管选择。矩阵式键盘采用33式,分别表示1到9。通过将6个出线端接到P2口上,然后通过P2口控制键盘,键盘的行拉高电阻和5伏电压。3、 软件的说明对于温度感应模块,调用18B20程序,直接在某一单元存储温度的数值。其中18B20程序见附录。输出字型码对于温度显示模块,一共有静态和动态两种显示,静态显示时,各个LED数码管相互独立,公共端接地,每个数码管的8个显示字段控制端分别与一个8位并行输出口相连,只要输出口输出字型码,LED数码管就立即显示出相应的字符,并保持到输出口输出新的字型码。采用静态显示,用较小的电流便可获得较高的亮度,

8、而且占用CPU时间少,编程简单,显示便于检测和控制,但其占用的口线多,硬件电路复杂,成本较高。动态显示时,是各个LED数码管一位一位轮流显示。在硬件电路上,各个数码管的显示字段控制端并联到一起,有一个8位并行输出口控制,各个LED数码管的公共端作为显示位的位选线,由另外的输出口控制,动态显示节省I/O口,硬件电路简单。本次设计采用的是动态显示,实现方法是求出字型码选数码管 取下一缓冲区地址稳定显示1MS输出字型码求字型码取显示位置取缓冲区地址开始 温度显示程序的流程图为对于键盘设定模块,键盘是由多个按键组成。它可以分成独立式和矩阵式2种形式。独立式键盘是一组相互独立的按键,他们分别直接与I/O

9、口电路连接,每个按键占用一根输入口线。独立式键盘比较灵活,软件结构简单,但当按键较多时,输入口线浪费较大。因此在应用系统中,按键较多时,一般不采用。矩阵式键盘也称为行列式键盘,用输入和输出口线组成行列结构,按键设置在行和列的交叉点上,按键闭合时,接通输入和输出口线。矩阵式键盘在按键较多时可以节省I/O口线。本次设计采用矩阵式键盘,并且按键识别的方法是扫描法。在按键识别过程中,依次使行线输出低电平,然后检查列线的输入电平,如果所有列线的输入全为高电平,则该行无按键按下;如果不全为高电平,则被按下的按键在本行,且在输入电平变为低电平的列的交叉点上。本次设计没有用线反转法是由于本次设计没有用到中断,

10、而没有中断的情况下就要求我们必须不停地扫描键盘,因此线反转法在本次设计中并不是最好的按键识别方法。键盘程序的流程图为:若有,延时20MS消抖置列为输入开始、若释放,则RET若无,则RET有无按键按下?按键释放?若释放,延时20MS消抖按键释放?有无按键按下若没有,则找到按键?若有,逐行键盘扫描、 查表求键值若找到,则取特征码若完,则结束RET若没有,扫描完否?对于温度比较模块,通过比较传感器温度和键盘温度,然后对被控对象作出调整。由于本次设计采用的加热装置是灯泡,降温装置是自然冷却,因此如果单纯地令传感器温度和键盘温度相等,就会出现灯泡一闪一灭的抖动状态,本次的消抖方略是在设定温度上下各加2度

11、。使最终温度在这个范围内来回波动。键盘温度与被控对象的温度相差1度,不处理温度比较模块的流程图为开始比较键盘温度和被控对象的温度两者温度相差2度或以上,作出升温和降温处理相等,不处理4、 软硬件的总体概述 本次设计的主题思路如下:本次设计的温度控制系统为手动、自动双重输入系统。如果键盘没有按下键值,则系统自动将温度设定在40度到90度。如果键盘输入数据,但数据不在40度到90度的范围之内,那么按没有输入键值处理。如果键盘输入的数据在40度到90度范围内,那么系统会将被控对象的温度控制在设定温度左右,且误差不超过2度。5、 实现本次设计的功能板块分为四块,分别是温度传感器显示功能、键盘输入显示功

12、能、无键盘输入自动调整功能、有键盘输入温度调整功能。1. 温度传感器显示功能 温度传感器18B20能自动感应温度,并且内含AD转换器,能够直接输出一个温度值,并将它存储在单片机某一个单元内。功能如图所示2. 键盘输入显示功能键盘输入数值,数码管会显示输入的数值。功能如图所示3. 无键盘输入自动调整功能在没有键盘输入的情况下,被控对象的温度会被控制在40到90度以内。功能如图所示4. 有键盘输入温度调整功能当有键值输入且键值在40度到90度范围内时,被控对象的温度将被控制到设定温度左右,误差不超过2度。功能如图所示调试过程中,出现过不少问题,诸如:1. 发现在仿真开始后,数码管不亮原因:发现继电

13、器用的不好解决方法:换了一个继电器2. 发现温度传感器的温度并不能有效地显示在数码管上原因:温度传感器的程序有问题,其中31H和32H单元错写成了#31H和#32H。解决方法:将31H和32H前面的#号去掉,温度开始正常显示。3. 发现键盘的数字按下后,键盘没有反应。原因:程序中键盘的按键识别方法是线反转法,键盘的键值所对应的行与列不能有效接通。解决方法:改用扫描法,键盘有了反应。4. 发现数码管显示的温度在不停地跳动。原因:数码管显示程序中先输出字型码后选显示位置。解决方法:数码管程序中先选显示位置后输出字型码。5. 在连接外电路灯泡时,发现接好后灯泡不亮。原因:继电器的开关接线端接错解决方

14、法:将继电器的接线端接好6. 发现实物中当电灯泡的温度达到设定温度时,灯泡开始一亮一闪不停闪烁。原因:灯泡的温度不停地升降,导致灯泡不停的抖动解决方法:在设定的温度上下各加2度,使温度在这个范围内来回波动。6、 结论本次设计的题目是温度控制系统,其主要思想是将温度控制在某一个设定的温度左右,误差不超过2度。本次设计所包含的基本功能如下:当没有键值输入时,被控对象的温度将被设定在40到90度内,来回往复波动。当有按键按下时,如果按键设置的温度不在40到90度内,那么按照没有按键输入来处理。如果按键设置的温度在40到90度内,那么就将物体的温度设定在按键温度左右,且误差不超过2度。本次设计中不足之

15、处就是温度变化比较慢,可能原因是箱子的密封性不太好,传感器与灯泡距离远等原因。改进方法是换一个密封性好一点的箱子,且箱子不要太大。本次设计历时3周左右,花费了大量的精力和时间,可以说其中包含了诸多的汗水和付出。通过翻阅书籍和不停地写程序调试,既增长了知识,又增加了经验。其过程中有苦有甜,不足道也。最后感谢老师的指导和同学的帮助。7、 附录1原理图附录2元件明细单片机89C52温度传感器18B20驱动74LS245三线八线译码器数码管键盘继电器附录3电路程序 ORG 0000H LJMP STAT ORG 0100HSTAT:CLR EA ;关闭中断 MOV SP,#70H ;开辟栈区 CLR

16、00H ;DS18B20标志位 SETB P3.3 ;关闭加热 MOV R1,#00H ;清R1 MOV 31H,#00H MOV 32H,#00H MOV 41H,#00H ;设置键盘设定温度的高位 MOV 42H,#00H ;设置键盘设定温度的低位 MOV 51H,#00H ;设置测量温度高位 MOV 52H,#00H ;设置测量温度低位 MOV 55H,#00H MOV 61H,#00H MOV 62H,#00H LCALL INIT ;消除上电抖动BCDH:LCALL LOOP ;测温 LCALL LOW1 ;显示测量温度 LCALL LOW2 ;显示键盘设定温度 LCALL KEYB

17、 ;扫描键盘 LCALL LOW1 ;显示测量温度 LCALL LOW2 ;显示键盘设定温度 LCALL COMP ;比较温度 LJMP BCDH ;返回键盘程序:KEYB:MOV P2,#00011111B ;置输入为1,输出为0 MOV A,P2 ;读P2口的引脚状态 ANL A,#00011111B XRL A,#00011111B JZ NOKEY ;判断有无按键按下 ACALL DL20MS ;延时20MS消抖 ANL A,#00011111B ;重读键盘 XRL A,#00011111B JZ NOKEY ;再次判断有无按键按下 MOV R2,#11101111B ;行扫描初始值,

18、从第一行开始SCAN: MOV A,R2 MOV P2,A MOV A,P2 ANL A,#00001111B MOV R3,A ;取列线的引脚状态 CJNE A,#00001111B,KEYP ;有键按下 MOV A,R2 RL A ;产生下次的行线输出 MOV R2,A XRL A,#11111110B JNZ SCAN ;扫描完否,未完继续NOKEY:MOV R5,#0FFH ;无按键按下 RETKEYP:MOV A,R2 ;取行扫描值 ANL A,#11110000B ;计算行特征码 ORL A,R3 ;计算按键特征码 MOV R4,A ;按键特征码暂存在R4中 MOV R5,#00H

19、 ;设置按键键值初始值 MOV DPTR,#KEY_TAB ;特征码表首地址CALV:MOV A,R5 ;计算按键键值 MOVC A,A+DPTR XRL A,R4 JZ FIXED INC R5 SJMP CALVFIXED:MOV A,P2 ;判断键值是否释放 ANL A,#1FH XRL A,#1FH JNZ FIXED ACALL DL20MS ;延时消抖 MOV A,P2 ANL A,#1FH XRL A,#1FH JNZ FIXED INC R5 CJNE R1,#1,TURN ;判断是否是第二次按键 MOV A,R5 ;若是第二次按键,则将数存在42H中,且R1加1 MOV 42

20、H,A INC R1 RETTURN:CJNE R1,#2,RNUO ;若不是第二次按键,则判断是否是第三次按键 MOV A,R5 ;若是第三次按键,则将数存在41H中,42H清0 MOV 41H,A 且R1减1 MOV 42H,#00H DEC R1 RETRNUO:MOV A,R5 ;若是第一次按键,则数存在41H中,42H清0 MOV 41H,A 且R1加1 MOV 42H,#00H INC R1 RET比较程序:COMP:MOV A,41H ;判断是否有键按下, 若有,跳到NEXT CJNE A,#00H,NEXT SGD: MOV A,51H ; 无键按下时,判断是否在40到90度范

21、围 CJNE A,#4,GOOD 内 MOV A,52H CJNE A,#00H,HUP CLR P3.3 ;若温度刚好在40度,则加热 RETGOOD:JC NEQ ;判断温度是否大于40度,若小于,则跳转 MOV A,51H CJNE A,#9,HUP ;判断温度是否小于90度,若小于,则跳转 SETB P3.3 ;温度刚好为90度,关闭加热 RETNEQ: CLR P3.3 ;启动加热 RETHUP: RET ;结束NEXT:MOV A,41H ;当有键按下时,判断键值是否在40到90 CJNE A,#4,KJH 度范围内DRT: MOV A,41H ;若在范围内,则比较键盘设定温度和测

22、量温度 CJNE A,51H,RO MOV A,42H CJNE A,52H,RO RET ;键盘设定温度和测量温度相同,不处理KJH: JC QDS ;判断设定温度是否大于40度,若小于,跳转 MOV A,41H CJNE A,#9,DRT ;判断设定温度是否小于90度,若小于,跳转 MOV A,42H CJNE A,#00H,QDS LJMP DRT ;等于90度,则跳转到DRTQDS: MOV 41H,#00H LJMP SGD ;小于40度,则跳转到SGD RETRO: JC GOON ;比较设定温度和测量温度,若设定温度小于测量 MOV A,41H 温度,则跳转到GOON MOV 6

23、1H,A MOV A,42H MOV 62H,A CJNE A,#00H,QWE ;令设定温度减1度 MOV 62H,#9 DEC 61HPUO:MOV A,61H ;重新比较设定温度和测量温度 CJNE A,51H,WEQ MOV A,62H CJNE A,52H,WEQ RET ;相等,不处理WEQ:CLR P3.3 ;不相等,启动加热 RETQWE:MOV A,62H DEC A MOV 62H,A LJMP PUOGOON:MOV A,41H MOV 61H,A MOV A,42H MOV 62H,A CJNE A,#9,XCZ ;令设定温度加1度 MOV 62H,#00H INC 6

24、1HYEC: MOV A,61H ;重新比较设定温度和测量温度 CJNE A,51H,LKP MOV A,62H CJNE A,52H,LKP RET ;若相等,不处理LKP: SETB P3.3 ;若不等,关闭加热 RETXCZ: MOV A,62H INC A MOV 62H,A LJMP YECDL20MS:MOV R2,#100 ;延时20mS消抖DEL3: MOV R3,#50DEL4: NOP NOP DJNZ R3,DEL4 DJNZ R2,DEL3 RET显示程序:LOW1:MOV R0,#51H ;显示测量温度,显示缓冲区地址 MOV R2,#00000000B ;显示起始位

25、置RED1:ACALL DISO ;显示一位 MOV A,R2 ;计算下一个显示位置 INC A MOV R2,A INC R0 ;修改缓冲区地址 XRL A,#00000010B ;2位显示完否 JNZ RED1 ;未完,继续显示 RET ;返回DISO:MOV A,R2 ;取显示位置 MOV P1,A ;显示 MOV DPTR,#LED_SEG ;字型码表首地址 MOV A,R0 ;取显示数据 MOVC A,A+DPTR ;求显示数据的字型码 MOV P0,A ;输出字型码 ACALL DL1MS ;稳定显示1MS RETLED_SEG:DB 3FH,06H,5BH,4FH,66H,6DH

26、,7DH,07H; DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H; ;显示字型码表 DB 3EH,50H,40H,08H,00H,显示程序LOW2:MOV A,41H CJNE A,#00H,BNM MOV 42H,#00HBNM: MOV R0,#41H ;显示设定温度,显示缓冲区地址 MOV R2,#00000010B ;显示起始位置RED2:ACALL DISE ;显示一位 MOV A,R2 ;计算下一个显示位置 INC A MOV R2,A INC R0 ;修改显示缓冲区地址 XRL A,#00000100B ;2位显示完否 JNZ RED2 ;未完,继续显示

27、RET ;返回DISE:MOV A,R2 ;取显示位置 MOV P1,A ;显示 MOV DPTR,#LED_SEG ;字型码表首地址 MOV A,R0 ;取显示数据 MOVC A,A+DPTR ;求显示数据的字型码 MOV P0,A ;输出字型码 ACALL DL1MS ;稳定显示1MS RETDL1MS:MOV R5,#10 ;延时1MS子程序DEL1: MOV R6,#30DEL0: NOP NOP DJNZ R6,DEL0 DJNZ R5,DEL1 RETKEY_TAB:DB 77H,7BH,7DH,0B7H,0BBH,0BDH,0D7H ;键盘字型码表 DB 0DBH,0DDH温度传

28、感器18B20程序:LOOP:LCALL RE ; 温度传感器程序,初始化18B20 LCALL GET LCALL CONV LCALL OBCD RETRE: JB 00H,RE1 ;若18B20存在,转RE1 RETRE1: MOV A,#0CCH ;发SKIPROM命令 LCALL WR MOV A,#4EH ;发写暂存存储器命令 LCALL WR MOV A,#00H ;TH(报警上限)中写入00H LCALL WR MOV A,#00H ;TL(报警下限)中写入00H LCALL WR RETGET: SETB P1.3 ;定时入口 LCALL INIT JB 00H,TSS1 RET ;若18B20不存在,则返回TSS1:MOV A,#0CCH ;跳过ROM匹配 LCALL WR MOV A,#44H ;发出温度转换命令 LCALL WR MOV R0,#250 ;等待A/D转换结束,12位的话750MSTSS2:NOP DJNZ R0,TSS2 LCALL INIT MOV A,#0CCH ;跳过ROM匹配 LCALL WR MOV A,#0BEH ;发出读温度命令 LCALL WR LCALL

温馨提示

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

评论

0/150

提交评论