当前位置: 首页 > news >正文

DHT11温湿度传感器

DHT11简介

本文本质为学习笔记,在B站学习后的代码总结

数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,一次通讯时间 4ms 左右,一次完整的数据传输为 40bit,高位先出,数据分小数部分和整数部分,bytel0为校验位。

  • 工作电压范围: 3.3V-5.5V

  • 工作电流 :平均 0.5mA

  • 输出:单总线数字信号

  • 测量范围:湿度 20~90%RH,温度 0~50℃

  • 精度 :湿度±5%,温度±2℃

  • 分辨率 :湿度 1%,温度 1℃

  • 时序图:

  • myDHT11.h代码
  • #ifndef __MYDHT11_H_ #define __MYDHT11_H_ void myDHT11_putinit(void);//输入模式 void myDHT11_getinit(void);//输出模式 unsigned char myDHT11_readbyte(void);//读取8位字节 unsigned char myDHT11_getdata(unsigned char *wen_H,unsigned char *wen_L,unsigned char *shi_H,unsigned char *shi_L);//读取温湿度高低8位,传入为指针,读取温湿度时主要使用这个函数 #endif
    myDHT11.c代码
    #include "stm32f10x.h" #include "myDHT11.h" #include "delay.h"//这个库相信你应该有的,如果没有自己写一下也不难 /**************************只需更改下面参数即可移植*******************************/ #define myDHT11_RCC RCC_APB2Periph_GPIOA //时钟线选择 #define myDHT11_GPIO GPIOA //GPIO组选择 #define myDHT11_Pin GPIO_Pin_0 //引脚号 /**************************************************************************/ void myDHT11_putinit()//输入模式 { RCC_APB2PeriphClockCmd(myDHT11_RCC,ENABLE);//开启GPIOA时钟 GPIO_InitTypeDef GPIO_initstructure; GPIO_initstructure.GPIO_Mode=GPIO_Mode_Out_OD;//推挽输出模式 GPIO_initstructure.GPIO_Pin=myDHT11_Pin;//选择引脚号为PA0 GPIO_initstructure.GPIO_Speed=GPIO_Speed_50MHz;//输入速率 GPIO_Init(myDHT11_GPIO,&GPIO_initstructure); } void myDHT11_getinit()//输出模式 { RCC_APB2PeriphClockCmd(myDHT11_RCC,ENABLE);//开启GPIOA时钟 GPIO_InitTypeDef GPIO_initstructure; GPIO_initstructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//浮空输入模式 GPIO_initstructure.GPIO_Pin=myDHT11_Pin;//选择引脚号为PA0 GPIO_initstructure.GPIO_Speed=GPIO_Speed_50MHz;//输入速率 GPIO_Init(myDHT11_GPIO,&GPIO_initstructure); } unsigned char myDHT11_readbyte()//读取8位字节 { unsigned char retry=0,i,temp,data=0; for(i=0;i<8;i++) { while(GPIO_ReadInputDataBit(myDHT11_GPIO,myDHT11_Pin)==0 && retry<100) { Delay_us(1); retry++; } retry=0; Delay_us(30); temp=0; if(GPIO_ReadInputDataBit(myDHT11_GPIO,myDHT11_Pin)==1)temp=1; while(GPIO_ReadInputDataBit(myDHT11_GPIO,myDHT11_Pin)==1 && retry<100) { Delay_us(1); retry++; } retry=0; data<<=1; data |=temp; } return data; } unsigned char myDHT11_getdata(unsigned char *wen_H,unsigned char *wen_L,unsigned char *shi_H,unsigned char *shi_L)//读取温湿度高低8位,传入为指针 { unsigned char i,retry=0,sum=0; unsigned char arr[5]; myDHT11_putinit(); GPIO_ResetBits(myDHT11_GPIO,myDHT11_Pin); Delay_ms(20);//18=< =<30 GPIO_SetBits(myDHT11_GPIO,myDHT11_Pin); Delay_us(13);//10=< =<20 myDHT11_getinit(); Delay_us(20); if(GPIO_ReadInputDataBit(myDHT11_GPIO,myDHT11_Pin)==0) { while(GPIO_ReadInputDataBit(myDHT11_GPIO,myDHT11_Pin)==0 && retry<100) { Delay_us(1); retry++; } retry=0; while(GPIO_ReadInputDataBit(myDHT11_GPIO,myDHT11_Pin)==1 && retry<100) { Delay_us(1); retry++; } retry=0; for(i=0;i<5;i++) { arr[i]=myDHT11_readbyte(); } Delay_us(50); } sum=arr[0]+arr[1]+arr[2]+arr[3]; *shi_H=arr[0]; *shi_L=arr[1]; *wen_H=arr[2]; *wen_L=arr[3]; if(sum==arr[4]) return 1;//校验正确返回1 else return 0;//校验错误返回0 }

    main.c代码

  • #include "stm32f10x.h" #include "OLED.h" #include "DHT11.h" int main() { unsigned char wen_H,wen_L,shi_H,shi_L;//用于接收温湿度数据 OLED_Init(); while(1) { if(myDHT11_getdata(&wen_H,&wen_L,&shi_H,&shi_L)==1)//温湿度校验,返回值为1则校验正确 { OLED_ShowNum(1, 6, wen_H, 2);//显示所读取的温度数值 OLED_ShowNum(2, 6, shi_H, 2);//显示所读取的湿度数值 } OLED_ShowChinese(1,1,0);//温 OLED_ShowChinese(1,2,1);//度 OLED_ShowChar(1, 5, ':'); OLED_ShowChinese(1,5,4);//℃ OLED_ShowChinese(2,1,2);//湿 OLED_ShowChinese(2,2,1);//度 OLED_ShowChar(2, 5, ':'); OLED_ShowChar(2, 8, '%'); } }
http://www.jsqmd.com/news/1295057/

相关文章:

  • 如何在5分钟内启动你的第一个OpenWork任务:从安装到执行的快速入门
  • 成都市青羊区不拆除补漏哪家强?维小达 不拆除补漏、室内防水、屋面防水、外墙防水、飘窗防水、阳台防水、地下室防水补漏、厨卫漏水一站式修缮服务 - 一点传媒
  • AsmDude2:基于LSP的汇编语言开发革命,让机器码编程进入智能时代
  • 为什么选择Maple Mono:5个理由让你的代码编辑体验全面升级
  • 2026安徽省中考择校!安徽建设学校3+2公办免学费,公办院校名额抢报中 - 最新资讯
  • Adrenaline PSP模拟器固件:让PS Vita变身完美PSP游戏机的终极解决方案
  • 【AI定价策略黄金法则】:20年实战验证的7大动态定价模型与避坑指南
  • 2026 袋式过滤器厂家怎么选?综合实力强的优质厂家推荐指南 - 商业新知
  • 2026高导热硅胶片生产厂家怎么选?一站式高导热硅胶片定制批发厂家 - 栗子测评
  • 2026年新疆乌鲁木齐康明斯发电机行业实力服务商——新疆泓浩机电设备有限公司 - 优企名品
  • BERT4Rec配置详解:超参数调优与JSON配置文件全解析
  • Linux系统修复---救援模式修复fstab文件错误
  • Python连接MQTT服务器订阅和发布主题-Python物联网开发
  • OpenHarmony应用开发——更改应用名称和图标--开源鸿蒙-物联网上位机软件开发
  • 为什么你的提示词总被AI“曲解”?——深度拆解逻辑断层、隐含假设与认知偏差,立即诊断你的思维漏洞
  • Fan Control终极指南:解决Windows电脑风扇噪音的完美解决方案
  • Matlab实现Transformer时间序列预测的工业应用
  • 品牌升级选哪家设计公司?2026 十大优质全案服务商排行榜出炉 - GrowUME
  • 2026上饶仿石漆装修厂家推荐,不褪色自建房别墅外墙厂家哪家好?选购避坑攻略:3大维度+4条标准助你选对源头厂家 - geo88
  • 衡阳家里瓷砖鼓起来了怎么办?2026免砸砖微创修复,有效解决晃动空鼓 - 宅安选房屋修缮
  • Win11Debloat终极指南:让Windows系统重获新生的开源解决方案
  • 2026四川波形护栏厂家推荐:高速公路波形护栏选购指南与源头厂家深度分析 - geo88
  • 2026 年至今,上海专业的床垫吊装优质厂家怎么联系,搬新家遇它犯难?原来还有这么多门道能避开麻烦! - 行业推荐官【官方】
  • 直击报价套路、成色模糊乱象,2026佛山二奢包包回收规范化整治要点 - 二奢分享官
  • Deceive终极指南:3分钟掌握英雄联盟隐身技巧,重新掌控游戏社交
  • 从一次 Token 接入排障聊起:为什么稳定性、时效性和可观测性比“能用”更重要?
  • 3步完成输入法词库迁移:深蓝词库转换工具让数据迁移变得如此简单
  • Axure RP中文界面切换方案:告别语言障碍的设计效率提升指南
  • 身份证翻译件去哪里弄需要多久?快至3分钟搞定! - 慧办好
  • 【单片机毕业设计】基于嵌入式单片机的车内安全监测系统开发 基于 STM32 的自动手动双模式车载报警系统设计(013601)