收藏 分享(赏)

51单片机温度控制程序.doc

上传人:hyngb9260 文档编号:7470741 上传时间:2019-05-19 格式:DOC 页数:12 大小:43.50KB
下载 相关 举报
51单片机温度控制程序.doc_第1页
第1页 / 共12页
51单片机温度控制程序.doc_第2页
第2页 / 共12页
51单片机温度控制程序.doc_第3页
第3页 / 共12页
51单片机温度控制程序.doc_第4页
第4页 / 共12页
51单片机温度控制程序.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、51 单片机温度控制程序(续) 功能说明: 本装置的功能是对温度进行实时监测与控制。由温度传感器 DS18B20 对温度进行采样和转换成数字信号送入单片机,并与设定的报警温度上、下限值进行比较,信息通过 LCD 显示出来。如实时温度超过设定的上、下限值,一方面由 LC功能说明:本装置的功能是对温度进行实时监测与控制。由温度传感器 DS18B20 对温度进行采样和转换成数字信号送入单片机,并与设定的报警温度上、下限值进行比较,信息通过 LCD 显示出来。如实时温度超过设定的上、下限值,一方面由 LCD 显示信息,并发出警报声;另一方面自动控制继电器(Relay)开接通或断开,从而控制加热源的开与

2、断,达到对温度进行实时控制的目的。程序:LCD2402.ASM01 ; 02 ; 温度值存放单元03 TEMP_ZH EQU 24H ;实时温度值存放单元04 TEMPL EQU 25H ;低温度值存放单元05 TEMPH EQU 26H ;高温度值存放单元06 TEMP_TH EQU 27H ;高温报警值存放单元07 TEMP_TL EQU 28H ;低温报警值存放单元08 TEMPHC EQU 29H ;存十位数 BCD 码09 TEMPLC EQU 2AH ;存个位数 BCD 码10 ;11 按键输入引脚定义 12 K1 EQU P2.113 K2 EQU P2.214 K3 EQU P

3、2.315 K4 EQU P2.416 ;17 SPK EQU P3.4 ;蜂鸣器引脚18 RELAY EQU P2.0 ;继电器引脚19 X EQU 2FH ;LCD 地址变量20 ; 21 ;LCD 控制引脚 22 RS EQU P3.523 RW EQU P3.624 E EQU P3.725 ; 26 FLAG EQU 20H.0 ;DS18B20 是否存在标记27 KEY_UD EQU 20H.1 ;设定 KEY 的 UP 与 DOWN 标记28 DQ EQU P2.52930 ; 主程序 3132 MAIN: 33 ACALL SET_LCD ;LCD 初始化设置子程序34 ACA

4、LL WR_THL ;将报警上下线写入暂存寄存器子程序35 TOOP: ACALL RESET_1820 ;调用 18B20 复位子程序36 JNB FLAG,TOOP1 ;DS1820 不存在转移 TOOP1 处37 ACALL MEU_OK ;调用显示“OK“ 信息子程序38 ACALL RE_THL ;把 EEROM 里温度报警值拷贝回暂存器39 ACALL TEMP_BJ ;显示温度标记“40 JMP TOOP241 TOOP1: ACALL MEU_ERROR ;显示“ERROR“ 信息42 ACALL TEMP_BJ ;显示温度标记43 JMP $ ;等待44 ;45 TOOP2:

5、46 ACALL RE_TEMP ;调用读取温度数据子程序47 ACALL SET_DATA ;调用处理显示温度数据子程序48 ACALL TEMP_COMP ;实际温度值与标记温度值比较子程序49 ACALL P_KEY ;调用按键扫描子程序50 SJMP TOOP2 ;循环5152 ; 读取温度数据子程序 53 RE_TEMP:54 ACALL RESET_1820 ;18B20 复位子程序 55 JNB FLAG,TOOP1 ;DS1820 不存在56 MOV A,#0CCH ;跳过 ROM 匹配57 ACALL WRITE_1820 ;写入子程序58 MOV A,#44H ;发出温度转

6、换命令59 ACALL WRITE_1820 ;调写入子程序 60 ACALL RESET_1820 ;调复位子程序 61 MOV A,#0CCH ;跳过 ROM 匹配62 ACALL WRITE_1820 ;写入子程序63 MOV A,#0BEH ;发出读温度命令64 ACALL WRITE_1820 ;写入子程序 65 ACALL READ_1820 ;调用读取子程序66 RET6768 ; 温度数据处理显示子程序69 SET_DATA:70 ACALL CONV_TEMP ;处理温度 BCD 码子程序71 ACALL DISP_BCD ;显示区 BCD 码温度值刷新子程序72 ACALL

7、 CONV ;LCD 显示子程序 73 RET7475; 按键键扫描子程序 76 P_KEY: ;按键 K1 处理 77 JB K1, PK1 ;K1 键未按,转到 PK1 处 78 ACALL SPK_BZ ;K1 键按下,一声鸣响79 JNB K1,$ ;等按键放开80 MOV DPTR,#M_ALAX1 ;存 M_ALAX1 表81 MOV A,#182 ACALL LCD_PRINT ;显示字符83 ACALL LOOK_ALARM ;显示信息区子程序84 JB K3, $ ;等待 K3 按下85 ACALL SPK_BZ ;一声鸣响86 JMP PK2 ;转到标号 PK2 处87 P

8、K1: ; 按键 K2 处理88 JB K2, PK3 ;K2 键未按,转到 PK3 处 89 ACALL SPK_BZ ;K2 键按下,一声鸣响 90 JNB K2,$ ;等按键放开 91 MOV DPTR, #TA1 ;存#TA1 表 92 MOV A,#1 93 ACALL LCD_PRINT ;显示字符 94 ACALL SET_ALARM ;设定报警值 TH、TL 95 ACALL WR_THL ;将设定的 TH,TL 值写入 DS18B20 内96 ACALL WRITE_E2 ;调用报警值拷贝 EEROM 子程序97 PK2:98 ACALL MEU_OK ;显示“OK“ 信息子

9、程序99 ACALL TEMP_BJ ;显示温度标记子程序 100 PK3:101 RET102 ;103 TA1: ;菜单表104 DB “RESET ALERT CODE“105 ;106107 ; 设定报警值 TH、TL 子程序 108 SET_ALARM:109 ACALL LOOK_ALARM ;调用显示信息区子程序110 A0: JB K1,A2 ;按下 K1(查看键),程序向下运行111 ACALL SPK_BZ ;蜂鸣器响一声112 JNB K1,$ ;等放开113 CPL 20H.1 ;UP/DOWN 标记反向114 A2: JB 20H.1,A3 ;20H.1=1,UP,

10、转移到 A3。115 JMP A8 ;20H.1=0,DOWN,转移到 A8116 ;117 ; TH 值调整(增加)118 A3: JB K2, A5 ;按下 K2(设定键),程序向下运行 119 ACALL SPK_BZ ;蜂鸣器响一声120 INC TEMP_TH ;TH 值调整(增加)121 MOV A,TEMP_TH ;TH 值送入 A122 CJNE A,#120,A4 ;TH 值增到 120,程序向下运行123 MOV TEMP_TH,#0 ;TH 值清 0124 A4: ACALL LOOK_ALARM ;调用显示信息区子程序125 MOV R5, #10126 ACALL D

11、ELAY ;调用延时程序127 JMP A3 ;循环128 ;129 ;TL 值调整(增加)130 A5: JB K3,A7 ;按下 K3(TL 值设定键)程序向下运行131 ACALL SPK_BZ ;蜂鸣器响一声132 INC TEMP_TL ;TL 值增加 1133 MOV A, TEMP_TL ;TL 值送入 A134 CJNE A,#99,A6 ;比较,若 A=99,程序向下运行135 MOV TEMP_TL,#00H ;TL 值清 0136 A6: ACALL LOOK_ALARM ;调用显示信息区子程序137 MOV R5, #10138 ACALL DELAY ;调用延时程序1

12、39 JMP A5 ;程序转移到 A5,循环140 ;141 ;确定调整 OK142 A7: JB K4, A0 ;按下 K4(调整确定键),程序向下运行143 ACALL SPK_BZ ;蜂鸣器响一声144 JNB K4, $ ;等放开145 RET ;程序返回146 ;147 ;TH 值调整 (减少)148 A8: JB K2, A10 ;按下 K2(设定键),程序向下运行 149 ACALL SPK_BZ ;蜂鸣器响一声150 DEC TEMP_TH ;TH 值减 1151 MOV A,TEMP_TH ;TH 值送入 A152 CJNE A,#0FFH,A9 ;比较,若 A=0FF,程序

13、向下运行153 JMP A12 ;转移到 A12154 A9: ACALL LOOK_ALARM ;调用显示信息区子程序155 MOV R5, #10156 ACALL DELAY ;调用延时子程序157 JMP A0 ;转移到 A12158 ;159 ;TL 值调整(减少)160 A10: JB K3, A13 ;按 K3(TL 值设定键),程序向下运行161 ACALL SPK_BZ ;蜂鸣器响一声162 DEC TEMP_TL ;TL 值减 1163 MOV A,TEMP_TL ;TH 值送入 A164 CJNE A,#0FFH,A11 ;比较,若 A=0FF,程序向下运行165 JMP

14、 A12 ;转移到 A12166 A11: ACALL LOOK_ALARM ;调用显示信息区子程序167 MOV R5, #10168 ACALL DELAY ;调用延时子程序169 JMP A0 ;转移到 A0170 A12: CPL 20H.1 ;UP/DOWN 标记反向171 JMP A3 ;转移到 A3 ,TH 值调整(增加)172 A13: JMP A7 ;转移到 A7 ,确定调整 OK173 RET ;子程序返回174175 ; 显示信息区子程序 176 LOOK_ALARM:177 MOV DPTR,#M_ALAX2 ;存表178 MOV A,#2 ;显示在第二行179 ACA

15、LL LCD_PRINT ;调用显示字符子程序180 MOV A,#0C6H ;显示起始地址为第二行第 7 位181 ACALL TEMP_BJ1 ;调用显示温度标记子程序182 MOV A,TEMP_TH ;加载 TH 数据183 MOV X,#3 ;设置位置184 ACALL SHOW_LINE2H ;显示数据185 ;186 MOV A,#0CEH ;设定显示起始地址为第二行第 15 位187 ACALL TEMP_BJ1 ;调用显示温度标记子程序188 MOV A,TEMP_TL ;加载 TL 数据189 MOV X,#12 ;设置位置190 ACALL SHOW_LINE2L ;显示

16、数据191 RET192 ;193 M_ALAX1:194 DB “ LOOK ALERT CODE“,0195 M_ALAX2:196 DB “TH: TL: “,0197 ;198 ;显示温度标记子程序 199 TEMP_BJ1: 200 ACALL WR_COMM ;调用写指令子程序201 MOV DPTR,#BJ2 ;存代码表202 MOV R1,#0 ;使指针指到表中第一个码203 MOV R0,#2 ;取码次数205 B0: MOV A,R1 ;A 为 0206 MOVC A,A+DPTR ;读取码207 ACALL WR_DATA ;调用写数据子程序208 INC R1 ;R1

17、值加 1209 DJNZ R0,B0 ;判断是否将代码读取完?210 RET211 ;212 BJ2: ;代码表213 DB 00H,“C“214 ;215216 ;在 LCD 的第二行显示高温数字 217 SHOW_LINE2H: 218 MOV B,#100 ;设置被除数,B 为百位数219 DIV AB ;除法运算,结果 A 存商数,B 存余数220 ADD A,#30H ;低半字节加 30 得到 ASCII 码(转换为字符)221 PUSH B ;B 放入堆栈暂存起来222 MOV B,X ;设置 LCD 显示的位置223 ACALL LCDP2 ;由 LCD 显示出来224 ;225

18、 POP B ;B 由堆栈取出来226 MOV A,#0AH ;A 赋值 10227 XCH A,B ;A、B 数据互换,B 为十位数228 DIV AB ;除法运算,结果 A 存商数,B 存余数229 ADD A,#30H ;转换为字符230 INC X ;LCD 显示位位置加 1231 PUSH B ;B 放入堆栈暂存起来232 MOV B,X ;设置 LCD 显示的位置233 ACALL LCDP2 ;由 LCD 显示出来234 ;235 POP B ;B 由堆栈取出来236 INC X ;LCD 显示位位置加 1237 MOV A,B ;B 为个位数238 MOV B,X ;设置 LCD 显示的位置239 ADD A,#30H ;转换为字符240 ACALL LCDP2 ;由 LCD 显示出来241 RET242

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报