历史上的今天
返回首页

历史上的今天

今天是:2025年10月20日(星期一)

正在发生

2022年10月20日 | 【51单片机STC89C52】DHT11温湿度传感器的使用

2022-10-20 来源:csdn

一、DHT11概述

数据传送逻辑

模块一次完整的数据传输为40bit,高位在前


数据格式

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


通讯过程时序图

二、检测模块是否存在

根据如下时序图,做通信初始化,并检测模块是否存在,功能是否正常

时序逻辑分析

a : dht = 1


b :dht = 0


延时至少18ms


c: dht = 1


卡d点:while(dht)


卡e点:while(!dht)


卡f点:while(dht)


 代码实现

void DHT11_Start()

{

dht = 1;

dht = 0;

//延时30ms

Delay30ms();

dht = 1;

    //卡d点:while(dht);卡e点:while(!dht);卡f点:while(dht)

while(dht);

while(!dht);

while(dht);

}


三、读取温湿度数据

DHT11传输0的时序分析

DHT11传输1的时序分析

代码实现

char datas[5];

 

void Read_Data_From_DHT()

{

int i;//轮

int j;//每一轮读多少次

char tmp;

char flag;

DHT11_Start();

for(i=0;i<5;i++){      

for(j=0;j<8;j++){

while(!dht);//等待卡g点

Delay40us();//有效数据都是高电平,持续时间不一样,40us读,低电平0 高电平1

if(dht == 1){

flag = 1;

while(dht);

}else{

flag = 0;

tmp = tmp << 1;

tmp |= flag;

}

datas[i] = tmp;

}

}


四、串口打印

#include "reg52.h"

#include "intrins.h"

 

sbit ledOne = P3^7;

sbit dht = P3^3;//模块的data插在p3.3

 

char datas[5];

 

sfr AUXR = 0x8E;

 

void UartInit(void) //9600bps@11.0592MHz

{

AUXR = 0x01;

SCON = 0x40; //配置串口工作方式1,REN不使能接收

TMOD &= 0xF0;

TMOD |= 0x20;//定时器1工作方式位8位自动重装

TH1 = 0xFD;

TL1 = 0xFD;//9600波特率的初值

TR1 = 1;//启动定时器

}

void sendByte(char data_msg)

{

SBUF = data_msg;

while(!TI);

TI = 0;

}

 

void sendString(char* str)

{

while( *str != ''){

sendByte(*str);

str++;

}

}

 

void Delay30ms() //@11.0592MHz

{

unsigned char i, j;

 

i = 54;

j = 199;

do

{

while (--j);

} while (--i);

}

 

void Delay40us() //@11.0592MHz

{

unsigned char i;

 

_nop_();

i = 15;

while (--i);

}

 

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 DHT11_Start()

{

dht = 1;

dht = 0;

//延时30ms

Delay30ms();

dht = 1;

//卡d点:while(dht1);卡e点:while(!dht);卡f点:while(dht)

while(dht);

while(!dht);

while(dht);

}

 

void Read_Data_From_DHT()

{

int i;//轮

int j;//每一轮读多少次

char tmp;

char flag;

DHT11_Start();

for(i= 0;i < 5;i++){

for(j=0;j<8;j++){

while(!dht);//等待卡g点

Delay40us();//有效数据都是高电平,持续时间不一样,40us读,低电平0 高电平1

if(dht == 1){

flag = 1;

while(dht);

}else{

flag = 0;

tmp = tmp << 1;

tmp |= flag;

}

datas[i] = tmp;

}

}

 

void main()

{

ledOne = 1;

UartInit();

Delay1000ms();

Delay1000ms();

while(1){

Delay1000ms();

Read_Data_From_DHT();

sendString("H:");             //湿度

sendByte(datas[0]/10 + 0x30);

sendByte(datas[0]%10 + 0x30);

sendByte('.');

sendByte(datas[1]/10 + 0x30);

sendByte(datas[1]%10 + 0x30);

sendString("rn");

sendString("T:");             //温度

sendByte(datas[2]/10 + 0x30);

sendByte(datas[2]%10 + 0x30);

sendByte('.');

sendByte(datas[3]/10 + 0x30);

sendByte(datas[3]%10 + 0x30);

sendString("rn");

        //湿度小数部分为0;温度小数部分只能显示十进制1位,需修改代码

}

}


推荐阅读

史海拾趣

Electric Imp Inc.公司的发展小趣事

在物联网设备管理平台的基础上,Electric Imp Inc.公司不断推动技术创新。公司研发团队经过数年的努力,成功研发出了一款基于边缘计算的物联网设备。这款设备具有更高的数据处理能力、更低的延迟和更好的安全性,能够满足更广泛的应用场景。这一技术突破使得公司在物联网领域的技术实力得到了显著提升。

Heatron LED Integration公司的发展小趣事

在环保和可持续发展成为全球共识的今天,Heatron LED Integration积极践行绿色发展理念。公司不仅在生产过程中注重节能减排和资源循环利用,还致力于推广高效、节能的LED照明产品。通过不断的技术创新和产品优化,公司成功推出了一系列低碳环保的LED照明解决方案,为推动全球绿色可持续发展贡献了自己的力量。

D+H Mechatronic AG公司的发展小趣事

D+H Mechatronic AG深知人才是企业发展的核心。因此,公司一直致力于培养和引进优秀人才,并建立了完善的培训体系。通过内部培训和外部引进相结合的方式,公司成功打造了一支高素质、专业化的技术和管理团队。这支团队不仅具备丰富的专业知识和实践经验,还具备良好的创新意识和团队协作精神。他们的努力为公司的发展提供了源源不断的动力。

Cybernetic Micro Systems公司的发展小趣事

Cybernetic Micro Systems(简称CMS)的创始人李华,是一位热衷于电子技术的天才工程师。他在大学期间就研发出了一款高效能、低功耗的微处理器原型,这一成果引起了业界的广泛关注。毕业后,李华决定创业,将他的研究成果商业化。于是,Cybernetic Micro Systems应运而生,专注于研发和生产高性能的微处理器和配套设备。凭借独特的技术优势,CMS很快在电子行业中崭露头角。

CEVA, Inc公司的发展小趣事

CEVA, Inc.最初于1999年11月22日在美国特拉华州注册成立,起初的名称并非CEVA。随着公司的业务扩展和技术积累,其在2002年11月进行了更名,成为ParthusCeva公司。这一更名反映了公司业务的进一步发展和市场定位的调整。随后,在2003年12月,公司再次更名为CEVA公司,这一名称沿用至今,成为无线连接和智能传感技术领域的知名品牌。

Fractus公司的发展小趣事

Fractus公司的创新之路可以追溯到上世纪八十年代后期,在加泰罗尼亚理工大学(UPC)的研究实验室中,关于天线技术的早期研究拉开了序幕。这一时期的学术研究为后来Fractus的技术创新奠定了坚实的基础。随着研究的深入,Fractus逐渐掌握了几何结构天线设计的核心技术,并开始探索其在无线通信领域的应用潜力。

问答坊 | AI 解惑

液晶咋不亮?

大家看看这个图我照着上面接液晶咋没有反应呢?12864我以前没用过。…

查看全部问答>

新手升级8位到32位单片机,TM32与LPCl7xx哪个容易学?

  新手升级8位到32位单片机,TM32与LPCl7xx哪个容易学?     价格 性能 开发平台 开发资料       转贴一下比较:   TM32 和 LPCl7xx 速度比较(基于uCOS-II平台) 测试1 STM32平台 72MHz--------- ...…

查看全部问答>

音乐T恤

音乐T恤是一款为播放器量身打造的时尚多媒体T恤,它能带你体验前所未有的炫酷便捷的触控(Touch)音乐之旅!轻触衣服上的多媒体按钮,即可迅速唤醒兜里的播放器,千首曲目,随心更换。美妙音乐,尽在触摸!  通过它你可以告别繁杂的耳机线的困扰 ...…

查看全部问答>

multisim修改参数

我需要查看multisim下元件参数,比如三极管放大倍数等如何查看和修改呢,还是这些元件都是封装在模块中的,我想查看怎么看?…

查看全部问答>

一板在手,高端仪表开发从此无忧!

迄今为止最豪华适用的S3C2440开发平台!可满足工业控制需要。   该产品采用“核心板(6层设计)+底版(4层设计)”模式,除具备一般开发板的功能以外,特增加工业级产品应用所需要的特定功能,并经过严格测试!可广泛应用于医疗电子设备、移动无 ...…

查看全部问答>

如何测试出JTAG更个引脚的功能

如何测试出JTAG更个引脚的功能 资源:我这里有一块手机焊有20 针的JTAG接口,目前没有这块手机的任何资料。           拥有Lauterbach JTAG+trace32 调试器。 现象:目前通过Lauterbach JTAG+trace32调试器调试其 ...…

查看全部问答>

谁有《Windows 2000 /XP WDM设备驱动程序开发》电子版?

哪位兄弟有这本电子书,发给小弟看一下啊,多谢了 邮箱:guanbenben@yahoo.com.cn…

查看全部问答>

11年全国赛分析

本帖最后由 paulhyde 于 2014-9-15 03:27 编辑 11年全国赛分析  …

查看全部问答>