模块

  • DHT11模块
    • DHT11模块介绍

DHT11模块

DHT11模块介绍

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



    1.使用推挽模式进行总线的输出使用stm32将总线拉低等待DHT11响应,拉低时间大于18ms保证检测到起始信号2.使用stm32将总线拉高  延时20us~40us  这里选择30us读取DHT11的响应信号3.切换到输入模式3.0 检测DHT11产生低电平即使用读取DHT11的输入引脚,当读取到低电平的时候进入3.1 DHT11等待主机STM32的开始信号结束完成后发送一个80us的低电平信号while(macDHT11_Dout_IN() ==RESET);检测引脚的输入信号,当输入信号不是低电平的时候,即响应信号结束的时候,跳出while3.2 DHT11发送响应信号后,把总线拉高80us,准备发送数据while(macDHT11_Dout_IN() == SET);检测引脚的输入信号,当输入信号不是高电平的时候,即标志信号结束的时候,跳出while循环,准备发送数据

进行发送数据,STM32接收发送过来的数据

typedef struct
{uint8_t  humi_int;     //湿度的整数部分uint8_t  humi_deci;        //湿度的小数部分uint8_t  temp_int;     //温度的整数部分uint8_t  temp_deci;        //温度的小数部分uint8_t  check_sum;        //校验和} DHT11_Data_TypeDef;

DHT11的数据是MSB先行 高位先行

static uint8_t DHT11_ReadByte ( void )
{uint8_t temp;for(i=0;i<8;i++){//等待输入的电平不是低电平 表示开始进行传输数据while(macDHT11_Dout_IN()==Bit_RESET);/*通过延时40us 进行判断当前是高电平还是低电平
当读取到高电平延时40us后,读取到的还是高电平则表示1,否则表示0并进
入下次循环,再次等待起使电平低电平的时间。*/Delay(40);//判断当前是低电平还是高电平if(macDHT11_Dout_IN()==SET){while(macDHT11_Dout_IN()==SET);//等待高电平结束temp | =(uint8_t)(0x01<<(7-i));}else{temp &=(uint8_t)(0x00<<(7-i));}}return temp;
}
 1.使用上面的函数读取5次将DHT11里面的内容读取出来2.转换成输出模式,将总线拉高3.检查读取到的信息是不是正确信息if(DHT11_Data->check_sum == DHT11_Data->humi_int + DHT11_Data->humi_deci + DHT11_Data->temp_int+ DHT11_Data->temp_deci)加入校验和等于温度的整数小数和湿度的整数和小数的和则返回success
uint8_t DHT11_Read_TempAndHumidity(DHT11_Data_TypeDef *DHT11_Data)
{  /*输出模式*/DHT11_Mode_Out_PP();/*主机拉低*/macDHT11_Dout_0;/*延时18ms*/Delay_ms(18);/*总线拉高 主机延时30us*/macDHT11_Dout_1; Delay_us(30);   //延时30us/*主机设为输入 判断从机响应信号*/ DHT11_Mode_IPU();/*判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行*/   if(macDHT11_Dout_IN()==Bit_RESET)     {/*轮询直到从机发出 的80us 低电平 响应信号结束*/  while(macDHT11_Dout_IN()==Bit_RESET);/*轮询直到从机发出的 80us 高电平 标置信号结束*/while(macDHT11_Dout_IN()==Bit_SET);/*开始接收数据*/   DHT11_Data->humi_int= DHT11_ReadByte();DHT11_Data->humi_deci= DHT11_ReadByte();DHT11_Data->temp_int= DHT11_ReadByte();DHT11_Data->temp_deci= DHT11_ReadByte();DHT11_Data->check_sum= DHT11_ReadByte();/*读取结束,引脚改为输出模式*/DHT11_Mode_Out_PP();/*主机拉高*/macDHT11_Dout_1;/*检查读取的数据是否正确*/if(DHT11_Data->check_sum == DHT11_Data->humi_int + DHT11_Data->humi_deci + DHT11_Data->temp_int+ DHT11_Data->temp_deci)return SUCCESS;else return ERROR;}elsereturn ERROR;}

DHT11 模块的使用相关推荐

  1. STM32使用IIC总线通讯协议在OLED屏幕上显示字符串、汉字、单总线获取DHT11模块温湿度并通过IIC显示到屏幕(软件IIC)

    参考:基于stm32软件IIC的oled显示温湿度 作者:ZPZ DayUp 发布时间: 2021-07-25 20:52:43 网址:https://blog.csdn.net/m0_5619768 ...

  2. STM32F103+DHT11模块+DS18B20模块 显示实时温湿度并高温高湿报警

    目录 前言 代码下载: 功能介绍: 接线 DS18B20 DHT11 效果图 普通环境 普通版main.c 升级版 哈热气 普通版 升级版 搓手捂热 核心代码 普通版main.c 升级版main.c ...

  3. 基于dragonboard410c DHT11模块的驱动移植

    前言: 近期在做个小项目是在dragonboard410c的平台上,其中需要使用到DHT11温湿度传感器模块来实时显示当前环境的温湿度,由此需要编写相应的设备驱动来给上层提供接口. 一.DHT11模块 ...

  4. CubeMX+STM32F4+DHT11模块

    文章目录 前言 一.CubeMX配置 二.代码 总结 前言 本文主要介绍利用CubeMX配置STM32F4系列芯片读取DHT11温湿度采集模块,仅作于学习 一.CubeMX配置 1.新建工程,配置相关 ...

  5. 小白学数字温湿度传感器DHT11模块

    [本系列文章还将陆续介绍其他的传感器模块,欢迎订阅我的博客] 温度和湿度对我们的生活有极大的影响,对它的测量也是很有必要的. DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器, ...

  6. STM32F103C8T6+ESP8266WIFI+DHT11模块连接巴法云

    STM32F103C8T6通过ESP8266模块连接巴法云 一.硬件介绍 二.准备工作 三.STM32主要代码介绍 一.硬件介绍 1.MCU:STM32F103C8T6 2.ESP8266:正点原子W ...

  7. Mind+上传模式的第三方Arduino用户库实现 -DHT11温湿度模块

    Mind+上传模式的第三方Arduino用户库实现--DHT11模块读取温湿度 前言 Mind+是一款拥有自主知识产权的国产青少年编程软件,支持Arduino.micro:bit.掌控板等各种开源硬件 ...

  8. DHT11温湿度传感器模块使用方法和驱动代码实现

    DHT11模块简介 DHT11是一款价格便宜,易于使用的温度湿度测量二合一传感器.它具有超小体积.极低功耗的特点.它使用单根总线与单片机进行双向的串行数据传输,信号传输距离可达20米以上.非常适用于对 ...

  9. DHT11温湿度模块入门

    目录 1.模块简介 2.判断DHT11模块是否存在 3.DHT11数据的时序分析 4.将温湿度数据上传到电脑中 1.模块简介 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器, ...

最新文章

  1. Ubuntu 14.04 安装小企鹅输入法 Fcitx
  2. mybatis实现批量更新
  3. 深入解析Java编译器学习笔记
  4. java中io流中显示中文_关于JAVA中IO流相关问题概述
  5. 最新综述:图像分类中的对抗机器学习
  6. pandas计算移动平均值
  7. Windows下编写的脚本文件无法在Linux上运行的问题
  8. R语言︱噪声数据处理、数据分组——分箱法(离散化、等级化)
  9. 苹果6用U盘越狱_iOS12.3.1 A12 支持在线越狱?作者黑人问号
  10. Ajax学习笔记-get请求参数-3
  11. ADS软件的使用教程
  12. Logism · 原码一位乘法器 实验
  13. Securing Android: A Survey, Taxonomy, and Challenges --论文笔记
  14. 小白学 Python 数据分析(8):Pandas 数据透视表(pivot_table)
  15. 收藏 | 江苏省各地教师公务员等实际工资爆料
  16. MATLAB 线性动态范围调整
  17. Android App开发实战之实现微信记账本(附源码 超详细必看)
  18. 连上校园网可以上网但是显示无internet不能开热点或者热点可以打开但无ip分配(电脑诊断简单,时间久一些涉及到重启电脑)
  19. 网络工程师技能图谱,看看你会多少技能
  20. 计算机 教学活动设计方案,教学设计方案

热门文章

  1. javacv从入门到精通——第三章:基本使用
  2. python安装报_ssl问题
  3. 在Ubuntu中获取奥比中光的深度值 Python代码
  4. python怎么求圆柱表面积半径和高由键盘输入_Java圆柱体表面积和体积计算代码实例...
  5. 基于IPSAN的存储典型备份方案
  6. 我们成为什么样的人,是由自己的选择决定的---Leo读 不是孙振耀写的职场感言 大结局 7
  7. 【函数】Oracle函数系列(2)--数学函数及日期函数
  8. 阿根廷药品处方/说明书信息查询(数据库)
  9. Win7系统很卡应该如何解决?[系统天地]
  10. 97-things-every-programmer-should-know-1: 谨慎行事