首页 > 其他分享 >DH11温湿度检测模块

DH11温湿度检测模块

时间:2024-07-01 11:31:18浏览次数:3  
标签:tmp DH11 高电平 温湿度 总线 模块 dht DHT11

目录

DHT11 温湿度传感器

检测模块是否存在:

使用LED检测DHT11模块是否接在设备上:

读取温湿度数据:


DHT11 温湿度传感器

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

特点

相对湿度和温度测量

全部校准,数字输出

长期稳定性

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

超低能耗:休眠 4

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

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

数据传送逻辑

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

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

检测模块是否存在:

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

  1. 拉高总线(a点):主机(如单片机)首先将DATA总线拉高,表示开始信号的开始。
  2. 拉低总线至少18ms(b点):随后,主机将DATA总线拉低至少18毫秒,以确保DHT11能够检测到起始信号。这个时间长度是DHT11正常响应的关键。
  3. 拉高总线(c点):在拉低总线后,主机再将DATA总线拉高,等待DHT11的响应。
  4. 检测响应信号(d点):在c点拉高总线后,主机等待一小段时间(例如60微秒),然后检测DATA总线的电平。如果此时DATA总线为低电平(被DHT11拉低),则表示DHT11存在且响应了主机的开始信号。

a : dht = 1

b :dht = 0

延时30ms

c:dht = 1

在60us后读d点,如果d点是低电平(被模块拉低),说明模块存在!

使用LED检测DHT11模块是否接在设备上:

sbit ledOne = P3^7

sbit dht = P3^3

读取温湿度数据:

a : dht = 1

b :dht = 0

延时30ms

c: dht = 1

卡d点;while(dht1); 卡e点 while(!dht) 卡f点:while(dht) 卡g点:while(!dht) 有效数据都是高电 平,持续时间不一样,50us读,低电平0 高电平

每一位数据的传输都由一个持续50us的低电平信号开始,随后是一个持续26-28us的高电平信号,高电平信号的持续时间不同表示不同的数据(长代表1,短代表0)。

定义了一个字符数组datas,用于存储从DHT11读取的40位数据(包括湿度整数、湿度小数、温度整数、温度小数和校验和)。

DHT11_Start()

这个函数用于向DHT11发送开始信号。

  1. dht设置为高电平。
  2. dht设置为低电平。
  3. 延时30毫秒。
  4. dht设置为高电平。
  5. 等待DHT11的响应。

Read_Data_From_DHT()

这个函数从DHT11读取数据。

  1. 调用DHT11_Start()开始通信。
  2. 循环5次,每次读取8位数据(总共40位)。
  3. 等待DHT11的低电平(卡g点)。
  4. 延时60微秒(用于检测接下来的高电平时间)。
  5. 根据高电平的持续时间设置flag
  6. flag左移并存储到tmp中。
  7. tmp的值存储到datas数组中。

将 tmp 的值向左移动一位。通过这个操作,tmp 的原来的最低位被丢弃,而最高位补零。

 tmp |= flag; 这一行将 flag的值添加到 tmp 的最低位。如果 flag是 1,则最低位设置为 1;如果 flag是 0,则最低位保持不变。
 这两行代码的目的是按位添加到 tmp 的低端,并将 tmp 向左移动一位。这个过程可以将 flag 的每一位添加到 tmp 的低端,从而构建一个完整的字节。

标签:tmp,DH11,高电平,温湿度,总线,模块,dht,DHT11
From: https://blog.csdn.net/2301_76378962/article/details/140036179

相关文章

  • DH11温湿度检测模块、lcd1602、HC-08蓝牙构成温湿度数据管理系统
    目录温湿度通过串口上传PC: 温湿度数据管理系统:温湿度通过串口上传PC:sendByte(datas[0]/10+0x30);sendByte(datas[0]%10+0x30);这两行代码用于将一个字节(是DHT11传感器读取的湿度或温度的整数部分)转换为两个ASCII字符,并通过UART串口发送出去。+0x30:在ASCII......
  • python异常、模块与包
    目录了解异常异常的捕获方法python模块python包安装第三方包了解异常什么是异常当检测到一个错误时,python解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的“异常”,也就是我们常说的BUGbug单词的诞生早期计算机采用大量继电器工作,马克二型计算机就是......
  • 模块化编程(二)
    模块的导入经常有这样一句话:“不要重复造轮子”,知道别人已经造好了轮子,并且轮子也好用,那就直接拿别人的轮子来用,此处的“模块导入”就是“拿别人的轮子过来”。前文提到模块化编程的好处之一就是“代码复用性高”。写好的模块可以被反复调用,模块的导入就是“在本模块中使用其......
  • 中台框架模块开发实践-用 Admin.Core 代码生成器生成通用代码生成器的模块代码
    前言之前分享中台Admin.Core的模块代码生成器,陆续也结合群友们的反馈,完善了一些功能和模板上的优化,而本篇将基于此代码生成器生成一个通用代码生成器模块的基本代码后续再在此代码的基础上进行完善,制作一个通用的代码生成器要做一个项目,首先我们要弄清楚需求,这里简单规划了......
  • 【YOLOv8改进 - 注意力机制】NAM:基于归一化的注意力模块,将权重稀疏惩罚应用于注意力机
    YOLO目标检测创新改进与实战案例专栏专栏目录:YOLO有效改进系列及项目实战目录包含卷积,主干注意力,检测头等创新机制以及各种目标检测分割项目实战案例专栏链接:YOLO基础解析+创新改进+实战案例摘要识别较不显著的特征是模型压缩的关键。然而,这在革命性的注意力机制......
  • 【重写SpringFramework】第一章beans模块:本章小结(chapter 1-13)
    1.前言在Spring框架中,beans模块是仅次于core模块的基础模块。我们知道,IOC机制是Spring框架的两大基石之一,beans模块的主要任务就是实现控制反转和依赖注入的功能。从具体实现来说,BeanFactory接口是整个模块的核心接口,几乎所有功能都是围绕对象展开的。BeanFacto......
  • Python教程:开箱即用的Python os模块知识
    1.简介注:文末有福利领取哦Python的os模块提供了许多接口用于与操作系统进行交互,包括文件操作、目录操作、路径操作、环境变量操作、系统信息获取等。以下是os模块中常用的接口及其解释:文件和目录操作:os.remove(path):删除指定路径的文件。os.rename(src,dst):......
  • IIC驱动-基于EEPROM存储芯片AT24C02模块和三合一环境传感器AP3216C
    本文将基于IIC协议编写EEPROM芯片AT24C02存储芯片的IIC驱动程序,本文内容将分为三个部分:imx6ull的IIC控制器介绍,AT24C02存储芯片介绍,IIC的Linux驱动程序编写。关于IIC协议的内容与介绍这里不展开,相关资料很多,可以自行去查阅,但是这里需要注意的是,IIC协议本身就是一个协议,只是一些基......
  • 中台框架模块开发实践-代码生成器的添加及使用
    前言之前已经分享过几篇关于中台项目框架的文章,相关介绍就不再赘述所谓工欲善其事必先利其器,一个项目拥有一个代码生成器是很有必要的,能够大大的节省时间,减少手误,提供开发效率(ps:特别小团队搞微服务但是没有代码生成器,简直要了老命)本文将分享如何在中台框架项目Admin.Core......
  • 第6篇:深入解析LangChain库的数据输入模块
    在自然语言处理(NLP)项目中,数据输入是整个流程的第一步,也是至关重要的一步。LangChain库的数据输入模块为开发者提供了一种高效、灵活的方式,从各种数据源读取数据。本篇博客将详细介绍LangChain库的数据输入模块,讲解如何从各种数据源读取数据,并通过具体代码示例展示其实现过程......