1、显示OK菜单 ACALL RE_THL ;把EEROM里温度报警值拷贝回暂存器 ACALL TEMP_BJ ;显示温度标记C JMP TOOP2TOOP1: ACALL MEU_ERROR ;ERROR显示温度标记 JMP $-TOOP2: ACALL RE_TEMP ACALL SET_DATA ACALL TEMP_COMP ;实际温度值与标记温度值比较子程序 ACALL P_KEY ;键扫描子程序 SJMP TOOP2 读取温度数据子程序 RE_TEMP:18B20复位子程序 MOV A,#0CCH ;跳过ROM匹配 ACALL WRITE_1820 ;写入子程序 MOV A,#44H
2、;发出温度转换命令调写入子程序 调复位子程序 MOV A,#0BEH ;发出读温度命令写入子程序 ACALL READ_1820 ;调用读入子程序 RET 温度数据处理显示子程序 SET_DATA: ACALL CONV_TEMP ;处理温度 BCD 码子程序 ACALL DISP_BCD ;显示区 BCD 码温度值刷新子程序 ACALL CONV ;数据转换子程序 按键键扫描子程序 P_KEY: ;按键K1处理 JB K1,PK1 ; K1键未按,转到PK1处 ACALL SPK_BZ ;K1键按下,一声鸣响 JNB K1,$ ;等按键放开 MOV DPTR,#M_ALAX1 ;存M_ALA
3、X1表 MOV A,#1 ACALL LCD_PRINT ;显示字符 ACALL LOOK_ALARM ;显示信息区 JB K3,$ ;等待K3按下一声鸣响 JMP PK2 ;转到标号 PK2处 PK1: 按键K2处理 JB K2,PK3 ;K2键未按,转到PK3处 K2键按下,一声鸣响 JNB K2,$ ;等按键放开 MOV DPTR,#TA1 ;存#TA1表 MOV A,#1 显示字符 ACALL SET_ALARM ;设定报警值 TH、TL 将设定的TH,TL值写入DS18B20内 ACALL WRITE_E2 ;PK2:显示温度标记 PK3:-TA1: DB RESET ALERT C
4、ODE 设定报警值 TH、TL子程序 设定报警值 TH、TLSET_ALARM: ACALL LOOK_ALARMA0: JB K1,A2 ACALL SPK_BZ JNB K1,$ CPL 20H.1 ;UP/DOWN 标记A2: JB 20H.1,A3 ;20H.1=1,UP JMP A8 ;20H.1=0,DOWNA3: JB K2,A5 ;TH值调整(增加) INC TEMP_TH MOV A,TEMP_TH CJNE A,#120,A4 MOV TEMP_TH,#0A4: MOV R5,#10 ACALL DELAY JMP A3A5: JB K3,A7 ;TL值调整(增加) INC
5、 TEMP_TL MOV A,TEMP_TL CJNE A,#99,A6 MOV TEMP_TL,#00HA6: JMP A5A7: JB K4,A0 ;确定调整 OK JNB K4,$A8: JB K2,A10 ;TH值调整 (减少) DEC TEMP_TH CJNE A,#0FFH,A9 JMP A12A9: JMP A0A10: JB K3,A13 ;TL值调整(减少) DEC TEMP_TL CJNE A,#0FFH,A11A11:A12: CPL 20H.1A13: JMP A7 显示信息区子程序 LOOK_ALARM: MOV DPTR,#M_ALAX2 ;指针指到显示信息区 MO
6、V A,#2 ;显示在第二行 ACALL LCD_PRINT MOV A,#0C6H ACALL TEMP_BJ1 MOV A,TEMP_TH ;加载TH数据 MOV X,#3 ;设置位置 ACALL SHOW_LINE2H ;显示数据 MOV A,#0CEH MOV A,TEMP_TL ;加载TL数据 MOV X,#12 ; ACALL SHOW_LINE2L ;-M_ALAX1: LOOK ALERT CODE,0M_ALAX2:TH: TL: TEMP_BJ1: ACALL WR_COMM MOV DPTR,#BJ2 ; MOV R1,#0 MOV R0,#2B0: MOV A,R1 M
7、OVC A,A+DPTR ACALL WR_DATA INC R1 DJNZ R0,B0BJ2: DB 00H,-SHOW_LINE2H:在 LCD 的第二行显示数字 MOV B,#100 DIV AB ADD A,#30H PUSH B MOV B,X ACALL LCDP2 POP B MOV A,#0AH XCH A,B INC X MOV A,B-SHOW_LINE2L: CALL LCDP2 温度值比较子程序TEMP_COMP: MOV A,TEMP_TH SUBB A,TEMP_ZH ;减数被减数,则 JC TCL1 ;借位标志位C=1,转 MOV A,TEMP_ZH SUBB A
8、,TEMP_TL ; JC TCL2 ; MOV DPTR,#BJ5 ACALL TEMP_BJ3 CLR RELAY ;继电器吸合 TCL1: MOV DPTR,#BJ3 ;存入#BJ3表 ACALL TEMP_BJ3 ;调用显示高、低温度及加热标记子程序 SETB RELAY ;继电器关闭 TCL2: MOV DPTR,#BJ4 ;存入#BJ4表 调用显示高、低温度及加标记子程序 调用鸣响子程序 显示高、低温度及加热标记程序TEMP_BJ3:BJJ: DJNZ R0,BJJBJ3:HBJ4: BCD DIV AB ;B= A % 100 MOV R4,A ;R7 = 百位数B = A %
9、B ORL A,B- 小数部分码表DOTTAB: DB 00H,00H,01H,01H,02H,03H,03H,04H DB 05H,05H,06H,06H,07H,08H,08H,09H 显示区BCD 码温度值刷新子程序 显示区 BCD 码温度值刷新DISP_BCD: MOV A,TEMPLC MOV 70H,A ;小数位 MOV 71H,A ;个位 MOV 72H,A ;十位 MOV 73H,A ;百位 CJNE A,#010H,DI0 SJMP DI2DI0: JNZ DI2 ;十位数是0 MOV 73H,#0AH ;符号位不显示十位数显示符号DI2:- DS18B20复位初始化子程序
10、- RESET_1820:复位(有具体的时序要求) SETB DQ NOP CLR DQ 主机发出延时537微秒的复位低脉冲 MOV R1,#3 DLY: MOV R0,#107 DJNZ R0,$ DJNZ R1,DLY然后拉高数据线 MOV R0,#25H T2: JNB DQ ,T3 ;等待DS18B20回应 DJNZ R0, T2 JMP T4 T3: SETB FLAG ;置标志位,表示DS1820存在 JMP T5 T4: CLR FLAG ;清标志位,表示DS1820不存在 JMP T7 T5: MOV R0,#117 T6: DJNZ R0,T6 ;时序要求延时一段时间 T7:
11、 RET ;复位子程序- 写入DS18B20子程序 - WRITE_1820:写入DS18B20(有具体的时序要求) MOV R2,#8 ;一共8位数据 WR1: CLR DQ ;总线低位,开始写入 MOV R3,#6 DJNZ R3,$ ;保持16微秒以上 RRC A ;把字节DATA分成8个BIT环移给C MOV DQ, C ;写入一个BIT MOV R3,#23等待 SETB DQ ;重新释放总线 DJNZ R2,WR1 ;写入下一个BIT- 读出DS18B20子程序 - READ_1820: 将温度低位、高位、TH、TL从DS18B20中读出 MOV R4,#4 ;mov r4,#4
12、MOV R1,#TEMPL ; 存入25H、26H、27H、28H RE0:数据一共有8位 RE1: NOP 读前总线保持为低 开始读总线释放 MOV R3,#9延时18微妙 MOV C, DQ ;从总线读到一个BIT MOV R3,#23 ;等待50微秒把读得的位价值环移给A DJNZ R2,RE1 ;读下一个BIT MOV R1,A INC R1 ; R1内数据递增 DJNZ R4,RE0读出子程序= LCD 1602 显示程序 =初始化设置 SET_LCD:对 LCD 做初始化设置及测试 CLR E CALL INIT_LCD ;初始化 LCD CALL STORE_DATA ;将自定义
13、字符存入LCD的CGRAM LCD 初始化子程序 INIT_LCD:8位I/O控制 LCD 接口初始化 MOV A,#38H CALL WR_COMM call delay1 MOV A,#0CH ;开显示,显示光标,光标不闪烁 MOV A,#01H ;清除 LCD 显示屏 显示温度标记子程序 显示温度标记子程序TEMP_BJ: MOV A, #0CBH MOV DPTR,#BJ ;指针指到显示消息 MOV R1 ,#0 MOV R0 ,#2TP1: DJNZ R0,TP1BJ: 自定义字符子程序 将自定义字符写入LCD1602的CGRAM中STORE_DATA: MOV A,#40H MOV R2,#08H MOV DPTR,#D_DATA MOV R3,#00HS_DATA: MOV A,R3 ACALL WR_DATA ;写入数据 INC R3 DJNZ R2,S_DATA-D_DATA: DB 0CH,12H,
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1