读取串口数据_DTH11湿度数据被串口助手用MODBUSRTU协议读取

本文介绍了如何通过MODBUSRTU协议读取DHT11湿度传感器的数据。强调了DHT11在上电后的等待时间、通信间隔以及数据帧的时序特点。提供了程序的多文件结构,并提到了关键的代码文件,如dht11.c、modbusrtu.c和uart.c等。
摘要由CSDN通过智能技术生成

程序采用多文件编写,加QQ5793545索取程序代码和解答

注意事项:  1、DHT11上电后,要等待 1秒 以越过不稳定状态,在此期间不能发送任何指令。  2、DHT11属于低速传感器,两次通信请求之间的间隔时间不能太短,一般来说要不能低于1秒。  3、当前DHT11通信帧的小数部分默认都是0,厂商预留给以后实现。所以一般只读取整数值部分即可。校验和定义为:前4个Byte的总和的低8位。

DHT11时序

总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后,等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后, 读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。

总线为低电平,说明DHT11发送响应信号,DHT11发送响应信号后,再把总线拉高80us,准备发送数据,每一bit数据都以50us低电平时隙开始,高电平的长短定了数据位是0还是1.格式见下面图示.如果读取响应信号为高电平,则DHT11没有响应,请检查线路是否连接正常.当最后一bit数据传送完毕后,DHT11拉低总线50us,随后总线由上拉电阻拉高进入空闲状态。

代码如下

aa4da9fd3dac3c52398f7c523a127953.png

main.c

35972564221de7dd17a6a7022077a1ab.png

config.c

e23beec68b7f4cfb2a3f84e2097ee5da.png

config.h

ac725b088c7f99bdad160817717d365e.png

dht11.c

95e14c8decdbad484b6200f9935900c0.png

dht11.h

edcd2a5e3eef1e403b9c1554c91460cc.png

crc16.c

f17bbfe247b262a69e48dab077ea56c6.png

crc16.h

e1ab73d1abffec8ac6a5a7a5bd047a9d.png

modbusrtu.c

9ddd58ac403c88ac5744453977dd0fdd.png

modbusrtu.h

4130e5206ec391b05cdc1181f204a79c.png

uart.c

d0a9ee40102efe4869d3262d03173573.png

uart.h

b4f73970637d2b237e1d39c342b84a00.png

timer.c

891329270eb922d824196e6b71164887.png

timer.h

04cdb0b0abdb86321ad2e24db5c7ab94.png

stc_it.c

63a014b7061b365c87af4d2abd71b96d.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值