欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

        標(biāo)題: ESK32-360開發(fā)板檢測溫濕度 [打印本頁]

        作者: jinglixixi    時(shí)間: 2020-8-29 08:59
        標(biāo)題: ESK32-360開發(fā)板檢測溫濕度
        本帖最后由 jinglixixi 于 2020-8-29 09:01 編輯

        DHT22是一種單總線的數(shù)字式溫濕度傳感器,它共有3個(gè)引腳,只需占用一個(gè)GPIO口接口工作。
        通過這條總線既靠它發(fā)出指令,也靠它接收數(shù)據(jù)。此外,為了進(jìn)行信號(hào)的識(shí)別,還需相應(yīng)的時(shí)序配合。有了前面的I2C接口的基礎(chǔ),就可以探索一下DHT22的驅(qū)動(dòng)及溫濕度檢測。

        1. DHT22溫濕度檢測
        DHT22與MCU的連接關(guān)系為:
        DAT——PC12
        其余兩個(gè)引腳則接3.3V工作電源

        定義GPIO口讀取電位及輸出高低電平的語句為:
        #define DHT22_D0_H      HT_GPIOC->SRR = GPIO_PIN_12
        #define DHT22_D0_L       HT_GPIOC->RR = GPIO_PIN_12
        #define DHT22_D0_R      GPIO_ReadInBit(HT_GPIOC, GPIO_PIN_12)

        設(shè)置GPIO為輸入、輸出的函數(shù)為:
        1. void DHT22_IO_IN(void)
        2. {
        3.             AFIO_GPxConfig(GPIO_PC, GPIO_PIN_12, 0);
        4.             GPIO_PullResistorConfig(HT_GPIOC, GPIO_PIN_12, GPIO_PR_DOWN);
        5.             GPIO_DirectionConfig(HT_GPIOC, GPIO_PIN_12, GPIO_DIR_IN);
        6.             GPIO_InputConfig(HT_GPIOC, GPIO_PIN_12, ENABLE);
        7. }

        8. void DHT22_IO_OUT(void)
        9. {
        10.            GPIO_PullResistorConfig(HT_GPIOC, GPIO_PIN_12, GPIO_PR_DISABLE);
        11.            GPIO_DriveConfig(HT_GPIOC, GPIO_PIN_12, GPIO_DV_8MA);
        12.            GPIO_DirectionConfig(HT_GPIOC, GPIO_PIN_12, GPIO_DIR_OUT);
        13.            GPIO_InputConfig(HT_GPIOC, GPIO_PIN_12, ENABLE);
        14. }
        復(fù)制代碼

        DHT22讀取數(shù)據(jù)的函數(shù)為:
        1. u8 DHT22_Read_Data(u16 *temp,u16 *humi)
        2. {      
        3.         u8 buf[5];
        4.          u8 i;
        5.          DHT22_Rst();
        6.          if(DHT22_Check()==0)
        7.          {
        8.                    for(i=0;i<5;i++)
        9.                    {
        10.                             buf[i]=DHT22_Read_Byte();
        11.                    }
        12.                    if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
        13.                    {
        14.                             *humi=(buf[0]*256+buf[1]);
        15.                             *temp=(buf[2]*256+buf[3]);
        16.                    }
        17.          } else return 1;
        18.          return 0;     
        19. }
        復(fù)制代碼

        實(shí)現(xiàn)圖1所示效果的主程序?yàn)椋?/div>
        1. int main(void)
        2. {
        3.          u8 senflag;
        4.          SYSTICK_ClockSourceConfig(SYSTICK_SRC_STCLK);
        5.          SYSTICK_SetReloadValue(SystemCoreClock / 8 / 1000000);
        6.          SYSTICK_IntConfig(ENABLE);
        7.         
        8.          HT32F_DVB_OUT_Init();
        9.          HT_GPIOD->RR = GPIO_PIN_0;      
        10.          Delayms(100);         
        11.          UxART_Configuration();
        12.          senflag=DHT22_Init();
        13.          if(senflag) gHelloString[3] = '1';
        14.          else     gHelloString[3] = '0';
        15.          UxART_TxTest();     
        16.          while(1)
        17.          {
        18.                      if(!senflag)
        19.                      {
        20.                                       DHT11_Read_Data(&temperature,&humidity);
        21.                                       gHelloString[2] = temperature/100+'0';
        22.                                       gHelloString[3] = temperature%100/10+'0';
        23.                                       gHelloString[5] = temperature%10+'0';
        24.                                       gHelloString[10] = humidity/100+'0';
        25.                                       gHelloString[11] = humidity%100/10+'0';
        26.                                       gHelloString[13] = humidity%10+'0';
        27.                      }
        28.                      Delayus(2000000);
        29.          }
        30. }
        復(fù)制代碼

        1溫濕度值輸出顯示

        2.LCD屏顯示溫濕度值
        顯示溫濕度值得主程序?yàn)椋?/div>
        1. int main(void)
        2. {
        3.          u8 senflag;
        4.         
        5.          SYSTICK_ClockSourceConfig(SYSTICK_SRC_STCLK);
        6.          SYSTICK_SetReloadValue(SystemCoreClock / 8 / 1000000);
        7.          SYSTICK_IntConfig(ENABLE);
        8.         
        9.          HT32F_DVB_OUT_Init();
        10.          HT_GPIOD->RR = GPIO_PIN_0;
        11.         
        12.          Delayms(100);         
        13.          LCD_Init();
        14.          LCD_Config();
        15.          LCD_BackColorSet(Black);
        16.          LCD_TextColorSet(Yellow);
        17.          senflag=DHT22_Init();
        18.          if(senflag)  LCD_StringLineDisplay8(Line0, "              NO SEN!");
        19.          else       LCD_StringLineDisplay8(Line0, "              SEN OK!");
        20.          LCD_StringLineDisplay8(Line2, "               Holtek");
        21.          LCD_StringLineDisplay8(Line3, "          HT32 Series F1654    ");
        22.          LCD_StringLineDisplay8(Line4, "          LCD DHT22 Example    ");
        23.          LCD_StringLineDisplay8(Line6, "          T=    .  C");
        24.          LCD_StringLineDisplay8(Line7, "          H=    .  %");
        25.          while(1)
        26.          {
        27.                      if(!senflag)
        28.                      {
        29.                                       DHT11_Read_Data(&temperature,&humidity);
        30.                                       LCD_ShowNum(Line6,100,temperature/10,3);
        31.                                       LCD_ShowNum(Line6,140,temperature%10,1);
        32.                                       LCD_ShowNum(Line7,100,humidity/10,3);
        33.                                       LCD_ShowNum(Line7,140,humidity%10,1);
        34.                      }
        35.                      Delayus(2000000);
        36.          }
        37. }
        復(fù)制代碼

        下載后,其執(zhí)行效果如圖2所示。

        圖2  溫濕度值顯示






        歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1