DS18B20 数字温度计 下面是 DS18B20 测温实验源程序 ORG 0000H SP,#60H P0,#0FFH ;开机初始化
START: MOV MOV MOV MOV
P1,#0FEH P2,#0FFH P3,#0FFH
MOV
MAIN:
LCALL LCALL AJMP
GET_TEMPER DISP
;调用读温度子程序 ;调用数码管显示子程序 ;重复循环
MAIN
;------ 读 DS18B20 传感器的温度值 -----GET_TEMPER: SETB P3.3 LCALL JB RET DSS2: MOV LCALL MOV LCALL LCALL MOV LCALL MOV LCALL A,#0CCH WR18B20 A,#44H WR18B20 RST18B20 ;准备读温度前先复位 DS18B20 ;跳过 ROM 匹配 ;向 DS18B20 发出温度转换命令 ;跳过 ROM 匹配 RST18B20 00H,DSS2 ;复位 DS18B20
A,#0CCH WR18B20 A,#0BEH WR18B20
;向 DS18B20 发出读温度命令
LCALL RET
RE18B20
;读出温度数据
;------ DS18B20 复位初始化程序 -----RST18B20: SETB NOP CLR MOV MOV DSR1: DJNZ MOV DJNZ SETB NOP NOP NOP MOV DSR2: JNB DJNZ R0,#25H P3.3,DSR3 R0,DSR2 DSR4 00H DSR5 00H DSR7 R0,#06BH R0,DSR6 P3.3 ;延时一段时间 ;清标志位,表示 DS1820 不存在 ;置标志位,表示 DS1820 存在 ;等待 DS18B20 回应 P3.3 R0,#06BH R1,#03H R0,DSR1 R0,#6BH R1,DSR1 P3.3 ;拉高数据线 ;主机发出复位低脉冲 P3.3
LJMP DSR3: SETB LJMP DSR4: CLR LJMP DSR5: MOV DSR6: DSR7: DJNZ SETB
RET ;------ 写 DS18B20 的子程序 -----WR18B20: MOV CLR WR1: CLR MOV DJNZ RRC MOV MOV DJNZ SETB NOP DJNZ SETB RET ;------ 从 DS18B20 中读温度数据程序 -----RE18B20: MOV MOV RE00: RE01: MOV CLR SETB NOP NOP CLR P3.3 R4,#2 R1,#2FH R2,#8 C P3.3 R2,WR1 P3.3 R2,#8 C P3.3 R3,#6 R3,$ A P3.3,C R3,#23 R3,$ P3.3
NOP NOP NOP SETB MOV RE10: DJNZ MOV MOV RE20: DJNZ RRC DJNZ MOV DEC DJNZ RET ;-------- 显示子程序 -------DISP: MOV MOV RRC MOV RRC MOV RRC MOV RRC MOV MOV A,2FH C,70H A C,71H A C,72H A C,73H A 2FH,A A,2FH A R2,RE01 @R1,A R1 R4,RE00 P3.3 R3,#09 R3,RE10 C,P3.3 R3,#23 R3,RE20
MOV DIV MOV MOV MOV MOV MOVC MOV CLR SETB SETB SETB SETB LCALL MOV MOV MOVC MOV CLR SETB SETB SETB SETB
B,#10 AB 30H,A 31H,B A,30H DPTR,#SGTB A,@A+DPTR P0,A P2.2 P2.0 P2.1 P2.3 P2.4 YS4722U A,31H DPTR,#SGTB A,@A+DPTR P0,A P2.3 P2.0 P2.1 P2.2 P2.4 YS4722U ;显示温度“个位”值 ;显示温度“十位”值
LCALL MOV MOV CLR
A,#01000110B P0,A P2.4 ;显示温度符号“ ℃”
SETB SETB SETB SETB LCALL RET
P2.0 P2.1 P2.2 P2.3 YS4722U
;************* 8 位共阳数码管显示器字型码表 ***************** SGTB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,89H,0A3H,8CH,0C8H YS4722U: MOV Y3: MOV DJNZ DJNZ RET END R4,#10 ;延时子程序 R5,#216 R5,$ R4,Y3