标题:
基于DS18B20的数字温度计
[打印本页]
作者:
NUIO
时间:
2020-9-24 05:24
标题:
基于DS18B20的数字温度计
DS18B2数字温度传感器具有测温精度高,外围元件少的特点,因此本人设计的此款温度计采用它来采集温度数据
DQ BIT P3.7 ;
swpH equ 0d2H
swpL equ 0ffH
WDLSB DATA 30H ;
WDMSB DATA 31H ;
;***************************************************************
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TMR0 ; Timer0 isr
;********************************************************
TMR0: MOV TH0,#swpH
MOV TL0,#swpL
JB 21H,DSL
MOV P0,42H
ORL P0,#00100000B
SJMP EXIT
DSL:
MOV P0,43H
ORL P0,#00010000B
EXIT:
CPL 21H
RETI
; 主程序
MAIN:
TOINIT:
CLR EA
MOV TMOD,#01H
MOV TH0,#swpH
MOV TL0,#swpL
SETB EA
SETB ET0
SETB TR0
;***********************************************************
;
MOV R2,#2
MOV R0,#42H ;
OVER:
MOV @R0,#00H;
INC R0
DJNZ R2,OVER
LOOP:
LCALL DSWD ;
SJMP LOOP
;**********************************************************
; 从 DS18B20读取温度
DSWD:
LCALL RSTSNR
JNB F0,KEND
MOV R0,#0CCH
LCALL SEND_BYTE
MOV R0,#44H
LCALL SEND_BYTE
SETB EA
MOV 48H,#1
SS2:
MOV 49H,#255
SS1:
MOV 4AH,#255
SS0:
DJNZ 4AH,SS0
DJNZ 49H,SS1
DJNZ 48H,SS2
CLR EA
LCALL RSTSNR
JNB F0,KEND
MOV R0,#0CCH
LCALL SEND_BYTE
MOV R0,#0BEH
LCALL SEND_BYTE
LCALL READ_BYTE
MOV WDLSB,A
LCALL READ_BYTE
MOV WDMSB,A
LCALL TRANS12
KEND:
SETB EA
RET
;**********************************************************
;
TRANS12:
MOV A,30H
ANL A,#0F0H
MOV 3AH,A
MOV A,31H
ANL A,#0FH
ORL A,3AH
SWAP A
MOV B,#10
DIV AB
;MOV 42H,A
MOV 43H,B ;
MOV b,#10
DIV ab
MOV 42H,B
MOV 41H,A
RET
;*************************************************
SEND_BYTE: ;
MOV A,R0
MOV R5,#8
SEN3: CLR C
RRC A
JC SEN1
LCALL WRITE_0
SJMP SEN2
SEN1: LCALL WRITE_1
SEN2: DJNZ R5,SEN3 ;
RET
;*************************************************
READ_BYTE:
MOV R5,#8
READ1: LCALL READ
RRC A
DJNZ R5,READ1 ;
MOV R0,A
RET
;*************************************************
RSTSNR: SETB DQ
NOP
NOP
CLR DQ
MOV R6,#250 ;
DJNZ R6,$
MOV R6,#50
DJNZ R6,$
SETB DQ ;
MOV R6,#15
DJNZ R6,$
CALL CHCK ;
MOV R6,#60
DJNZ R6,$
SETB DQ
RET
;*************************************************
CHCK: MOV C,DQ
JC RST0
SETB F0 ;
SJMP CHCK0
RST0: CLR F0 ;
CHCK0: RET
;*************************************************
WRITE_0:
CLR DQ
MOV R6,#30
DJNZ R6,$
SETB DQ
RET
;*************************************************
WRITE_1:
CLR DQ
NOP
NOP
NOP
NOP
NOP
SETB DQ
MOV R6,#30
DJNZ R6,$
RET
;*************************************************
READ: SETB DQ ;
NOP
NOP
CLR DQ
NOP
NOP
SETB DQ ;
NOP
NOP
NOP
NOP
NOP
NOP
NOP
MOV C,DQ
MOV R6,#23
DJNZ R6,$
RET
;**********************************************
DELAY10: MOV R4,#20
D2: MOV R5,#30
DJNZ R5,$
DJNZ R4,D2
RET
end
复制代码
1.JPG
(214.35 KB, 下载次数: 73)
下载附件
2020-9-24 05:00 上传
原理图
作者:
archer23320
时间:
2020-10-24 15:24
能放一下proteus里的仿真程序吗
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1