《基于单片机的多通道温度检测源代码》由会员分享,可在线阅读,更多相关《基于单片机的多通道温度检测源代码(38页珍藏版)》请在金锄头文库上搜索。
1、基于单片机的多通道温度检测源代码基于单片机的多通道温度检测源代码CLR P3.7MAIN:MOV 38H,#00HMOV 39H,#00HMOV 3AH,#00HMOV 3BH,#00HLCALL GET_TEMPER LCALL TEMPRROMOV P2,#06HLCALL PRO;-MOV 38H,#00HMOV 39H,#00HMOV 3AH,#00HMOV 3BH,#00HLCALL GET_TEMPER2 LCALL TEMPRROMOV P2,#5BHLCALL PRO;-MOV 38H,#00HMOV 39H,#00HMOV 3AH,#00HMOV 3BH,#00HLCALL
2、GET_TEMPER3LCALL TEMPRROMOV P2,#4FHLCALL PRO;-MOV 38H,#00HMOV 39H,#00HMOV 3AH,#00HMOV 3BH,#00HLCALL GET_TEMPER4LCALL TEMPRROMOV P2,#66HLCALL PRO;-MOV 38H,#00HMOV 39H,#00HMOV 3AH,#00HMOV 3BH,#00HLCALL GET_TEMPER5LCALL TEMPRROMOV P2,#6DHLCALL PRO;-MOV 38H,#00HMOV 39H,#00HMOV 3AH,#00HMOV 3BH,#00HLCALL
3、GET_TEMPER6LCALL TEMPRROMOV P2,#7DHLCALL PRO;-MOV 38H,#00HMOV 39H,#00HMOV 3AH,#00HMOV 3BH,#00HLCALL GET_TEMPER7LCALL TEMPRROMOV P2,#07HLCALL PRO;-MOV 38H,#00HMOV 39H,#00HMOV 3AH,#00HMOV 3BH,#00HLCALL GET_TEMPER8LCALL TEMPRROMOV P2,#7FHLCALL PROLJMP MAIN;=CHL1GET_TEMPER: SETB P1.0H ; 定时入口 BCD: LCALL
4、INIT_1820 JB 00H,S22 LJMP BCD ; 若 DS18B20 不存在则返回 S22: LCALL DELAY1 MOV A,#0CCH ; 跳过 ROM 匹配-0CC 命令LCALL WRITE_1820 MOV A,#44H ; 发出温度转换命令 LCALL WRITE_1820 NOP LCALL DELAY1 CBA:LCALL INIT_1820 JB 00H,ABC LJMP CBA ABC:LCALL DELAY1 MOV A,#0CCH ; 跳过 ROM 匹配 LCALL WRITE_1820 MOV A,#0BEH ; 发出读温度命令 LCALL WRIT
5、E_1820 LCALL READ_18200 ;READ_1820 RET ;=READ_1820: MOV R2,#8 RE1: CLR C SETB P1.0H NOP NOP CLR P1.0H NOP NOP NOP SETB P1.0H MOV R3,#7 DJNZ R3,$ MOV C,P1.0H MOV R3,#23 DJNZ R3,$ RRC A DJNZ R2,RE1 RET ;=WRITE_1820: MOV R2,#8 CLR C WR1: CLR P1.0H MOV R3,#6 DJNZ R3,$ RRC A MOV P1.0H,C MOV R3,#23 DJNZ R
6、3,$ SETB P1.0H NOP DJNZ R2,WR1 SETB P1.0H RET;=READ_18200: MOV R4,#2 ; 将温度高位和低位从 DS18B20 中读出 MOV R1,#31H ; 低位存入 30H(TEMPER_L),高位存入 31H(TEMPER_H) RE00: MOV R2,#8 RE01: CLR C SETB P1.0H NOP NOP CLR P1.0H NOP NOP NOP SETB P1.0H MOV R3,#7 DJNZ R3,$ MOV C,P1.0H MOV R3,#23 DJNZ R3,$ RRC A DJNZ R2,RE01 MOV
7、 R1,A DEC R1 DJNZ R4,RE00 RET ;=INIT_1820: SETB P1.0H NOP CLR P1.0H MOV R0,#250TSR1: DJNZ R0,TSR1 ; 延时 520us SETB P1.0H MOV R0,#25H ;96US-25H TSR2: DJNZ R0,TSR2 JNB P1.0H,TSR3;如 D0 为低则复位成功,DS18B20 存在 LJMP TSR4 ; 延时 TSR3: SETB 00H ; 置标志位,表示 DS1820 存在 LJMP TSR5 TSR4: CLR 00H ; 清标志位,表示 DS1820 不存在 LJMP
8、TSR7 TSR5: MOV R0,#06BH ;200US TSR6: DJNZ R0,TSR6 ; 延时 TSR7: SETB P1.0H ;拉高总线RET;= GET_TEMPER2: SETB P1.1H ; 定时入口 BCD2: LCALL INIT_18202 JB 00H,S222 LJMP BCD2 ; 若 DS18B20 不存在则返回 S222: LCALL DELAY1 MOV A,#0CCH ; 跳过 ROM 匹配-0CC 命令LCALL WRITE_18202 MOV A,#44H ; 发出温度转换命令 LCALL WRITE_18202 NOP LCALL DELAY
9、1 CBA2:LCALL INIT_18202 JB 00H,ABC2 LJMP CBA2 ABC2:LCALL DELAY1 MOV A,#0CCH ; 跳过 ROM 匹配 LCALL WRITE_18202 MOV A,#0BEH ; 发出读温度命令 LCALL WRITE_18202 LCALL READ_182002 ;READ_1820 RET ;=READ_18202: MOV R2,#8 RE12: CLR C SETB P1.1H NOP NOP CLR P1.1H NOP NOP NOP SETB P1.1H MOV R3,#7 DJNZ R3,$ MOV C,P1.1H M
10、OV R3,#23 DJNZ R3,$ RRC A DJNZ R2,RE12 RET ;=WRITE_18202: MOV R2,#8 CLR C WR12: CLR P1.1H MOV R3,#6 DJNZ R3,$ RRC A MOV P1.1H,C MOV R3,#23 DJNZ R3,$ SETB P1.1H NOP DJNZ R2,WR12 SETB P1.1H RET;=READ_182002: MOV R4,#2 ; 将温度高位和低位从 DS18B20 中读出 MOV R1,#31H ; 低位存入 30H(TEMPER_L),高位存入 31H(TEMPER_H) RE002: M
11、OV R2,#8 RE012: CLR C SETB P1.1H NOP NOP CLR P1.1H NOP NOP NOP SETB P1.1H MOV R3,#7 DJNZ R3,$ MOV C,P1.1H MOV R3,#23 DJNZ R3,$ RRC A DJNZ R2,RE012 MOV R1,A DEC R1 DJNZ R4,RE002 RET ;=INIT_18202: SETB P1.1H NOP CLR P1.1H MOV R0,#250TSR12: DJNZ R0,TSR12 ; 延时 520us SETB P1.1H MOV R0,#25H ;96US-25H TSR2
12、2: DJNZ R0,TSR22 JNB P1.1H,TSR32;如 D0 为低则复位成功,DS18B20 存在 LJMP TSR42 ; 延时 TSR32: SETB 00H ; 置标志位,表示 DS1820 存在 LJMP TSR52 TSR42: CLR 00H ; 清标志位,表示 DS1820 不存在 LJMP TSR72 TSR52: MOV R0,#06BH ;200US TSR62: DJNZ R0,TSR62 ; 延时 TSR72: SETB P1.1H ;拉高总线RET;= GET_TEMPER3: SETB P1.2H ; 定时入口 BCD3: LCALL INIT_182
13、03 JB 00H,S223 LJMP BCD3 ; 若 DS18B20 不存在则返回 S223: LCALL DELAY1 MOV A,#0CCH ; 跳过 ROM 匹配-0CC 命令LCALL WRITE_18203MOV A,#44H ; 发出温度转换命令 LCALL WRITE_18203NOP LCALL DELAY1 CBA3:LCALL INIT_18203JB 00H,ABC3 LJMP CBA3ABC3:LCALL DELAY1 MOV A,#0CCH ; 跳过 ROM 匹配 LCALL WRITE_18203MOV A,#0BEH ; 发出读温度命令 LCALL WRITE_18203LCALL READ_182003 ;READ_1820 RET ;=READ_18203: MOV R2,#8 RE13: CLR C SETB P1.2H NOP NOP CLR P1.2H NOP NOP NOP SETB P1.2H MOV R3,#7 DJNZ R3