基于ds18b20的多点温度采集系统设计(lcd内容摘要:

NT LCALL LOOK_ALARM JB K3,$ LCALL BEEP_BL JMP PROC_K2 PROC_K1: JB K2,PROC_END LCALL BEEP_BL JNB K2,$ MOV DPTR,RST_A1 MOV A,1 LCALL LCD_PRINT LCALL SET_ALARM LCALL RE_18B20。 将设定的 TH,TL 值写入 DS18B20 LCALL WRITE_E2 PROC_K2: LCALL MENU_OK LCALL TEMP_BJ PROC_END:RET。 *************************** 设定温度报警值 TH、 TL *************************** SET_ALARM:LCALL LOOK_ALARM AS0: JB K1,AS00 LCALL BEEP_BL JNB K1,$ CPL。 UP/DOWN 标记 AS00: JB ,ASZ01。 =1,增加 JMP ASJ01。 =0,减小 ASZ01: JB K2,ASZ02。 TH 值调整 (增加 ) LCALL BEEP_BL INC TEMP_TH MOV A,TEMP_TH CJNE A,120,ASZ011 MOV TEMP_TH,0 ASZ011: LCALL LOOK_ALARM MOV R5,10 LCALL DELAY JMP ASZ01 ASZ02: JB K3,ASZ03。 TL 值调整 (增加 ) LCALL BEEP_BL INC TEMP_TL MOV A,TEMP_TL CJNE A,99,ASZ021 MOV TEMP_TL,00H ASZ021: LCALL LOOK_ALARM MOV R5,10 LCALL DELAY JMP ASZ02 ASZ03: JB K4,AS0。 确定调整 LCALL BEEP_BL JNB K4,$ RET ASJ01: JB K2,ASJ02。 TH 值调整(减少) LCALL BEEP_BL DEC TEMP_TH MOV A,TEMP_TH 14 CJNE A,0FFH,ASJ011 JMP ASJ022 ASJ011: LCALL LOOK_ALARM MOV R5,10 LCALL DELAY JMP AS0 ASJ02: JB K3,ASJ03。 TL 值调整(减少) LCALL BEEP_BL DEC TEMP_TL MOV A,TEMP_TL CJNE A,0FFH,ASJ021 JMP ASJ022 ASJ021: LCALL LOOK_ALARM。 MOV R5,10 LCALL DELAY JMP AS0 ASJ022: CPL JMP ASZ01 ASJ03: JMP ASZ03 RET RST_A1: DB SET ALERT CODE ,0。 *********************** 实测温度值与设定温度值比较子程序 ********************** TEMP_COMP:MOV A,TEMP_TH SUBB A,TEMP_ZH。 减数 被减数,则 JC CHULI1。 借位标志位 C=1,转 MOV A,TEMPFC CJNE A,0BH,COMP SJMP CHULI2 COMP: MOV A,TEMP_ZH SUBB A,TEMP_TL。 减数 被减数,则 JC CHULI2。 借位标志位 C=1,转 MOV DPTR,BJ5 LCALL TEMP_BJ3 CLR RELAY RET CHULI1: MOV DPTR,BJ3 LCALL TEMP_BJ3 SETB RELAY LCALL BEEP_BL RET CHULI2: MOV DPTR,BJ4 LCALL TEMP_BJ3 SETB RELAY LCALL BEEP_BL RET。 TEMP_BJ3: MOV A,0CEH LCALL WCOM MOV R1,0 MOV R0,2 BBJJ3: MOV A,R1 MOVC A,@A+DPTR LCALL WDATA INC R1 DJNZ R0,BBJJ3 RET BJ3: DB H BJ4: DB L BJ5: DB !。 **************************** 显示温度标记子程序 *************************** TEMP_BJ: MOV A,0CBH 15 LCALL WCOM MOV DPTR,BJ1。 指针指到显示消息 MOV R1,0 MOV R0,2 BBJJ1: MOV A,R1 MOVC A,@A+DPTR LCALL WDATA INC R1 DJNZ R0,BBJJ1 RET BJ1: DB 00H,C。 ******************************** 显示正确信息子程序 *************************** MENU_OK: MOV DPTR,M_OK1。 指针指到显示消息 MOV A,1。 显示在第一行 LCALL LCD_PRINT MOV DPTR,M_OK2。 指针指到显示消息 MOV A,2。 显 示在第一行 LCALL LCD_PRINT RET M_OK1: DB DS18B20 OK ,0 M_OK2: DB TEMP: ,0。 ******************************** 显示出错信息子程序 *************************** MENU_ERROR:MOV DPTR,M_ERROR1。 指针指到显示消息 MOV A,1。 显示在第一行 LCALL LCD_PRINT MOV DPTR,M_ERROR2。 指针指到显示消息 1 MOV A,2。 显示在第一行 LCALL LCD_PRINT RET M_ERROR1: DB DS18B20 ERROR ,0 M_ERROR2: DB TEMP: ,0。 ****************************DS18B20 复位子程序 ***************************** RST: SETB DQ NOP CLR DQ MOV R0,6BH。 主机发出延时复位低脉冲 MOV R1,04H TSR1: DJNZ R0,$ MOV R0,6BH DJNZ R1,TSR1 SETB DQ。 拉高数据线 NOP NOP NOP MOV R0,32H TSR2: JNB DQ,TSR3。 等待 DS18B20 回应 DJNZ R0,TSR2 JMP TSR4。 延时 TSR3: SETB FLAG1。 置 1 标志位 ,表示 DS1820 存在 JMP TSR5 TSR4: CLR FLAG1。 清 0 标志位 ,表示 DS1820 不存在 JMP TSR7 TSR5: MOV R0,06BH TSR6: DJNZ R0,$。 时序要求延时一段时间 TSR7: SETB DQ RET。 ************************ DS18B20 暂存器操作子程序 *************************** RE_18B20:JB FLAG1,RE_18B20A RET 16 RE_18B20A: LCALL RST MOV A,0CCH。 跳过 ROM 匹配 LCALL WRITE WR_SCRAPD: MOV A,4EH。 写暂器 LCALL WRITE MOV A,TEMP_TH。 TH(报警上限) LCALL WRITE MOV A,TEMP_TL。 TL(报警下限) LCALL WRITE MOV A,7FH。 12 位精度 LCALL WRITE RET。 ************************ 复制暂存器子程序 ******************************* WRITE_E2:LCALL RST MOV A,0CCH。 跳过 ROM 匹配 LCALL WRITE MOV A,48H。 把暂存器里的温度报警值拷贝到 EEROM LCALL WRITE RET。 *********************** 重读 EEROM 子程序 ******************************** READ_E2:LCALL RST MOV A,0CCH。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。