一、产品概述

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为 4 针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。

二、产品参数

2.1 原理图

2.2 封装信息

2.3 引脚说明

2.4 传感器性能说明

2.5 典型应用电路

三、传感器工作时序图说明

3.1 发送数据前的准备

总线空闲状态为高电平,主机把总线拉低等待DHT11响应,主机把总线拉低必须大于18毫秒,保证DHT11能检测到起始信号。DHT11接收到主机的开始信号后, 等待主机开始信号结束,然后发送80us低电平响应信号.主机发送开始信号结束后,延时等待20-40us后, 读取DHT11的响应信号,主机发送开始信号后,可以切换到输入模式,或者输出高电平均可, 总线由上拉电阻拉高。

3.2 通讯过程

一次完整的数据传输为40bit,高位先出。数据格式:8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据+8bit校验和。数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。

用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集, 用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集, 如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。

四、例程(例程均为自己编写且通过验证成功)

/*所用单片机型号为STC89C52RC,晶振为11.0592MHz*,将测得的温湿度用8段数码管由低位向高位一位一位显示/

4.1 头文件、子函数声明、变量声明等

#include<reg51.h>
#include<intrins.h>
#define ERROR 0
#define OK 1typedef unsigned char unchar;
typedef unsigned int unint;sbit Bus=P2^2;//数据总线unchar  value[5];//储存检测值
unint check;void Delay10us(void);
void Delay20ms(void);
void Delay1s(void);
unchar Read_Temp();
void show(int x);//上电需要越过1s的不稳定期,测试间隔不能小于1s
//读数时高位先出
//校验和等于前四个字节相加的低八位
//温湿度小数部分作为拓展用,目前输出为0

4.2 温湿度读取函数

unchar Read_Temp()
{unchar i,j=0,mask;Bus=0;//主机主动拉低并持续20ms(超过18ms)Delay20ms();Bus=1;//主机再主动拉高40us(20-40us)Delay10us();Delay10us();Delay10us();Delay10us();if(Bus==1)//如果总线没有响应{return ERROR;}else //如果总线有响应{while(!Bus);//等待总线的低响应(80us)while(Bus);//等待总线的高响应(80us)while(j<5){mask=0x80;for(i=0;i<8;i++)//一次接收一个字节{while(!Bus);//等待过一个低电平间隙Delay10us();//0保持26-28us的高电平,1保持70us的高电平,取40us的处的电平监测Delay10us();Delay10us();Delay10us();if(Bus==0){value[j]&=(~mask);   }else{value[j]|=mask;}mask>>=1;while(Bus);//等待该位传送结束}j++;//继续接受下一个字节}}check=(value[0]+value[2])&0x00ff;//计算校验和if(check==value[4])//如果校验和没错{return OK;}else{return ERROR;}}

4.3 数码管显示子函数

void show(int x)
{while(x>0){switch(x%10){case 0:P0=0xc0;break;  case 1:P0=0xf9;break;case 2:P0=0xa4;break;case 3:P0=0xb0;break;case 4:P0=0x99;break;case 5:P0=0x92;break;case 6:P0=0x82;break;case 7:P0=0xf8;break;case 8:P0=0x80;break;case 9:P0=0x90;break;}x=x/10;Delay1s();P0=0xff;Delay1s();}
}

4.4 各延时子函数


/*10us延时子函数*/
void Delay10us()
{unchar i;i=2;while(--i);
}/*20ms延时子函数*/
void Delay20ms(void)   //误差 -0.000000000005us
{unsigned char a,b,c;for(c=1;c>0;c--)for(b=222;b>0;b--)for(a=40;a>0;a--);
}  /*1s延时子函数*/
void Delay1s(void)   //误差 -0.000000000227us
{unsigned char a,b,c;for(c=13;c>0;c--)for(b=247;b>0;b--)for(a=142;a>0;a--);_nop_();  //if Keil,require use intrins.h
}

4.5 主函数

int main()
{unchar result,temp,hum;Delay1s();//越过1s不稳定期while(1){result=Read_Temp();if(result==OK){temp=value[2];hum=value[0];show(temp);Delay1s();show(hum);Delay1s();Delay1s();Delay1s();}else{continue;}}return 0;
}

左肩理想右肩担当,君子不怨永远不会停下脚步!

DHT11型温湿度传感器的使用(附源码)相关推荐

  1. 这下终于可以方便地发表测试型网页代码了(附源码下载)

    前言 色彩斑斓的"马" 虽然利用插入代码功能可以很华丽的插入色彩斑斓的代码,但是就html(Xhtml)代码.js代码.css代码而言,我更喜欢想蓝色理想论坛中的那种:有个文本框, ...

  2. 基于Simulink融合IMU传感器数据(附源码)

    目录 1.惯性测量单元 2.姿态航向和参考系统 3.同步系统 4.输入和配置 5.真北 vs 磁北 6.模拟 7.估计方向 8.陀螺仪偏置 9.程序 此示例说明如何使用 Simulink生成和融合 I ...

  3. 【正点原子STM32连载】第四十章 DHT11数字温湿度传感器 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1

    1)实验平台:正点原子MiniPro H750开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=677017430560 3)全套实验源码+手册+视频 ...

  4. 【正点原子MP157连载】第二十七章 DHT11数字温湿度传感器实验-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南

    1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频 ...

  5. 树莓派dht11上云_树莓派使用 DHT11 / DHT22 温湿度传感器

    接线说明 从左到右 3.3V-6V 电源 GPIO接口 NO Connected 接地 依赖库 为了简化工作,我们基于Adafruit_Python_DHT的Python库进行实验 Clone下这个依 ...

  6. ESP32运行MicroPython通过MQTT上报温湿度到中移OneNET物联网平台(附源码)

    前言:MQTT是当下物联网用的比较多的协议,本篇聊一聊用esp32通过MQTT连接到中移OneNET物联网平台. OneNET平台创建产品和设备 1.​创建产品:开发者中心->全部产品-> ...

  7. Arduino之读取DHT11数字温湿度传感器并串口显示

    温度是表示物体冷热程度的物理量,微观上来讲是物体分子热运动的剧烈程度.温度只能通过物体随温度变化的某些特性来间接测量,而用来量度物体温度数值的标尺叫温标.它规定了温度的读数起点(零点)和测量温度的基本 ...

  8. linux直流电机测试,带霍尔传感器编码器的直流减速电机测速原理讲解(附源码)...

    查看: 14294|回复: 83 带霍尔传感器编码器的直流减速电机测速原理讲解(附源码) 高级会员, 积分 891, 距离下一级还需 109 积分 积分金钱891 注册时间2019-4-22 在线时间 ...

  9. C#共享内存实例 附源码

    原文 C#共享内存实例 附源码 网上有C#共享内存类,不过功能太简单了,并且写内存每次都从开头写.故对此进行了改进,并做了个小例子,供需要的人参考. 主要改进点: 通过利用共享内存的一部分空间(以下称 ...

最新文章

  1. lazyload.js实现图片异步延迟加载
  2. IDEA常用快捷键整理
  3. hdu1337 水题
  4. 用Chrome开发者工具调试一切
  5. wpf BackgroundWorker 的简单用法
  6. HTML DOM之属性的各种操作方法
  7. 湍流退化图像复原如何使用matlab,湍流退化图像复原技术研究现状及展望
  8. 使用python操作word
  9. js基础练习:实现资料查找
  10. 深入理解Yii2.0(1) 属性
  11. ESXI安装威联通NAS系统
  12. Java 二叉树层次遍历
  13. python之urlencode(),quote()及unquote()
  14. 基于Python的股票红利预测
  15. [2018 CS:GO Server]2018 Old CSGO 服务端,回忆逝去的青春!
  16. 手把手教你:CSS+JS 打造一个有个性的滚动条
  17. 一百个最有用的网站地址
  18. QQ邮箱模拟登陆(2022.9.12)
  19. 映客直播技术实战:直播平台的数据库架构演变
  20. 将Vue项目代码打包成桌面应用

热门文章

  1. 彻底理解setTimeout()
  2. 前端面试问到setTImeout与setInterval区别
  3. pytorch实现多项式回归
  4. 2020-11-17 1)C标准库头文件 2)C ++标准库标头
  5. UI设计细分为哪些具体职位?国内提供了哪些?
  6. 如何 Scale Up/Down?- 每天5分钟玩转 Docker 容器技术(126)
  7. response java_java中response对象用法实例分析
  8. “检索COM类工厂中CLSID为{...}的组件失败,原因是出现以下错误:8007007e...”的解决办法
  9. 我司赤城弘一CEO受邀参加东盟与中日韩中小企业人工智能产业论坛并做主旨发言。
  10. 字符串算法 金策_GitHub - hzwer/shareOI: 算法竞赛课件分享