当前位置:首页 > 体育

dht11 STM32驱动DHT11温湿度传感器

DHT11是一款集湿度和温度于一体的数字传感器。该传感器包括电阻式湿度测量元件和NTC

测温元件,并连接高性能8位微控制器。通过单片机等微处理器的简单电路连接,可以

实时采集当地的湿度和温度。DHT11可以通过简单的单总线与单片机通信,只需要一条

输入输出端口。传感器内部的40位湿度和温度数据一次性传输到单片机,并对数据进行校验

检查以有效确保数据传输的准确性。DHT11功耗很低,5V电源电压下平均工作最大

0.5毫安电流。

DHT11的技术参数如下:

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

工作电流:平均0.5毫安

输出:单总线数字信号

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

准确度:湿度5%,温度2℃

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

DHT11有三条有效总线,VCC GND DAT,看起来和DS18B20差不多,但是简单多了,只需要读取数据包,不需要设置命令。

每次读取数据时,总共读取40位,即5个字节,高位在第一个MSB之前

五个字节为:8位湿度整数数据+8位湿度十进制数据+8位温度整数数据+8位温度十进制数据+8位校验和

读写时序如下

首先主机发出启动信号,即(初始状态仍然为高)下拉数据线t1(至少18ms),然后上拉数据线t2(20~40us),(此时需要切换输入/输出模式),然后读取DHT11的响应。正常情况下,DHT11会拉下t3的数据线(40~50us)

也就是说,每次需要复位检查响应,就可以开始读取数据了。数据的格式如下

由此可以看出,每个数据都是以12-14us的起始位开始的,无论是0还是1,都需要我们监控之后的高级时间长度。基本上可以认为高级时长在35us以上,基本上是1。

(注意不能等这个级别超过40us。)因为0的时间是40us,等待太久可能会扔掉下一个数据的起始位(这里可以用等待评论延时计数的方式来判断时间。当级别为0时,等待为1,每次计数1us,最后看高级时长)

驱动程序代码如下

# ifndef _ _ DHT 11 _ h # define _ _ DHT 11 _ h # include " iore map . h " # include " delay . h " # include " UART . h "//IO方向设置# define DHT 11 _ IO _ IN(){ GPIOG-> CRH & amp;= 0XFFFF0FFFGPIOG->;CRH " = 8 & lt;& lt12;} #定义DHT 11 _ IO _ OUT(){ GPIOG->;CRH & amp;= 0XFFFF0FFFGPIOG->;CRH | = 3 & lt;& lt12;} ////IO运算函数# defined ht11 _ dq _ output gout(11)//数据端口PG11 # defined ht11 _ dq _ InP gin(11)//数据端口PG11 u8 Dht 11 init(void);//初始化dht11u8 dht11读取数据(u8 * temp,u8 *米虎);//读取温湿度u8 DHT 11 read byte(void);//读取一个字节u8 DHT 11 read bit(void);//读出一位u8 Dht 11 check(void);//检查是否有DHT 11 void DHT 11 rst(void);//重置DHT 11 void Dht11 show(void);# endif # include " DHT 11 . h "//reset DHT 11 void DHT 11 rst(void){ DHT 11 _ io _ out();//设置输出DHT 11 _ DQ _输出= 0;//拉DQ德莱姆斯(20低(20);//下拉至少18ms DHT 11 _ DQ _ OUT = 1;//DQ = 1 DelayUs(30);//主机上拉20 ~ 40 us。//等待DHT11的响应。//返回1:未检测到DHT11。//Return 0:u8 Dht 11 check(void){ u8 retry = 0;DHT 11 _ IO _ IN();//设置输入时间(DHT11 _ DQ _输入& amp& amp重试<。100)//DHT11降低40 ~ 80us { retry++;delay us(1);};if(重试>;=100)返回1;否则重试= 0;while(!DHT11 _ DQ _ IN & amp;& amp重试<。100)//DHT 11下拉,再拉40 ~ 80us { retry++;delay us(1);};if(重试>;=100)返回1;返回0;}//从DHT 11//读取一位返回值:1/0 u8 dht11读取位(void){ u8 retry = 0;而(DHT11 _ DQ _ IN & amp;& amp重试<。100)//等待低级{ retry++;delay us(1);} retry = 0;while(!DHT11 _ DQ _ IN & amp;& amp重试<。100)//等待高级{ retry++;delay us(1);} Delayus(40);//等待40us if(DHT11_DQ_IN)返回1;否则返回0;}//从DHT 11//读取一个字节返回值:读取数据u8 Dht11ReadByte(void) {u8 i,dat;dat = 0;for(I = 0;i<。8;i++){ dat & lt;& lt=1;dat | = DHT 11 ReadBit();} return dat}//从DHT11//读取一次数据:温度值(范围:0 ~ 50)//米虎:湿度值(范围:20%~90%) //返回值:0,正常;1,读取u8 dht11读取数据失败(u8 * temp,u8 *米虎){ u8 buf[5];u8i;DHT 11 rst();if(Dht 11 check()= = 0){ for(I = 0;i<。5;I++)//读取40位数据{ buf[I]= DHT 11 read byte();} if((buf[0]+buf[1]+buf[2]+buf[3])= = buf[4]){ *米虎= buf[0];* temp = buf[2];} }else返回1;返回0;}//初始化DHT11的IO端口DQ,检测DHT 11//return 1:no//return 0:u8 DHT 11 init(void){ RCC->;APB2ENR|=1<。& lt8;//启用PORTG时钟gpio->:CRH & amp;= 0XFFFF0FFF//PORTG.11推挽输出gpio g->:CRH | = 0x 00003000;GPIOG->;ODR | = 1 & lt;& lt11;//输出1 Dht 11 rst();return Dht11 check();} void Dht11Show(void) { u8 temp,米虎;if(DHT 11 read data(& amp;温度和amp。米虎){ printf("DHT11读取失败 r n ");} else {printf("温度%d湿度%d rn ",temp,米虎);} }

原始链接:

1.《dht11 STM32驱动DHT11温湿度传感器》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《dht11 STM32驱动DHT11温湿度传感器》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/tiyu/1572019.html

上一篇

拯救猴子兵 王者荣耀:猴子全新打法?廉颇吓得只能逃跑,鲁班放弃挣扎

下一篇

桃色诱惑 王者农药女英雄口红大全

superrecovery 超级硬盘数据恢复软件superrecovery的快速注册

  • superrecovery 超级硬盘数据恢复软件superrecovery的快速注册
  • superrecovery 超级硬盘数据恢复软件superrecovery的快速注册
  • superrecovery 超级硬盘数据恢复软件superrecovery的快速注册

适途 适途科技举办业务数字化大数据伙伴分享会

  • 适途 适途科技举办业务数字化大数据伙伴分享会
  • 适途 适途科技举办业务数字化大数据伙伴分享会
  • 适途 适途科技举办业务数字化大数据伙伴分享会

万方医学数据库 “万方医学图书”数据库正式开通通知

中国明星片酬 中国明星片酬代言费飙升 附2017福布斯统计数据

中国明星片酬 中国明星片酬代言费飙升 附2017福布斯统计数据

据《福布斯》数据,今年中国十大明星总收入超过22亿元人民币,比2015年增长166%。影星成龙以3.3亿元高居榜首。网友热评:真正的戏骨都赚不了钱,也是挺可悲的一件事。毫无演技的鲜肉们包了市场网友热评:打骨头赚不到钱,...

房价指数 中国房地产大数据报告

  • 房价指数 中国房地产大数据报告
  • 房价指数 中国房地产大数据报告
  • 房价指数 中国房地产大数据报告
爱奇艺无法连接网络 爱奇艺登录失败请检查网络连接怎么办?爱奇艺视频登陆失败请重试怎么回事

爱奇艺无法连接网络 爱奇艺登录失败请检查网络连接怎么办?爱奇艺视频登陆失败请重试怎么回事

最近手机登录爱奇艺总是提示登录失败。请检查网络连接。很明显有网络,wifi也不错。登录怎么会失败?下面,边肖介绍爱奇艺视频登录失败的解决方案,请重试。爱奇艺视频登陆失败解决方法:爱奇艺视频登录失败解决方案:1.登录提示...

爱奇艺显示网络异常 爱奇艺登录失败请检查网络连接怎么办?爱奇艺视频登陆失败请重试怎么回事

爱奇艺显示网络异常 爱奇艺登录失败请检查网络连接怎么办?爱奇艺视频登陆失败请重试怎么回事

最近手机登录爱奇艺总是提示登录失败。请检查网络连接。很明显有网络,wifi也不错。登录怎么会失败?下面,边肖介绍爱奇艺视频登录失败的解决方案,请重试。爱奇艺视频登陆失败解决方法:爱奇艺视频登录失败解决方案:1.登录提示...

爱奇艺网络异常 爱奇艺登录失败请检查网络连接怎么办?爱奇艺视频登陆失败请重试怎么回事

爱奇艺网络异常 爱奇艺登录失败请检查网络连接怎么办?爱奇艺视频登陆失败请重试怎么回事

最近手机登录爱奇艺总是提示登录失败。请检查网络连接。很明显有网络,wifi也不错。登录怎么会失败?下面,边肖介绍爱奇艺视频登录失败的解决方案,请重试。爱奇艺视频登陆失败解决方法:爱奇艺视频登录失败解决方案:1.登录提示...