1、14 K3 EQU P2.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
2、 ACALL 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:46 ACALL R
3、E_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 ;发出温度转换命令59 ACALL WR
4、ITE_1820 ;调写入子程序 60 ACALL RESET_1820 ;调复位子程序 61 MOV A,#0CCH ;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 CONV ;LCD显示子程序 73 RET7475;
5、按键键扫描子程序 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 PK1: 按键K2处理88 JB K2, PK3 ;K2键未按,转到PK3处 8
6、9 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 ;99 ACALL TEMP_BJ ;显示温度标记子程序 100 PK3:101 RET102 ;103 TA1:菜单表104 D
7、B RESET ALERT CODE105 ;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,转移到A3。115 JMP A8 ;20H.1=0,DOWN,转移到A8116 ;117 ; TH值调整(增加)118 A3: JB K2, A5
8、 ;按下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 DELAY ;调用延时程序127 JMP A3 ;128 ;129 ;TL值调整(增加)130 A5: JB K3,A7 ;按下K3(TL值设定键)程序向下运行131 ACALL SPK_BZ ;132
9、 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:137 MOV R5, #10138 ACALL DELAY ;139 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 K
10、2, A10 ;149 ACALL SPK_BZ ;150 DEC TEMP_TH ;TH值减1151 MOV A,TEMP_TH ;152 CJNE A,#0FFH,A9 ;比较,若A=0FF,程序向下运行153 JMP A12 ;转移到A12154 A9:155 MOV R5, #10156 ACALL DELAY ;调用延时子程序157 JMP A0 ;158 ;159 ;TL值调整(减少)160 A10: JB K3, A13 ;按K3(TL值设定键),程序向下运行161 ACALL SPK_BZ ;162 DEC TEMP_TL ;TL值减1163 MOV A,TEMP_TL ;16
11、4 CJNE A,#0FFH,A11 ;165 JMP A12 ;166 A11:167 MOV R5, #10168 ACALL DELAY ;169 JMP A0 ;转移到A0170 A12: CPL 20H.1 ;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 ACALL 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_L
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1