DHT11温湿度传感器初识

本文详细介绍了DHT11温湿度传感器的接线、特点和数据传输逻辑,并通过C51单片机进行时序检测,实现温湿度数据的读取。此外,还展示了如何将数据通过串口传送到PC显示以及在LCD1602液晶板上显示。
摘要由CSDN通过智能技术生成

目录

一、产品概述

1、接线方式

2、特点

3、数据传送逻辑

二、发送时序检测模块是否存在

1、C51单片机(主机)时序分析

2、编写代码检测模块是否存在

3、读取DHT11数据的时序分析

三、温湿度通过串口传到PC显示

四、温湿度检测小系统——使数据显示在LCD1602液晶板上


一、产品概述

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

1、接线方式

VCC:接供电的正极

GND:接地

DAT:接数据

2、特点

相对湿度和温度的测量

全部校准、数字输出

长期稳定性

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

4引脚安装:可以买封装好的

完全互换:直接出结果,不用转化

3、数据传送逻辑

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

40bit的数据格式

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

二、发送时序检测模块是否存在

时序逻辑分析

对于主机来说:发送时序的开始在a点,结束在d点

1、C51单片机(主机)时序分析

a:dht=1;
b:dht=0;
b、c之间延时30ms;
c:dht=1;
开始读DHT模块有无信号,在40-100μs之间读,比如在60μs的时候读,如果在60μs的时候是低电平,说明模块存在

那怎么看模块是否有回应呢,请看上图中的de段,C51单片机发送完时序信号是处于高电平的状态,当DHT这边有信号过来时,会把信号从高电平状态拉到低电平状态,所以当de=0时,说明DHT模块有数据显示了

那对于单片机来说怎么获取到这个低电平状态呢,那就得去读取de段的数据了,读上面的引脚是否为低电平

从c点到e点共有两种情况:

第一种:cd之间的延时最短时间是20μs,de之间的延时时间是80μs,那么从c点到e点,所需要的延时时间就是20-100μs

第二种:cd之间的延时最长时间是40μs,de之间的延时时间是80μs,那么从c点到e点,所需要的延时时间就是40-120μs

综上述情况, 我们要读取它们重合的时间,才能把以上两点都包括在内,重合的时间是40-100μs

2、编写代码检测模块是否存在

#include "reg52.h"
#include "intrins.h"

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

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;
	//b、c之间延时30ms;
	Delay30ms();
	//c:dht=1;
	dht = 1;
	//开始读DHT模块有无信号,在40-100μs之间读,比如在60μs的时候读,如果在60μs的时候是低电平,说明模块存在
	Delay60us();
	if(dht == 0){
		ledOne = 0;     //亮灯,说明DHT模块存在
	}
}

void main()
{
	ledOne = 1;      //灭灯
	Delay1000ms();   //上电后稳定DHT11的供电
	Delay1000ms();
	check_DHT();     //看模块是否存在
	while(1);
  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值