1、 温度控制器 课程设计学生姓名: 胡云飞 学 号: 6100310011 专业班级: 自动化101 指导老师: 万晓凤 2014年01月08日 目 录第一章 概述 1.1 课题背景2 1.2 温度控制器的发展3第二章 系统的硬件电路设计 2.1 单片机的选择4 2.2 温度传感器的选择4 2.3 显示模块的选择4第三章 系统软件设计 3.1 主程序设计5 3.2 LED显示程序设计6 3.3 键盘控制模块程序设计7第四章 仿真与结果 4.1 仿真原理图8 4.2 结语8第五章 附录 5.1 硬件原理图9 5.2 程序加载项9 5.3 系统仿真图10 5.4 系统程序10 基于单片机的温度控制器
2、摘要:本设计介绍一种温度控制器,它是以AT89C52单片机为核心,用按键输入来设置控制温度上、下限,通过DS18B20数字温度传感器采集现场温度,并将其与设定的温度进行比较,来控制加热装置的通断,利用液晶显示器来显示温度,并设置温度越限报警。利用单片机的开发环境,进行程序的编译、调试。最后在PROTEUS中对温度控制器的温度设置、温度控制、温度报警、温度显示灯功能进行仿真。系统的仿真结果验证了温度控制器的设计可行性。关键词:AT89C52,温度传感器DS18B20,液晶显示器,ProteusAbstract :The design take AT89C52 microcontroller as
3、 the core, and it use buttons to set the upper and lower limits, control the heating device by comparing setting temperature with real-time temperature, which is collected by DS18B20, use LED to display temperature, and set the alarm of temperature which is out of setting limits. Use the development
4、 environment of microcontroller to make program compiles and debugging. At the end, use PROTEUS to simulate the functions of temperature setting, temperature controlling, temperature alarm, and temperature displaying of temperature controller. The result of simulation has verified the feasibility of
5、 the design.Key words: AT89C52,DS18C20,LED,Proteus 第一章 绪论 1.1课题背景 温度控制是一个非常常见的过程,无论是在我们的日常生活中,还是在农业生产中,甚至在现代化的工业生产中,对温度的控制都是非常必要的。在寒冷的冬天,或者炎热的夏天,我们利用空调来创造一个舒适的环境。种子的发芽、农作物的生长、果实的成熟等都需要适宜的温度。在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。由此可见,温度控制是一个非常重要的过程。 AT89C52单片机设计的温度控制
6、器,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而将温度准确地控制在设定温度值或设定的温度范围之内,这对我们的工业、工业生产都是很大帮助的。以单片机为核心的应用技术已成为一项新的工程应用技术。单片机以其集成度高、运算速度快、体积小、运行可靠、价格低廉等优势,在过程控制系统、数据采集、机电一体化、智能化仪表、家用电器以及网络技术等方面得到了广泛的应用。 由此可见,对温度控制器的研究是非常必要的,在科技日新月异的今天,温度控制将对各行各业产生很大的影响,如何才能研究出更高精度的温度控制器?这是我们必须去思考并解决的问题。1.2温度控制器的发展 温度控制器广泛
7、应用于家用电器,主要为冰柜、冷柜、空调、饮水机、微波炉等制冷、制热产品配置。目前国内温度控制器生产企业减少,仅广东、江苏、辽宁、江西等地有一些规模稍大一点的生产厂家,他们的生产能力远远不能满足电子温度控制器市场的需求。温度控制器不仅在国内市场销售顺畅,而且在国际市场也十分看好。由于日本、意大利、美国等国家对温度控制器产品的需求量很大,温度控制器出口前景十分乐观。第二章 系统的硬件电路设计 该硬件系统框图如图2-1所示。控制器由AT89C52单片机、温度检测电路、控制电路等组成。 被控对象液晶显示模块 AT89C52 单 片 机 温度传感器模块键盘输入模块 报警模块 温度控制器模块 图2 硬件系
8、统框图2.1 单片机的选择采用AT89C52单片机,属于C51单片机系列,其主要工作特性是:(1) 片内程序存储器内含4k字节的Flash程序存储器;(2) 片内数据存储器内含128字节的RAM;(3) 具有32根可编程I/O口线;(4) 2个16位定时/计数器;(5) 一个5向量两级中断结构;(6) 一个全双工串行通信口,片内振荡器及时钟电路;(7) 具有可编程串行URAR通道;(8) 低功耗工作模式有空闲模式和掉线模式;(9) 具有三级加密程序存储器;(10) AT89C52工作电源电压为5v;(11) AT89C52最高工作频率为33MHz; 图2-1 AT89C52引脚图2.2 温度传
9、感器的选择 采用数字温度传感器DS18B20,DS18B20数字温度传感器是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此,由它组成的测温系统,具有线路简单,一根通信线可以挂很多这样的数字温度传感器,使用方便等特点。2.3 显示模块的选择 采用LED数码管显示,LED亮度高、可视角度高和刷新速率快,能提供宽达160的视角,可以显示各种文字、数字、彩色图像及动画信息,也可以播放电视、录像、VCD、DVD等彩色视频信号,多幅显示屏还可以进行联网播出。第三章 系统软件设计3.1主程序设计 AT89C52的具体软件程序流程图如图3.1所示。 开始程序初始化有键输入吗
10、?执行相应键的功能显示温度值将采集到的值转化为压缩BCD码采集温度值 Y N 图3-1主程序流程图 3.2 LED显示程序设计 LED显示的流程图如图3-2所示。 移位结束显示完毕 显示字符 输出段选信号 输出位选信号 设字符表 开始 N Y 图3-2 LED显示模块流程图3.3 键盘控制模块程序设计键盘控制模块流程图如图3-3所示。 开始 读列线有键闭合否 N读行线有键闭合否 Y N延时消抖动 Y 结束散转执行相应键功能子程序行线列线值转换为按键编号 图3-3键盘模块流程图 第四章 仿真与结果 采用绘制电路图软件PROTEUS和用于编写程序的KeilC ILVision2实现系统设计的仿真。
11、图4为PROTEUS仿真环境下温度值为5C时的硬件电路图。在KeilC pVision2中创建一个新项目。然后在PROTEUS中为该项目加入Keil C源程序。调试后,结果和设计目标完全吻合。 图4 proteus isis 环境下温度值为5C时的硬件仿真图结语 该温度控制器以AT89C52单片机作为内核,采用DS18B20单线数字温度传感器采集温度,将采集到的温度直接以数字形式输出到单片机,无须经过变换电路,具有精度高、稳定性好和抗干扰性强等特点。 第五章 附录附录1 硬件原理图 附录2 程序加载项附录3 系统仿真图附录4 系统程序DS18B20 EQU P1.0ALARM EQU P1.6
12、MOTOR EQU P1.7RLED EQU P3.5GLED EQU P3.6BLED EQU P3.7KEY1 EQU P3.0KEY2 EQU P3.1KEY3 EQUP3.2WENDU_L EQU 50HWENDU_H EQU 51HXIAOSHU EQU 52HZHENGSHU EQU 53HDIS_RAM_H EQU 54HDIS_RAM_L EQU 55HSHEDING_H EQU56HSHEDING_L EQU 57HSIGN EQU 58HORG 0000HLJMP MAINORG 000BH LJMP INT_T0 ORG 0100HMAIN: MOV SP,#30H CL
13、R ALARM CLR MOTOR CLR RLED CLR BLED MOV WENDU_L,#0 MOV WENDU_H,#0 MOV ZHENGSHU,#0MOV DIS_RAM_H,#0MOV DIS_RAM_L,#0MOV SHEDING_H,#0MOV SHEDING_L,#0MOV SIGN,#0LCALL INI_CPULOOP: LCALL KEY_TEST LCALL COMPARE LCALL GET_TEMP LCALL ZHENGHE LCALL DIS_DEALSJMP LOOP COMPARE:MOV A,ZHENGSHUCLR CCJNE A,SHEDING_H
14、,COMPARE1COMPARE1: JC CLOSE_WIND SETB MOTOR AJMP COMPARE_EXITCLOSE_WIND: CLR MOTOR CLR C CJNE A,SHEDING_L,COMPARE2COMPARE2: JNC CLOSE_ALARM SETB ALARM JMP COMPARE_EXITCLOSE_ALARM: CLR ALARMCOMPARE_EXIT: RETKEY_TEST:JB KEY1,KEY2_TESTLCALL DELAY10MSJB KEY1,KEY2_TESTINC SIGNMOV A,SIGNCJNE A,#3,KEY1_EXI
15、TMOV SIGN,#0KEY1_EXIT:JNB KEY1,$AJMP KEY_TEST_EXITKEY2_TEST:JB KEY2,KEY_3TESTLCALL DELAY10MSJB KEY2,KEY3_TESTMOV A,SIGNCJNE A,#0,KEY2_DEAL1AJMP KEY2_EXITKEY2_DEAL1: CJNE A,#1,KEY2_DEAL2 INC SHEDING_HJMP KEY2_EXITKEY2_DEAL2:INC SHEDING_LKEY2_ EXIT JNB KEY2,$ AJMP KEY_TEST_EXIT KEY3_TEST:JB KEY2,KEY_T
16、EST_EXITLCALL DELAY10MSJB KEY2,KEY_TEST_EXITMOV A,SIGNCJNE A,#0,KEY3_DEAL1AJMP KEY3_EXITKEY3_DEAL1: CJNE A,#1,KEY3_DEAL3 DEC SHEDING_H JMP KEY3_EXITKEY3_DEAL3: DEC SHEDING_LKEY3_EXIT: JNB KEY3,$KEY3_TEST_EXIT: RET INI_CPU: MOV TMOD,#01H MOV TH0,#0DCH MOV TL0,#0B0H SETB EA SETB ET0SETB TR0RETRead tem
17、peratureGET_TEMP: SETB DS18B20 LCALL RESET_DS18B20 JC GET_TEMP_EXIT MOV A,#0CCH LCALL WR_DS18B20 MOV A,#44H LCALL WR_DS18B20 LCALL DELAY1S SETB DS18B20 LCALL RESET_DS18B20 JC GET_TEMP_EXIT MOV A,#0CCH LCALL WR_DS18B20 LCALL READ_TEMP CLR DS18B20GET_TEMP_EXIT: RETREAD_TEMP: MOV R4,#2 MOV R1,#WENDU_LR
18、E: MOV R2,#8RE1: CLR C SETB DS18B20 NOP NOP CLR DS18B20 NOP NOP NOP SETB DS18B20 MOV R3,#9 DJNZ R3,$ MOV C,DS18B20 MOV R3,#23NN: DJNZ R3,NN RRC A DJNZ R2,RE1 MOV R1,A INC R1 DJNZ R4,RE RETDO DEAL WITH THE DATAZHENGHE: MOV A,#0FH ANL A,WENDU_L MOV XIAOSHU,A MOV A,WENDU_H ANL A,#0FH SWAP A MOV B,A MOV
19、 A,WENDU_L ANL A,#0F0H SWAP A ADD A,B MOV ZHENGSHU,A RETDIS_DEAL: MOV A,SIGN CJNE A,#0,DIS_DEAL1 SETB GLED CLR RLED CLR BLED MOV A,ZHENGSHU MOV B,#10 DIV AB MOV DIS_RAM_H,A MOV DIS_RAM_L,B AJMP DIS_DEAL_EXITDIS_DEAL1: CJNE A,#1,DIS_DEAL2 CLR GLED SETB RLED CLR BLED MOV A,SHEDING_H MOV B,#10 DIV AB M
20、OV DIS_RAM_H,A MOV DIS_RAM_L,B AJMP DIS_DEAL_EXITDIS_DEAL2: CLR GLED CLR RLED SETB BLED MOV A,SHEDING_L MOV B,#10 DIV AB MOV DIS_RAM_H,A MOV DIS_RAM_L,BDIS_DEAL_EXIT: RETINT_T0: PUSH PSW PUSH ACC CLR TR0 MOV TH0,#0DCH MOV TL0,#0B0HDISPLAY: MOV DPTR,#TABLE MOV A,DIS_RAM_H MOVC A,A+DPTR MOV P0,A SETB
21、P2.0 LCALL DELAY602US CLR P2.0 MOV A,DIS_RAM_LMOVC A,A+DPTR MOV P0,A SETB P2.1 LCALL DELAY602US CLR P2.1 SETB TR0 POP ACC POP PSW RETIReset the DS18B20RESET_DS18B20: CLR DS18B20 LCALL DELAY602US SETB DS18B20 LCALL DELAY92US MOV C,DS18B20 LCALL DELAY300US RETWR_DS18B20: MOV R7,#8WR_18B20: CLR DS18B20
22、 NOP NOP;5US NOP NOP NOP RRC A MOV DS18B20,C LCALL DELAY62US SETB DS18B20 DJNZ R7,WR_18B20 RETRD_DS18B20: MOV R7,#8RD_18B20: CLR DS18B20 NOP NOP SETB DS18B20 NOP NOP MOV C,DS18B20 NOP NOP RRC A SETB DS18B20 NOP NOP DJNZ R7,RD_18B20 RETDELAY 1SDELAY1S: PUSH 00 PUSH 01 PUSH 02 MOV R0,#09DLY1S1: MOV R1
23、,#0E0HDLY1S2: MOV R2,#0FFH DJNZ R1,$ DJNZ R1,DLY1S2 DJNZ R0,DLY1S1 POP 02 POP 01 POP 00 RETDELAY 50MSDELAY10MS: PUSH 00 PUSH 01 MOV R0,#20DLY10MS1: MOV R1,#0FFH DJNZ R1,$ DJNZ R0,DLY10MS1 POP 01 POP 00 RETDELAY 480USDELAY 602US: PUSH 00 PUSH 01 MOV R0,#0FFH DJNZ R0,$ MOV R1,#40 DJNZ R1,$ POP 01 POP 00 RETDELAY 300USDELAY 300US: PUSH 00 MOV R0,#8FH DJNZ R0,$ POP 00 RETDELAY 60USDELAY92US: PUSH 00 MOV R0,#2AH DJNZ R0,$ POP 00 RETDELAY 62USDELAY62US: PUSH 00 MOV R0,#27 DJNZ R0,$ POP 00 RETTABLE:DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10HEND