温湿度DHT11传感器时序详解

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器

采集范围:温度0-50°±2°,湿度:20-90%RH。

采用单总线双向串行通信协议,每次采集都要由单片机发起开始信号,然后DHT11会向单片机发送响应并开始传输40位数据帧,高位在前。数据格式为:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验位,温湿度小数部分默认为0,即单片机采集的数据都是整数,校验位为4个字节的数据相加取结果的低8位数据作为校验和:

温湿度DHT11传感器时序详解_第1张图片

DHT11通信时序:

温湿度DHT11传感器时序详解_第2张图片

单片机完成一次采集过程:

主机或者单片机需要发送一个开始信号给DHT11传感器:主机先将IO设置为输出,然后主机拉低总线(时间需要大于18ms)后设置为输入并释放数据总线,等待从机(DHT11)响应,主机开始的信号时序为:

温湿度DHT11传感器时序详解_第3张图片


如果传感器正常且存在,则会在收到主机的开始信号后拉低总线并持续80us来通知主机此时传感器正常,然后拉高总线80us,通知主机准备接收,响应的时序为:

温湿度DHT11传感器时序详解_第4张图片

接着传感器开始按照高位在前的顺序将数据按照如下的格式,一位一位的输出给主机:

温湿度DHT11传感器时序详解_第5张图片

程序要区分数据0和数据1的格式:先判断此时引脚的电平状态,如果是低电平就一直循环等待,直到高电平出现,高电平出现后延时40us,并读取延时后的电平状态,如果此时是高电平,则数据为1,否则为0

传输完40位数据后,传感器再次输出一个50us的低电平后,将数据总线释放,采集过程结束。

程序可以参考:点击打开链接

你可能感兴趣的:(小白学习系列,佛系程序员)