C51--DHT11温湿度传感器

DHT11温湿度传感器

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

特点:

  1. 相对温度和湿度测量
  2. 全部校准,数字输出
  3. 长期稳定性
  4. 超长的信号输出距离:20米
  5. 超低耗能:休眠
  6. 4引脚安装:可以买封装好的
  7. 完全互换:直接出结果不用转化

电源引脚:

DHT11的供电电压为 3-5.5V。传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。

连接

(与c51连接)
DATA —— P3^3口
GND —— 地
VCC —— 5V

数据传输:

C51发送序列指令给到DHT11模块,模块一次完整的数据传输为40bit高位先出

数据格式:

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

时序图:

通讯过程:
在这里插入图片描述

依据此时序图,做通信初始化,并检测模块是否存在,功能是否正常。
在这里插入图片描述
时序图分析:vcc刚开始处于 1 位 → vcc拉低至少18ms→vcc拉高20-40us→DHT响应信号,将高电平拉低持续80us(在40–80us之间读取:低电平——模块存在)→DHT拉高信号80us→DHT拉低信号开始传送数据。

#include "reg52.h"
#include <intrins.h>

sbit ledOne = P3^7;
sbit DHT = P3^3;			//模块的data接在c51的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_DTH()
{
	
	DHT = 1;			//开始处于 1 位
	DHT = 0;			//拉低至少18ms,这里给它30ms
	Delay30ms();		
	DHT = 1;			//vcc拉高20-40us
	//DHT响应信号,将高电平拉低持续80us(在40--80us之间读取:低电平——模块存在)
	//所以在60us的时候读取
	Delay60us();		
	if(DHT == 0){		//低电平——模块存在
		ledOne = 0;		//亮灯,说明模块存在
	}
}

void main()
{
	ledOne = 1;			//灭灯
	Delay1000ms();
	Delay1000ms();

	check_DTH();
	while(1);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值