找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4454|回复: 3
收起左侧

基于STM32F1的dht22温湿度模块读取程序

[复制链接]
ID:168165 发表于 2020-2-9 10:34 | 显示全部楼层 |阅读模式
原版是dht11的例程,稍加修改,可正常读取,dht22精度较高,使用液晶屏显示

单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "key.h"
  4. #include "sys.h"
  5. #include "lcd.h"
  6. #include "usart.h"         
  7. #include "dht11.h"        



  8. int main(void)
  9. {         
  10.         u16 t=0;                            
  11.         u16 temperature,temperature2;              
  12.         u16 humidity,humidity2;              

  13.         delay_init();                     //延时函数初始化          
  14.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
  15.         uart_init(115200);                 //串口初始化为115200
  16.         LED_Init();                                  //初始化与LED连接的硬件接口
  17.         LCD_Init();                                   //初始化LCD  
  18.         POINT_COLOR=RED;                //设置字体为红色
  19.         LCD_ShowString(30,50,200,16,16,"SHI");       
  20.         LCD_ShowString(30,70,200,16,16,"DHT22 TEST");       
  21.         LCD_ShowString(30,90,200,16,16,"2020/2/4");          
  22.         while(DHT11_Init())        //DHT11初始化       
  23.         {
  24.                 LCD_ShowString(30,130,200,16,16,"DHT22 Error");
  25.                 delay_ms(200);
  26.                 LCD_Fill(30,130,239,130+16,WHITE);
  27.                 delay_ms(200);
  28.         }                                                                  
  29.         LCD_ShowString(30,130,200,16,16,"DHT22 OK");
  30.         POINT_COLOR=BLUE;//设置字体为蓝色
  31.         LCD_ShowString(30,150,200,16,16,"Temp:  .   C");         
  32.         LCD_ShowString(30,170,200,16,16,"Humi:  .   %");         
  33. //        delay_ms(1700);
  34.         while(1)
  35.         {                        
  36.                 if(t%200==0)                        //每100ms读取一次
  37.                 {                                                                          
  38.                         DHT11_Read_Data(&temperature,&temperature2,&humidity,&humidity2);        //读取温湿度值                                            
  39.                         LCD_ShowNum(30+40,150,temperature / 10,2,16);        //显示温度                  
  40.                         LCD_ShowNum(30+60,150,temperature % 10,2,16);                               
  41.                         LCD_ShowNum(30+40,170,humidity/10,2,16);                //显示湿度                   
  42.                         LCD_ShowNum(30+60,170,humidity%10,2,16);                //显示湿度         
  43.                 }                                  
  44.                  delay_ms(1);
  45.                 t++;
  46.                 if(t==200)
  47.                 {
  48.                         t=0;
  49.                         LED0=!LED0;
  50.                 }
  51.         }
  52. }
复制代码

所有资料51hei提供下载:
dht11.7z (221.97 KB, 下载次数: 204)
回复

使用道具 举报

ID:887095 发表于 2021-3-1 10:24 | 显示全部楼层
可以,要比之前我在网上看到的代码好的多
回复

使用道具 举报

ID:493412 发表于 2021-12-31 10:59 | 显示全部楼层
stm32f103zet6测试读取dht22准确,很好的代码,顶一个
回复

使用道具 举报

ID:1058088 发表于 2022-12-17 19:49 | 显示全部楼层
可以,我觉得可以出个介绍dht22连带一起
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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