mov column2,#40
mov pagef2,#2 ;.
mov code,#11
lcall writeright
mov column2,#48
mov pagef2,#2
mov code,56H
lcall writeright
MOV A,29H
MOV C,40H ;28的位地址
RRC A
MOV C,41H
RRC A
MOV C,42H
RRC A
MOV C,43H
RRC A
MOV 51H,A
ANL 29H,#0FH
MOV A,29H
MOV B,#6
MUL AB
MOV 50H,A
mov a,51H
mov b,#10
div ab
mov 43H,a
mov 42H,b
MOV A,50H
MOV B,#10
DIV AB
MOV 41H,A
MOV 40H,B
mov column2,#24 ;实际温度
mov pagef2,#4
mov code,43h
lcall writeright
mov column2,#32
mov pagef2,#4
mov code,42h
lcall writeright
mov column2,#40
mov pagef2,#4 ;.
mov code,#11
lcall writeright
mov column2,#48
mov pagef2,#4
mov code,41h
lcall writeright
RET
;***********************DS18B20复位初始化子程序***********
INIT_1820:
SETB P3.1
NOP
CLR P3.1;主机发出延时537微秒的复位低脉冲
MOV R1,#3
TSR1: MOV R0,#107
DJNZ R0,$
DJNZ R1,TSR1
SETB P3.1 ;然后拉高数据线
NOP
NOP
NOP
MOV R0,#25H
TSR2: JNB P3.1,TSR3 ;等待DS18B20回应
DJNZ R0,TSR2
www.751com.cn表示DS1820存在
LJMP TSR5
TSR4: CLR FLAG1 ; 清标志位,表示DS1820不存在
LJMP TSR7
TSR5: MOV R0,#117
TSR6: DJNZ R0,TSR6 ; 时序要求延时一段时间
TSR7: SETB P3.1
RET ; 读出转换后的温度值
;***********************读温度子程序*****************
GET_TEMPER:
SETB P3.1
LCALL INIT_1820;先复位DS18B20
JB FLAG1,TSS2
RET ; 判断DS1820是否存在?若DS18B20不存在则返回
TSS2:
MOV A,#0CCH ; 跳过ROM匹配
LCALL WRITE_1820
MOV A,#44H ; 发出温度转换命令
LCALL WRITE_1820;通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒
LCALL DISPLAY
LCALL INIT_1820;准备读温度前先复位
MOV A,#0CCH ; 跳过ROM匹配
LCALL WRITE_1820
MOV A,#0BEH ; 发出读温度命令
LCALL WRITE_1820
LCALL READ_18200
RET
;*************************写命令子程序**********
WRITE_1820:
MOV R2,#8
CLR C
WR1: CLR P3.1
MOV R3,#6
DJNZ R3,$
RRC A
MOV P3.1,C
MOV R3,#23
DJNZ R3,$
SETB P3.1
NOP
DJNZ R2,WR1
SETB P3.1
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>