目录
一、DHT11概述
数据传送逻辑
模块一次完整的数据传输为40bit,高位在前
数据格式
8bit湿度整数数据+8bit 湿度小数数据 +8bi 温度整数数据 +8bit 温度小数数据 +8bit 校验和
通讯过程时序图
二、检测模块是否存在
根据如下时序图,做通信初始化,并检测模块是否存在,功能是否正常
时序逻辑分析
//a点DHT11先是高电平
DHT11 = 1;
_nio_();//维持几微秒
//b点DHT11被拉低
DHT11 = 0;
//延时至少18ms
Delay18ms();
//c点DHT11被拉高
DHT11 = 1;
//卡d点,如果d点未被拉低,那么就会一直卡在这个循环里
while(DHT11);
//卡e点,如果e点未被拉高,那么就会一直卡在这个循环里
while(!DHT11);
//卡f点,如果未被拉低,那么就会一直卡在循环里
while(DHT11);
代码实现
void Init_DH111()
{
//通过分析时序图可得
//1.a点 = 1
DHT11 = 1;
//2.b点 = 0;
DHT11 = 0;
//3.延时至少18ms
Delay25ms();
//4.c点 = 1
DHT11 = 1;
//5.20-40us后在80us内都是拉低状态,选择其中一点检测是否为低电平,如果是就证明DHT11存在
while(DHT11);
while(!DHT11);
while(DHT11);
}
三、读取温湿度数据
DHT11传输0的时序分析
DHT11传输1的时序分析
判断是传输0还是传输1,可以通过维持高电平的