请问单片机温湿度采集编程的思路

2023-04-09

SHT75的传感器,编程的思路是什么? 参考知识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本回答被提问者采纳

相似知识
请问如何在51单片机上将温湿度传感器采集的数据通过无线模块发送给电脑? 既然是无线发射接受,那一般使用wifi模块传输比较简单,在电脑上接受也简单,市场有带串口功能wifi模块,直接可以使用单片机的串口驱动。但是,既然使用wifi模块作为温湿度数据传输,那么直接可以使用w
基于单片机的温湿度采集与控制程序(C语言) 给你一个DS18B20的温度采集程序!//ICC-AVRapplicationbuilder:2009-10-2510:43:39//Target:M16//Crystal:16.000Mhz#inc
基于51单片机的温湿度采集仪,实现语音播报 语音芯片可以选用ISD1820,或者唯创的WTV-SR语音模块参考知识1淘宝搜语音播报模块,3.5元一片 参考知识B语音这里不能用ISD1820,因为他只有一段语音。你这个需要用多段语音播报的芯片,例
stc15单片机 我在用dht11采集温湿度,然后通过串口1发送到电脑的时候 你改为P1^7(包括接线)估计就好了,如果是标准51的模式,用P0口做IO要加上拉电阻参考知识1这是我的程序,希望可以给你参考链接:https://pan.baidu.com/s/1c22FLUo密码
什么是PLC上位机编程 监控系统上位机一般都是工控机!也就是工业计算机,通过里面的软件和各种接口,例如串口、以太网等等,采集各种设备的数据,例如PLC、仪表、变频器等等,工控机把数据采集上来,通过软件把数据显示到画面上,可以
求助,数据采集卡怎么和温度传感器连接 iUSBDAQ数据采集卡功能很多,在工业测量记录,学校教学等方面使用非常广泛,在不同的场合起到不同的作用。现在我们举出一种的例子教会您如何配套使用:    &n
基于51单片机及RS485总线的温湿度变送模块设计 :基于AT89C51单片机,用DS18B20温度传感器和湿敏传感器设计大棚温建议使用JCJ100N数字式温湿度变送器,工业级产品,精度高,温度、湿度参考知识1问题补充:基于AT89C51单片机,用DS
一个温湿度自动控制系统都由啥硬件组成?? 控制芯片(单片机、DSP或ARM均可,这个比较简单,51单片机就OK),温度湿度采集装置(也就是温湿度传感器),加湿除湿装置软件部分主要是控制主控制芯片读取温度湿度数据,并根据情况去控制加湿除湿升温降