DHT11温湿度传感器

产品概述

1. DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,应用领域:暖通空调;汽车;消费品;气象站;湿度调节器;除湿器;家电;医疗;自动控制

2. 特点

·相对湿度和温度测量

·全部校准,数字输出

·长期稳定性

·超长的信号传输距离:20米

·超低能耗:休眠

·4 引脚安装:可以买封装好的完全互换 : 直接出结果,不用转化

接线

数据传送逻辑

只有一根数据线DATA,上官一号发送序列指令给DHT11模块,模块一次完整的数据传输为40bit,高位先出

数据格式

8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和

通讯过程时序图

3.单片机 检测模块是否存在

A : dht = 1

B :dht = 0延时30ms

C: dht = 1在60us后读d点,如果d点是低电平(被模块拉低),说明模块存在

为什么是60us呢?

因为C点到D点是20-40us,响应DHT信号的时间是80us,所以从20us~80us(0~100us)区间的60us可以判断DHT信号被拉低为低电平。

代码实现

复制代码
#include "reg52.h"
#include "intrins.h"

sbit ledOne = P3^7;
sbit dht    = P3^3;

void Delay1000ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	_nop_();
	i = 8;
	j = 1;
	k = 243;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void Delay30ms()		//@11.0592MHz
{
	unsigned char i, j;

	i = 54;
	j = 199;
	do
	{
		while (--j);
	} while (--i);
}

void Delay60us()		//@11.0592MHz
{
	unsigned char i;

	i = 25;
	while (--i);
}


void check_DHT()
{

	//a: dht = 1

	dht = 1;

	//b: dht = 0;

	dht = 0;
	
    //延迟30ms

	Delay30ms();
	//c: dht = 1
    
	dht = 1;
	
    //dht = 1在60us后读d点,如果d点是低电平(被模块拉低),说明模块存在

	Delay60us();
	if(dht == 0){
			ledOne = 0; //模块被拉低灯亮
	}

}


void main()
{
	ledOne = 1;
	Delay1000ms();
	Delay1000ms();
	
	
	check_DHT();
	while(1);
}

main()函数的bug:

由以下手册可得加延迟函数,while(1)函数如果不加,就会出现灯闪和灭的状态,因为没有while()函数,main函数会退出重新开始,导致忽闪忽灭的现象

DHT11传输0与1时序分析

DH11传输0的时序分析

DH11传输1的时序分析

通过手册我们可以知道DATA发送数据的原理

40bit = 5个 char

相关推荐
生涯にわたる学び16 分钟前
ARM 实操 流水灯 按键控制 day53
arm开发·嵌入式硬件
whaosoft-14316 分钟前
w嵌入式分享合集68
嵌入式硬件
竹照煜_ysn3 小时前
STM32——软硬件I2C
stm32·嵌入式硬件·mongodb
Ronin-Lotus4 小时前
嵌入式硬件篇---电感串并联
嵌入式硬件
Wallace Zhang4 小时前
STM32 - Embedded IDE - GCC - 显著减少固件的体积
stm32·单片机·嵌入式硬件
fengfuyao98515 小时前
STM32如何定位HardFault错误,一种实用方法
stm32·单片机·嵌入式硬件
爱学习的颖颖15 小时前
EXTI外部中断的执行逻辑|以对射式红外传感器计次为例
单片机·嵌入式硬件·exti中断
keer_zu16 小时前
STM32L051 RTC闹钟配置详解
stm32·嵌入式硬件
AI精钢17 小时前
H20芯片与中国的科技自立:一场隐形的博弈
人工智能·科技·stm32·单片机·物联网
etcix20 小时前
implement copy file content to clipboard on Windows
windows·stm32·单片机