子程序清单:
1. 2. 3. 获得原码子程序 温度数据转化子程序
中断子程序(温度上限子程序) 4. 获得显示段码子程序 5. 显示子程序
6. 18b20初始化子程序 7. 18b20读取子程序 8. 18b20写入子程序 9.
温度下限子程序
DQ BIT P2.3 FLAG1 BIT 00H SIGN BIT 01H F_SIGN BIT 02H MSB EQU 30H LSB EQU 31H INTEG EQU 32H DECIM EQU 33H SEG_S EQU 34H SEG_I3 EQU 35H SEG_I2 EQU 36H SEG_I1 EQU 37H SEG_D1 EQU 38H SEG_D2 EQU 39H SEG_O EQU 3AH SEG_C EQU 3BH LOCAT EQU 3CH T_ALARM EQU 3DH L_ALARM EQU 3EH ALARM3 EQU 41H ALARM2 EQU 42H ALARM1 EQU 43H CURERNT3 EQU 45H CURERNT2 EQU 46H CURERNT1 EQU 47H
ORG 0000H AJMP MAIN
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
ORG 000BH LJMP IT0P
ORG 0060H
MAIN: MOV SP,#77H
SETB IT0 SETB EX0
MOV DPTR,#TABLE MOV R0,#38H MOV R1,#30H CLEAR: MOV @R1,#00H INC R1
DJNZ R0,CLEAR
MOV 60H,#50H MOV 61H,#63H MOV LOCAT,#34H MOV T_ALARM,#30 MOV L_ALARM,#18 MOV INTEG,#25
LOOP: CLR EA LCALL INIT_1820 LCALL GET_TEMPER LCALL DATA_PROC
JNB P3.1,F_EN AJMP F_NOT F_EN: LCALL DISPLAY JNB P3.1,F_EN MOV A,LOCAT XCH A,60H XCH A,61H MOV LOCAT,A
F_NOT: CLR C CLR EA
MOV A,L_ALARM CJNE A,INTEG,NEXTP LJMP NEXT2 NEXTP: JNC LALARM SETB P2.4
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
LJMP NEXT2 LALARM: CLR P2.4 AJMP SAFE NEXT2: CLR C
MOV A,T_ALARM CJNE A,INTEG,NEXT AJMP ALARM NEXT: JC ALARM SETB P2.4 AJMP SAFE ALARM: CLR P2.4
SAFE: JB P3.0 ,KILL LCALL L_TEMP KILL: SETB EA
LCALL SEG_GEN LCALL DISPLAY AJMP LOOP
;*********************************** ; 上限温度报警程序(外部中断0) ; 显示40H-47H 内容
;***********************************
IT0P: PUSH LOCAT PUSH ACC PUSH PSW PUSH 00H
MOV CURERNT3,SEG_I3 MOV CURERNT2,SEG_I2 MOV CURERNT1,SEG_I1 MOV R0,#210 START: MOV B,#100 MOV A,T_ALARM DIV AB
MOVC A,@A+DPTR MOV ALARM3,A MOV A,B MOV B,#10 DIV AB
MOVC A,@A+DPTR MOV ALARM2,A
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
MOV A,B
MOVC A,@A+DPTR MOV ALARM1,A MOV LOCAT,#40H LCALL DISPLAY JNB P3.0,FUN1 JNB P3.1,FUN2 DJNZ R0,START POP 00H POP PSW POP ACC POP LOCAT RETI
FUN1: MOV R0,#210 ;等待3秒无键按下则返回主程序 INC T_ALARM STAY1: LCALL DISPLAY ;判断按键放开 JNB P3.0,STAY1 LJMP START FUN2: MOV R0,#210 DEC T_ALARM STAY2: LCALL DISPLAY JNB P3.1,STAY2 LJMP START RETI
;*************************** ; 下限温度报警程序
;*************************** L_TEMP:
WAITL: LCALL DISPLAY JNB P3.0,WAITL PUSH LOCAT
MOV CURERNT3,SEG_I3 MOV CURERNT2,SEG_I2 MOV CURERNT1,SEG_I1 MOV R0,#210 MOV LOCAT,#40H STARTL:MOV B,#100 MOV A,L_ALARM DIV AB
MOVC A,@A+DPTR MOV ALARM3,A MOV A,B MOV B,#10 DIV AB
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
MOVC A,@A+DPTR MOV ALARM2,A MOV A,B
MOVC A,@A+DPTR
MOV ALARM1,A LCALL DISPLAY JNB P3.1,FUNL1 JNB P3.2,FUNL2 DJNZ R0,STARTL LJMP ENDL
FUNL1: MOV R0,#210
INC L_ALARM STAYL1:LCALL DISPLAY JNB P3.1,STAYL1 LJMP STARTL FUNL2: MOV R0,#210 DEC L_ALARM STAYL2:LCALL DISPLAY JNB P3.2,STAYL2 LJMP STARTL ENDL: POP LOCAT CLR IE0 RET
;****************************** ;DS18b20复位初始化子程序
;**************************** INIT_1820:
SETB DQ NOP
CLR DQ
MOV R1,#3 ;546us低电平 TSR1: MOV R0,#88 DJNZ R0,$ DJNZ R1,TSR1
SETB DQ ;释放总线 NOP NOP NOP
MOV R0,#25H TSR2:
JNB DQ, TSR3;等待回应
基于18b20的电子温度计课程设计,可用两位小数显示开式,华氏,摄氏温标,三个按键。可设置上限,下限报警。程序均经过上电调试。(不含硬件图,仅供参考。)
DJNZ R0,TSR2 LJMP TSR4 TSR3:
SETB FLAG1 ;监测到18b20则把标志位置1 LJMP TSR5 TSR4: