热门关键词:

温湿度传感器SHT11与单片机的数据传输协议及转换程序

  • 该文件为rar格式
  • 文件大小:1.96K
  • 浏览次数
  • 发布时间:2015-04-22
文件介绍:

本资料为 rar 格式,下载需要5积分

温湿度传感器SHT11 温湿度传感器SHT11与单片机的数据传输协议及转换程序1与单片机的数据传输协议及转换程序
;TAO.ASM V8.0
;-40--+120T
;0--100H
;2005
;
SCK BIT P3.1 ;SHT11
DATAI BIT P3.0 ;SHT11
;
ORG 0000H
CLR EA
AJMP MAIN
ORG 0040H
MAIN: NOP
CLR SCK ;T
SETB DATAI
ACALL TS1 ; 软件复位,启动传输
SETB DATAI
ACALL CT01 ; 测温度命令
SETB DATAI
NOP
T001: JNB DATAI,RCT01 ;11-210mS
NOP
NOP
AJMP T001
RCT01: ACALL RC01 ;把两个字节测量数据送到R2,R3
MOV 70H,R2
MOV 71H,R3
;
CLR C
MOV R4,70H
MOV R5,71H
MOV R6,#3EH ;温度为120度时的测量数据值“16000”
MOV R7,#80H
ACALL NSUB ;测量数据与最大值“16000”比较,如果超出范围,定为“16000”
JNC THH1
MOV 62H,R4
MOV 63H,R5
AJMP TJX1
THH1: MOV 62H,R6
MOV 63H,R7 ;62,63 存没除以100的温度值
TJX1: CLR C ; L
TJX2: MOV R4,#00H
MOV R5,#00H
MOV R6,62H
MOV R7,63H
MOV R2,#00H ;/100 也就是 DATA*0.01
MOV R3,#64H
ACALL NDIV1 ;R4R5R6R7/R2R3=R6R7
MOV 7AH,R6
MOV 7BH,R7 ;0-160T 即-40--+120T
NOP
ACALL XYSHC ;延时程序
NOP

CLR SCK ;RH
SETB DATAI
ACALL TS1
NOP
ACALL CT11 ;测湿度命令
NOP
T0012: JNB DATAI,RCT12 ;11-210mS
AJMP T0012
RCT12: ACALL RC01 ;将测量数据送到R2,R3
NOP
MOV 74H,R2
MOV 75H,R3
;
MOV R2,74H
MOV R3,75H
MOV R6,74H
MOV R7,75H
ACALL QKUL ;R2R3XR6R7=R4R5R6R7,按照公式DATA*DATA
MOV R2,#27H
MOV R3,#10H ;10000
ACALL NDIV1 ; DATA*DATA*0.0001
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
MOV R6,#01H
MOV R7,#18H ;280
ACALL QKUL
MOV R2,#00H
MOV R3,#64H ;100
ACALL NDIV1 ;DATA*DATA*0.0001*2.8
MOV A,R6
MOV R4,A
MOV A,R7
MOV R5,A
MOV R2,#01H
MOV R3,#90H ;DATA*DATA*2.8+400
ACALL NADD
MOV 7EH,R6
MOV 7FH,R7 ;7EH,7FH存(DATA*DATA*0.0001*2.8+400)
MOV R2,74H ;DATA
MOV R3,75H
MOV R6,#01H
MOV R7,#95H ;
ACALL QKUL ;DATA* 405
MOV R2,#00H
MOV R3,#64H
ACALL NDIV1 ; DATA* 4.05
MOV A,R6
MOV R4,A
MOV A,R7
MOV R5,A
MOV R6,7EH
MOV R7,7FH
ACALL NSUB ;R4R5-R6R7=R2R3
MOV 7CH,R2 ;RHL ,DATA* 4.05-(DATA*DATA*0.0001*2.8+400)线性值扩大100倍
MOV 7DH,R3
MOV R2,74H
MOV R3,75H ;
MOV R6,#00H ;
MOV R7,#08H
ACALL QKUL ;DATA*8
MOV R2,#03H ;
MOV R3,#0E8H ;1000
ACALL NDIV1 ; DATA*0.008
MOV A,R6
MOV R4,A
MOV A,R7
MOV R5,A
MOV R2,#00H ;
MOV R3,#01H
ACALL NADD ;DATA*0.008+1
MOV 64H,R6
MOV 65H,R7 ;64,65H存DATA*0.008+1
MOV R4,7AH ;
MOV R5,7BH ;温度值T
MOV R6,#00H ;
MOV R7,#41H ;65
CLR C
ACALL NSUB ; T-65 温度-40到+120时减25,此程序中温度0-160
JC RHH1 ; 如果(T-65)小于0,则执行RHH1,结果=RHL-(T-65)*(DATA*0.008+1)
MOV R6,64H
MOV R7,65H
ACALL QKUL ;(T-65)*(DATA*0.008+1)
MOV A,R6
MOV R2,A
MOV A,R7
MOV R3,A
MOV R4,7CH
MOV R5,7DH
ACALL NADD ;(T-65)*(DATA*0.008+1)+RHL
MOV A,R6 ;
MOV R2,A
MOV A,R7
MOV R3,A
AJMP ZHJ
RHH1: MOV R4,#00H ;
MOV R5,#41H
MOV R6,7AH
MOV R7,7BH
ACALL NSUB ;
MOV R6,64H
MOV R7,65H
ACALL QKUL ;
MOV R4,7CH
MOV R5,7DH
ACALL NSUB ; R2,R3里的数可以直接作为湿度值
ZHJ: MOV R6,#00H ; 100
MOV R7,#64H
ACALL QKUL ;R2R3XR6R7=R4R5R6R7
MOV R2,#27H ;/10000
MOV R3,#10H
ACALL NDIV1 ;R4R5R6R7/R2R3=R6R7
MOV 8AH,R6 ;OUT-RH
MOV 8BH,R7
NOP
ACALL XYSHC
NOP
;
AJMP MAIN
NOP
RET
TS1: SETB DATAI
CLR SCK
MOV R7,#09H ;软件复位
TS2: SETB SCK
CLR SCK
DJNZ R7,TS2
SETB SCK
CLR DATAI
CLR SCK
SETB SCK
SETB DATAI
CLR SCK
RET
;



CT01: CLR SCK ;测温度命令
CLR DATAI
MOV R7,#05H ;
CT02: SETB SCK
CLR SCK
DJNZ R7,CT02
SETB SCK
CLR SCK
SETB DATAI
SETB SCK
CLR SCK
SETB SCK
CLR SCK
CLR DATAI
SETB SCK
CLR SCK
SETB DATAI
RET

CT11: CLR SCK ;测湿度命令
CLR DATAI
MOV R7,#05H ;
CT12: SETB SCK
CLR SCK
DJNZ R7,CT12
SETB DATAI
SETB SCK
CLR SCK
CLR DATAI
SETB SCK
CLR SCK
SETB DATAI
SETB SCK
CLR SCK
CLR DATAI ;
SETB SCK
CLR SCK
SETB DATAI
RET
;
NADD: MOV A,R5 ;R2,R3+R4,R5-->R6,R7
ADD A,R3
MOV R7,A
MOV A,R4
ADDC A,R2
MOV R6,A
RET
;
NSUB: MOV A,R5 ;R4,R5,-R6,R7-->R2,R3
CLR C
SUBB A,R7
MOV R3,A
MOV A,R4
SUBB A,R6
MOV R2,A
RET
;
QKUL: MOV A,R3 ;R2,R3XR6,R7-->R4,R5,R6,R7
MOV B,R7
MUL AB
XCH A,R7
MOV R5,B
MOV B,R2
MUL AB
ADD A,R5
MOV R4,A
CLR A
ADDC A,B
MOV R5,A
MOV A,R6
MOV B,R3
MUL AB
ADD A,R4
XCH A,R6
XCH A,B
ADDC A,R5
MOV R5,A
MOV PSW.5,C
MOV A,R2
MUL AB
ADD A,R5
MOV R5,A
CLR A
MOV ACC.0,C
MOV C,PSW.5
ADDC A,B
MOV R4,A
RET
;
NDIV1: MOV A,R5 ;R4R5R6R7/R2R3=R6R7
CLR C
SUBB A,R3
MOV A,R4
SUBB A,R2
JNC NDVE1
MOV B,#16
NDVL1: CLR C
MOV A,R7
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5
RLC A
MOV R5,A
XCH A,R4
RLC A
XCH A,R4
MOV PSW.5,C
CLR C
SUBB A,R3
MOV R1,A
MOV A,R4
SUBB A,R2
JB PSW.5,NDVM1
JC NDVD1
NDVM1: MOV R4,A
MOV A,R1
MOV R5,A
INC R7
NDVD1: DJNZ B,NDVL1
CLR PSW.5
RET
NDVE1: SETB PSW.5
RET
;
XYSHC: MOV R6,#6FH ;
YYWC: MOV R7,#6FH ;
YYNC: NOP
DJNZ R7,YYNC
DJNZ R6,YYWC
NOP
;
RC01: SETB DATAI ;接收2个字节的测量数据
CLR SCK
CLR A
MOV R7,#08H
RC02: SETB SCK
MOV C,DATAI
RLC A
CLR SCK
DJNZ R7,RC02
CLR SCK
MOV R2,A
CLR DATAI
SETB SCK
CLR SCK
SETB DATAI
CLR A
MOV R7,#08H
RC03: SETB SCK
MOV C,DATAI
RLC A
CLR SCK
DJNZ R7,RC03
CLR SCK
MOV R3,A
CLR DATAI
SETB SCK
CLR SCK
SETB DATAI
RET
;
END

正在加载...请等待或刷新页面...
发表评论
验证码 验证码加载失败