久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1582|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于stm32單片機(jī)的DHT11溫濕度程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1077982 發(fā)表于 2023-5-17 00:36 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
主控stm32f103zet6傳感器DHT11

oled是0.96寸4引腳iic

  1. #include "delay.h"
  2. #include "sys.h"
  3. #include "oled.h"
  4. #include "dht11.h"
  5. #include "usart.h"         

  6. int main(void)
  7. {
  8.           u8 temperature,humidity;
  9.     delay_init();   
  10.     uart_init(115200);                //串口初始化
  11.           printf("\r\n wecome to DHT11");  
  12.         
  13.     OLED_Init();      
  14.     DHT11_Init();   
  15.         
  16.     OLED_Clear();     
  17.     OLED_ShowString(0, 0, "temperature:",16);
  18.     OLED_ShowString(0, 2, "humidity:",16);

  19.     while (1)
  20.     {
  21.         if (DHT11_Read_Data(&temperature,&humidity) == 0)
  22.         {
  23.             char temp[20], humi[20];
  24.             sprintf(temp, "%d%dC", temperature / 10, temperature % 10);
  25.             sprintf(humi, "%d%d%%", humidity / 10, humidity % 10);
  26.             OLED_ShowString(95, 0, temp,16);   
  27.             OLED_ShowString(95, 2, humi,16);   
  28.                                           printf("\r\n temperature:%d℃,humidity:%d",temperature,humidity);
  29.                                 }
  30.                     else
  31.                                 {  printf("\r\n EEROR! THE DHT11 HAS NO RESPOND...");                                                                                       
  32.                        delay_ms(100);
  33.                                 }
  34.         delay_ms(1000);   
  35.     }
  36. }
復(fù)制代碼
  1. #include "dht11.h"
  2. #include "delay.h"

  3.       
  4. //復(fù)位DHT11
  5. void DHT11_Rst(void)           
  6. {                 
  7.         DHT11_IO_OUT();         //SET OUTPUT
  8.     DHT11_DQ_OUT=0;         //拉低DQ
  9.     delay_ms(20);            //拉低至少18ms
  10.     DHT11_DQ_OUT=1;         //DQ=1
  11.         delay_us(30);             //主機(jī)拉高20~40us
  12. }
  13. //等待DHT11的回應(yīng)
  14. //返回1:未檢測到DHT11的存在
  15. //返回0:存在
  16. u8 DHT11_Check(void)            
  17. {   
  18.         u8 retry=0;
  19.         DHT11_IO_IN();//SET INPUT         
  20.     while (DHT11_DQ_IN&&retry<100)//DHT11會(huì)拉低40~80us
  21.         {
  22.                 retry++;
  23.                 delay_us(1);
  24.         };         
  25.         if(retry>=100)return 1;
  26.         else retry=0;
  27.     while (!DHT11_DQ_IN&&retry<100)//DHT11拉低后會(huì)再次拉高40~80us
  28.         {
  29.                 retry++;
  30.                 delay_us(1);
  31.         };
  32.         if(retry>=100)return 1;            
  33.         return 0;
  34. }
  35. //從DHT11讀取一個(gè)位
  36. //返回值:1/0
  37. u8 DHT11_Read_Bit(void)                          
  38. {
  39.          u8 retry=0;
  40.         while(DHT11_DQ_IN&&retry<100)//等待變?yōu)榈碗娖?br />
  41.         {
  42.                 retry++;
  43.                 delay_us(1);
  44.         }
  45.         retry=0;
  46.         while(!DHT11_DQ_IN&&retry<100)//等待變高電平
  47.         {
  48.                 retry++;
  49.                 delay_us(1);
  50.         }
  51.         delay_us(40);//等待40us
  52.         if(DHT11_DQ_IN)return 1;
  53.         else return 0;                  
  54. }
  55. //從DHT11讀取一個(gè)字節(jié)
  56. //返回值:讀到的數(shù)據(jù)
  57. u8 DHT11_Read_Byte(void)   
  58. {        
  59.     u8 i,dat;
  60.     dat=0;
  61.         for (i=0;i<8;i++)
  62.         {
  63.                    dat<<=1;
  64.             dat|=DHT11_Read_Bit();
  65.     }                                                   
  66.     return dat;
  67. }
  68. //從DHT11讀取一次數(shù)據(jù)
  69. //temp:溫度值(范圍:0~50°)
  70. //humi:濕度值(范圍:20%~90%)
  71. //返回值:0,正常;1,讀取失敗
  72. u8 DHT11_Read_Data(u8 *temp,u8 *humi)   
  73. {        
  74.          u8 buf[5];
  75.         u8 i;
  76.         DHT11_Rst();
  77.         if(DHT11_Check()==0)
  78.         {
  79.                 for(i=0;i<5;i++)//讀取40位數(shù)據(jù)
  80.                 {
  81.                         buf[i]=DHT11_Read_Byte();
  82.                 }
  83.                 if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
  84.                 {
  85.                         *humi=buf[0];
  86.                         *temp=buf[2];
  87.                 }
  88.         }else return 1;
  89.         return 0;            
  90. }
  91. //初始化DHT11的IO口 DQ 同時(shí)檢測DHT11的存在
  92. //返回1:不存在
  93. //返回0:存在            
  94. u8 DHT11_Init(void)
  95. {
  96.         RCC->APB2ENR|=1<<8;    //使能PORTG口時(shí)鐘
  97.         GPIOG->CRH&=0XFFFF0FFF;//PORTG.11 推挽輸出
  98.         GPIOG->CRH|=0X00003000;
  99.         GPIOG->ODR|=1<<11;      //輸出1                                    
  100.         DHT11_Rst();
  101.         return DHT11_Check();
  102. }
復(fù)制代碼

Keil代碼下載:: 溫濕度oled -串口通信程序.7z (188.92 KB, 下載次數(shù): 38)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品中文字幕在线 | 永久av| 99精品久久| 精品国产成人 | 综合久久久 | 九九热在线免费视频 | 国产欧美精品一区二区 | 亚洲精品视频在线播放 | 国产日产精品一区二区三区四区 | 男女搞网站 | av手机在线免费观看 | 一级二级三级在线观看 | 久久久久久久久精 | 久久人体 | www.日韩| 久久精品国产免费 | 中文字幕动漫成人 | 亚洲欧洲一区二区 | 成年网站在线观看 | 三级视频在线观看电影 | 日韩有码在线播放 | 亚洲成人一区 | 久草中文在线观看 | 中文字幕一区二区三区精彩视频 | 一区二区三区精品视频 | 日本精品久久 | 国产网站在线免费观看 | 亚洲精品v | 国产一区二区精品自拍 | 欧美一区二区三区在线观看 | 国产一区电影 | 美女久久久久久久 | 成人毛片一区二区三区 | 亚洲欧美高清 | 欧美精品在线一区 | 精品国产女人 | 日本成人中文字幕 | 亚洲一区二区三区免费在线 | 日韩欧美一区二区三区 | 一区二区三区欧美 | 亚洲精品女优 |