找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8353|回复: 3
打印 上一主题 下一主题
收起左侧

众拳STM8的DHT11温湿度传感器实验 附代码(IAR库函数)

[复制链接]
跳转到指定楼层
楼主

DHT11 温湿度传感器简介


工作电压范围:3.3V-5.5V
工作电流 :平均0.5mA
输出:单总线数字信号
测量范围:湿度20~90%RH,温度0~50℃
精度 :湿度±5%,温度±2℃
分辨率 :湿度1%,温度1℃

DHT11 温湿度传感器简介
DHT11数字温湿度传感器采用单总线数据格式。单个数据引脚端口完成输入输出双向传输。其数据包由5个字节(40Bit)组成。数据分小数部分和整数部分,一次完整的数据传输为40bit,高位先出。

    DHT11的数据格式为:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和。

    其中校验和数据为前四个字节相加。
DHT11 温湿度传感器简介
传感器数据输出的是未编码的二进制数据。数据(湿度、温度、整数、小数)之间应该分开处理。例如,某次从DHT11读到的数据如图所示:


由以上数据就可得到湿度和温度的值,计算方法:
湿度= byte4 . byte3=45.0 (%RH)
温度= byte2 . byte1=28.0 ( ℃)
校验= byte4+ byte3+ byte2+ byte1=73(校验正确)
DHT11 温湿度传感器时序图



首先主机发送开始信号,即:拉低数据线,保持t1(至少18ms)时间,然后拉高数据线t2(20~40us)时间,然后读取DHT11的响应,正常的话,DHT11会拉低数据线,保持t3(40~50us)时间,作为响应信号,然后DHT11拉高数据线,保持t4(40~50us)时间后,开始输出数据。
DHT11 温湿度传感器时序图


单片机源程序如下:
  1. /***********************************************************************
  2. *   说    明: 点亮第一个发光二极管
  3. *   开发平台: 剑齿虎STM8开发板        
  4. *
  5. *   作    者: 刘洋 张殿东
  6. *   版    本: V1.0
  7. *
  8. *   IAR开发环境    版本 V2.20.1
  9. *   ST库函数       版本 V2.2.0
  10. ***********************************************************************/

  11. #include "pbdata.h"//引入自定义公共头文件

  12. void BSP_Configuration(void);//硬件初始化函数声明

  13. /***********************************************************************
  14. *   函 数 名: main
  15. *   功能说明: c程序入口
  16. *   形    参:无
  17. *   返 回 值: 错误代码(无需处理)
  18. ***********************************************************************/
  19. int main(void)
  20. {
  21.   BSP_Configuration();//硬件驱动初始化函数
  22.   
  23.   while(1)//主程序循环,反复执行循环体里的语句
  24.   {
  25.     DHT11_Demo();
  26.   }
  27. }
  28. /***********************************************************************
  29. *   函 数 名: BSP_Configuration
  30. *   功能说明: 初始化硬件设备。只需要调用一次。该函数配置CPU寄存器和外设的寄存器并初始化一些全局变量。
  31. *   形    参:无
  32. *   返 回 值: 无
  33. ***********************************************************************/
  34. void BSP_Configuration(void)
  35. {  
  36.   CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//时钟速度为内部16M,1分频,
  37.   UART1_Congfiguration();//调用RS232串口1初始化函数
  38.   LED_Init();//调用LED初始化函数
  39.   rim();//打开总中断
  40. }

  41. /*断言函数:它的作用是在编程的过程中为程序提供参数检查*/
  42. #ifdef USE_FULL_ASSERT
  43. ……………………

  44. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码


所有资料51hei提供下载:
【众拳】剑齿虎STM8开发板的实验代码下载:
众拳DHT11温湿度程序.zip (1.37 MB, 下载次数: 127)



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:62690 发表于 2018-7-17 21:37 | 只看该作者
写的透彻,赞👍
回复

使用道具 举报

板凳
ID:308248 发表于 2019-6-29 11:10 | 只看该作者
写的很好非常详细
回复

使用道具 举报

地板
ID:1462 发表于 2019-8-28 19:52 | 只看该作者
请问这是I2C通信还是UART通信,有UART通信的么,那个要怎么写
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表