找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5549|回復(fù): 10
收起左側(cè)

DHT11模塊stm32f103c8t6程序

  [復(fù)制鏈接]
ID:462603 發(fā)表于 2019-1-5 17:58 | 顯示全部樓層 |閱讀模式
DHT11模塊stm32f103c8t6單片機驅(qū)動

源程序如下:
  1. /***************STM32F103C8T6**********************
  2. * 文件名  :DHT11.c
  3. * 描述    :DHT11傳感器
  4. * 備注    : DHT11溫度濕度傳感器
  5. * 接口    :PA11-DATA

  6. ********************LIGEN*************************/

  7. #include "dht11.h"
  8. #include "delay.h"

  9. #define DT GPIO_Pin_11
  10.       
  11. //復(fù)位DHT11
  12. void DHT11_Rst(void)          
  13. {                 
  14.         DHT11_IO_OUT();         //SET OUTPUT
  15.         DHT11_DQ_OUT=0;         //拉低DQ
  16.         Delay_ms(20);            //拉低至少18ms
  17.         DHT11_DQ_OUT=1;         //DQ=1
  18.         Delay_us(30);             //主機拉高20~40us
  19. }

  20. //等待DHT11的回應(yīng)
  21. //返回1:未檢測到DHT11的存在
  22. //返回0:存在
  23. u8 DHT11_Check(void)           
  24. {   
  25.         u8 retry=0;
  26.         DHT11_IO_IN();//SET INPUT         
  27.     while (DHT11_DQ_IN&&retry<100)//DHT11會拉低40~80us
  28.         {
  29.                 retry++;
  30.                 Delay_us(1);
  31.         };         
  32.         if(retry>=100)return 1;
  33.         else retry=0;
  34.     while (!DHT11_DQ_IN&&retry<100)//DHT11拉低后會再次拉高40~80us
  35.         {
  36.                 retry++;
  37.                 Delay_us(1);
  38.         };
  39.         if(retry>=100)return 1;            
  40.         return 0;
  41. }

  42. //從DHT11讀取一個位
  43. //返回值:1/0
  44. u8 DHT11_Read_Bit(void)                          
  45. {
  46.         u8 retry=0;
  47.         while(DHT11_DQ_IN&&retry<100)//等待變?yōu)榈碗娖?br />
  48.         {
  49.                 retry++;
  50.                 Delay_us(1);
  51.         }
  52.         retry=0;
  53.         while(!DHT11_DQ_IN&&retry<100)//等待變高電平
  54.         {
  55.                 retry++;
  56.                 Delay_us(1);
  57.         }
  58.         Delay_us(40);//等待40us
  59.         if(DHT11_DQ_IN)return 1;
  60.         else return 0;                  
  61. }

  62. //從DHT11讀取一個字節(jié)
  63. //返回值:讀到的數(shù)據(jù)
  64. u8 DHT11_Read_Byte(void)   
  65. {        
  66.         u8 i,dat;
  67.         dat=0;
  68.         for (i=0;i<8;i++)
  69.         {
  70.                 dat<<=1;
  71.                 dat|=DHT11_Read_Bit();
  72.         }                                                    
  73.         return dat;
  74. }

  75. //從DHT11讀取一次數(shù)據(jù)
  76. //temp:溫度值(范圍:0~50°)
  77. //humi:濕度值(范圍:20%~90%)
  78. //返回值:0,正常;1,讀取失敗
  79. u8 DHT11_Read_Data(u8 *temp,u8 *humi)   
  80. {        
  81.         u8 buf[5];
  82.         u8 i;
  83.         DHT11_Rst();
  84.         if(DHT11_Check()==0)
  85.         {
  86.                 for(i=0;i<5;i++)//讀取40位數(shù)據(jù)
  87.                 {
  88.                         buf[i]=DHT11_Read_Byte();
  89.                 }
  90.                 if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
  91.                 {
  92.                         *humi=buf[0];
  93.                         *temp=buf[2];
  94.                 }
  95.         }
  96.         else return 1;
  97.         return 0;            
  98. }

  99. //初始化DHT11的IO口 DQ 同時檢測DHT11的存在
  100. //返回1:不存在
  101. //返回0:存在             
  102. u8 DHT11_Init(void)
  103. {         
  104.         GPIO_InitTypeDef  GPIO_InitStructure;       
  105.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);         //使能PG端口時鐘
  106.         GPIO_InitStructure.GPIO_Pin = DT;                                 //PG11端口配置
  107.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽輸出
  108.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  109.         GPIO_Init(GPIOA, &GPIO_InitStructure);                                 //初始化IO口
  110.         GPIO_SetBits(GPIOA,DT);                                                 //PG11 輸出高
  111.                             
  112.         DHT11_Rst();  //復(fù)位DHT11
  113.         return DHT11_Check();//等待DHT11的回應(yīng)
  114. }
復(fù)制代碼

所有資料51hei提供下載:
DHT11溫濕度檢測.zip (285.43 KB, 下載次數(shù): 223)


評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:462698 發(fā)表于 2019-1-5 20:39 | 顯示全部樓層
很好,正好需要
回復(fù)

使用道具 舉報

ID:82928 發(fā)表于 2019-3-8 19:38 | 顯示全部樓層
現(xiàn)在還看不太懂,努力努力努力
回復(fù)

使用道具 舉報

ID:508794 發(fā)表于 2019-4-19 14:28 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報

ID:219729 發(fā)表于 2019-4-19 23:18 | 顯示全部樓層
敢問樓主使用的什么LCD?
回復(fù)

使用道具 舉報

ID:479851 發(fā)表于 2019-4-21 06:09 | 顯示全部樓層
這個 行不行啊
回復(fù)

使用道具 舉報

ID:524448 發(fā)表于 2019-4-29 21:41 | 顯示全部樓層
好用嗎
回復(fù)

使用道具 舉報

ID:477889 發(fā)表于 2019-5-17 20:48 | 顯示全部樓層
為什么dht11初始化失敗啊
回復(fù)

使用道具 舉報

ID:309115 發(fā)表于 2019-7-6 15:05 | 顯示全部樓層
謝謝樓主
回復(fù)

使用道具 舉報

ID:421308 發(fā)表于 2019-7-12 09:26 | 顯示全部樓層
這個只能是PA11口
回復(fù)

使用道具 舉報

ID:421308 發(fā)表于 2019-7-12 09:27 | 顯示全部樓層
寄存器寫死了,怎么改啊,有誰知道嗎???
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表