国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee

 找回密碼
 注冊
搜索

STM32F103VET6 溫濕度采集DHT11通過串口發給pc上位機

[復制鏈接]
樓主
路漫漫 發表于 2020-5-25 00:14:36 | 只看該作者 |倒序瀏覽 |閱讀模式
程序功能    DHT11采集溫度 --》 stm32 PE6端口  - -》stm32校驗DHT11輸入的數據  --》 stm32 USART1上報PC。
串口軟件設置:
波特率: 9600;
校驗位: 無;
數據位: 8;
停止位: 1;
輸出方式 :ASII;
采集頻率:1s/次;
STM32_DHT11源碼.7z (177.37 KB, 售價: 1 E幣)
部分代碼
  1. uint16_t DHT11_Buffer[5];

  2. /**************************************
  3. * 函  數 : 初始化DHT11
  4. * 參  數 :無
  5. * 返回值 :無
  6. ***************************************/
  7. void DHT11_InitConfing(void)
  8. {
  9.                 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOE,ENABLE );
  10.                 DHT11_O();
  11.                 DHT11_H;

  12. }

  13. /**************************************
  14. * 函  數 : DHT11配置為輸出
  15. * 參  數 :無
  16. * 返回值 :無
  17. ***************************************/
  18. void DHT11_O(void){
  19.         GPIO_InitTypeDef  GPIO_InitStruct;
  20.         
  21.         GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_Out_PP;
  22.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  23.         GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_6;
  24.         
  25.         GPIO_Init( GPIOE ,&GPIO_InitStruct);
  26.         
  27. }
  28. /**************************************
  29. * 函  數 : DHT11配置為輸入
  30. * 參  數 :無
  31. * 返回值 :無
  32. ***************************************/
  33. void DHT11_I(void){
  34.         GPIO_InitTypeDef  GPIO_InitStruct;
  35.         
  36.         GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_IN_FLOATING;
  37.         GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  38.         GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_6;
  39.         
  40.         GPIO_Init( GPIOE ,&GPIO_InitStruct);
  41.         
  42. }
  43. /**************************************
  44. * 函  數 : DHT11讀取電平
  45. * 參  數 :無
  46. * 返回值 :高電平 1、 低電平 0
  47. ***************************************/
  48. uint8_t DHT11_R(void){
  49.         
  50.         return GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_6);
  51. }
  52. /**************************************
  53. * 函  數 : DHT11讀取數據
  54. * 參  數 :無
  55. * 返回值 :高電平 1、 低電平 0
  56. ***************************************/
  57. uint8_t DHT11_ReadBit(void){
  58.         
  59.          while( DHT11_R() == RESET);
  60.          Delay_us(40);
  61.                 if( DHT11_R() == SET )
  62.                 {
  63.                         while( DHT11_R() == SET);
  64.                                 return 1;
  65.                 }else
  66.                                 return 0;
  67. }
  68. /**************************************
  69. * 函  數 : DHT11讀取字節
  70. * 參  數 :無
  71. * 返回值 :字節
  72. ***************************************/
  73. uint8_t DHT11_ReadByte(void){
  74.         uint8_t i,data = 0;
  75.         for( i = 0 ; i < 8 ; i++  ){
  76.                         data <<= 1;
  77.                         data |= DHT11_ReadBit();
  78.         }
  79.         return data;
  80. }
  81. /**************************************
  82. * 函  數 : DHT11讀取溫濕度
  83. * 參  數 :無
  84. * 返回值 :SUCESS 1  ,FAIL = 0
  85. ***************************************/
  86. uint16_t DHT11_ReadData(void)
  87. {
  88.         uint8_t  i;
  89.         DHT11_O();
  90.         DHT11_L;
  91.         Delay_us(19000);
  92.         DHT11_H;
  93.         Delay_us(30);
  94.         DHT11_I();
  95.         //DHT11_R;
  96.         if( DHT11_R() == RESET){        
  97.                
  98.                 while( DHT11_R() == RESET);
  99.                 while( DHT11_R() == SET );
  100.                
  101.                 for( i = 0; i < 5 ;i++ )
  102.                         DHT11_Buffer[i] = DHT11_ReadByte();
  103.                
  104.                 DHT11_O();
  105.                 DHT11_H;
  106.                 if( (DHT11_Buffer[0] + DHT11_Buffer[1] + DHT11_Buffer[2] + DHT11_Buffer[3])  == DHT11_Buffer[4] )
  107.                    return 1;
  108.                 else
  109.                         return 0;
  110.                         
  111.         }else
  112.                 return 0;

  113. }
復制代碼


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

本版積分規則

手機版|小黑屋|ELEOK |網站地圖

GMT+8, 2026-5-26 01:07

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回復 返回頂部 返回列表