51单片机读取DH11温湿度传感器数据

本文介绍了如何使用单片机与DHT11传感器进行通信,详细阐述了起始信号的发送、从机应答信号的检测以及数据传输的过程。通过提供的C语言源码,展示了DHT11传感器如何传输4字节温湿度数据和1字节校验位,并在主函数中实现了数据显示。
摘要由CSDN通过智能技术生成

时序图

在这里插入图片描述

主机发送起始信号
首先单片机将连接DHT11DATA引脚的GPIO口输出低电平,且低电平保持时间不能小于18ms (t1),然后拉高数据线20~40us (t2),等待读取DHT11的响应信号。

检测从机应答信号
DHT11的DATA引脚检测到外部信号有低电平(t1),并等待外部低电平信号结束(t⑵2),之后DHT11开始输出 80 us (t3)的低电平作为应答信号,紧接着输出 80us (t4)的高电平通知主机准备接收数据。

数据传输
DHT11在传输数据时,一次传输4字节温湿度值数据和1字节数据校验。其数据格式为:
1B湿度整数数据+1B湿度小数数据+1B温度整数数据+1B温度小数数据+1B校验位。

源码

dh11.c

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

sbit Temp_data=P3^6;
 extern unsigned int rec_dat[4];


//DHT11起始信号
void DHT11_start()	
{
   
	Temp_data=1;
	
	DHT11_delay_us(2);
	
	Temp_data=0;
	
	DHT11_delay_ms(20);
	
	Temp_data=1;
	
	DHT11_delay_us(13);
	
}

//接收一个字节
unsigned char DHT11_rec_byte()
{
   
	
	unsigned char i,dat;

	
	for(i=0;i<8;i++)
	{
   
			while(!Temp_data);
		  DHT11_delay_us(8);
			dat<<=1;
			if(Temp_data==1)
	
  • 6
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值