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

相关推荐
210Brian4 分钟前
蓝桥杯单片机学习笔记(十四) V2026大模板源代码
单片机·学习·蓝桥杯
大卡片12 分钟前
TIM控制器原理
单片机·嵌入式硬件
Tech_D21 分钟前
微米级的精准魔法:激光微加工,解锁高端制造新可能
人工智能·单片机·机器人·自动化·制造
小+不通文墨26 分钟前
在树莓派中用*C语言*实现MQTT通信
c语言·经验分享·笔记·嵌入式硬件·学习
保安大队王队长41 分钟前
对于单片机以及单片机的应用,要学的还有涉及到的电路都有哪些
单片机·嵌入式硬件
大卡片1 小时前
时钟控制器原理
单片机·嵌入式硬件
神仙别闹1 小时前
基于C语言来实现图形界面画板的功能
c语言·开发语言·单片机
xu_wenming2 小时前
zephyr从会用走向精通
c语言·嵌入式硬件·物联网
fengfuyao9852 小时前
STM32 控制 SG90 舵机指南
stm32·单片机·嵌入式硬件
高翔·权衡之境2 小时前
主题11:分层思想——OSI模型的现实映射
人工智能·嵌入式硬件·物联网·软件工程·信息与通信