dht11硬件原理图

dht11工作原理:
当主机没有和dht11交互时,总线处于空闲状态,在上拉电阻的作用下,处于高电平
当主机和dht11交互时,总线处于通信状态,完整通信过程如下:
(时序图)

1.主机将总线I/O配置为输出模式,准备向dht11发送数据。
2.主机将总线拉低至少18ms,以此作为起始信号。再将总线拉高并延时20-40us,以此表示起始信号的结束。
3.主机将总线I/O配置为输入模式,准备接收dht11的数据
4.当dht11检测到起始信号后,开始应答,回传采集到的传感器数据。
(dht11先将总线拉低80us作为对主机的应答(ACK),然后将总线拉高80us,准备回传采集到的温湿度数据。温湿度数据以固定的帧格式发送)

一帧40个bit,每一个bit传输时序逻辑:dht11将总线拉低50us,输出高电平,持续26-28us则为逻辑0,70us则为逻辑1
5.一帧数据完成后,dht11释放总线,总线在上拉电阻作用下恢复高电平
程序设计在采集到40bit数据后,检验校验位
参考博客(整理思路鉴于此): https://www.cnblogs.com/lulipro/p/10815338.html
(arduino实现代码可参考上述博客)
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
· 分享4款.NET开源、免费、实用的商城系统