標題: ESK32-360開發板檢測溫濕度 [打印本頁]
作者: jinglixixi 時間: 2020-8-29 08:59
標題: ESK32-360開發板檢測溫濕度
本帖最后由 jinglixixi 于 2020-8-29 09:01 編輯
DHT22是一種單總線的數字式溫濕度傳感器,它共有3個引腳,只需占用一個GPIO口接口工作。
通過這條總線既靠它發出指令,也靠它接收數據。此外,為了進行信號的識別,還需相應的時序配合。有了前面的I2C接口的基礎,就可以探索一下DHT22的驅動及溫濕度檢測。
1. DHT22溫濕度檢測
DHT22與MCU的連接關系為:
DAT——PC12
其余兩個引腳則接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)
設置GPIO為輸入、輸出的函數為:
- void DHT22_IO_IN(void)
- {
- AFIO_GPxConfig(GPIO_PC, GPIO_PIN_12, 0);
- GPIO_PullResistorConfig(HT_GPIOC, GPIO_PIN_12, GPIO_PR_DOWN);
- GPIO_DirectionConfig(HT_GPIOC, GPIO_PIN_12, GPIO_DIR_IN);
- GPIO_InputConfig(HT_GPIOC, GPIO_PIN_12, ENABLE);
- }
-
- void DHT22_IO_OUT(void)
- {
- GPIO_PullResistorConfig(HT_GPIOC, GPIO_PIN_12, GPIO_PR_DISABLE);
- GPIO_DriveConfig(HT_GPIOC, GPIO_PIN_12, GPIO_DV_8MA);
- GPIO_DirectionConfig(HT_GPIOC, GPIO_PIN_12, GPIO_DIR_OUT);
- GPIO_InputConfig(HT_GPIOC, GPIO_PIN_12, ENABLE);
- }
復制代碼
DHT22讀取數據的函數為:
- u8 DHT22_Read_Data(u16 *temp,u16 *humi)
- {
- u8 buf[5];
- u8 i;
- DHT22_Rst();
- if(DHT22_Check()==0)
- {
- for(i=0;i<5;i++)
- {
- buf[i]=DHT22_Read_Byte();
- }
- if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
- {
- *humi=(buf[0]*256+buf[1]);
- *temp=(buf[2]*256+buf[3]);
- }
- } else return 1;
- return 0;
- }
復制代碼
實現圖1所示效果的主程序為:
- int main(void)
- {
- u8 senflag;
- SYSTICK_ClockSourceConfig(SYSTICK_SRC_STCLK);
- SYSTICK_SetReloadValue(SystemCoreClock / 8 / 1000000);
- SYSTICK_IntConfig(ENABLE);
-
- HT32F_DVB_OUT_Init();
- HT_GPIOD->RR = GPIO_PIN_0;
- Delayms(100);
- UxART_Configuration();
- senflag=DHT22_Init();
- if(senflag) gHelloString[3] = '1';
- else gHelloString[3] = '0';
- UxART_TxTest();
- while(1)
- {
- if(!senflag)
- {
- DHT11_Read_Data(&temperature,&humidity);
- gHelloString[2] = temperature/100+'0';
- gHelloString[3] = temperature%100/10+'0';
- gHelloString[5] = temperature%10+'0';
- gHelloString[10] = humidity/100+'0';
- gHelloString[11] = humidity%100/10+'0';
- gHelloString[13] = humidity%10+'0';
- }
- Delayus(2000000);
- }
- }
復制代碼
1.jpg (41.28 KB, 下載次數: 64)
下載附件
2020-8-29 08:56 上傳
圖1溫濕度值輸出顯示
2.LCD屏顯示溫濕度值
顯示溫濕度值得主程序為:
- int main(void)
- {
- u8 senflag;
-
- SYSTICK_ClockSourceConfig(SYSTICK_SRC_STCLK);
- SYSTICK_SetReloadValue(SystemCoreClock / 8 / 1000000);
- SYSTICK_IntConfig(ENABLE);
-
- HT32F_DVB_OUT_Init();
- HT_GPIOD->RR = GPIO_PIN_0;
-
- Delayms(100);
- LCD_Init();
- LCD_Config();
- LCD_BackColorSet(Black);
- LCD_TextColorSet(Yellow);
- senflag=DHT22_Init();
- if(senflag) LCD_StringLineDisplay8(Line0, " NO SEN!");
- else LCD_StringLineDisplay8(Line0, " SEN OK!");
- LCD_StringLineDisplay8(Line2, " Holtek");
- LCD_StringLineDisplay8(Line3, " HT32 Series F1654 ");
- LCD_StringLineDisplay8(Line4, " LCD DHT22 Example ");
- LCD_StringLineDisplay8(Line6, " T= . C");
- LCD_StringLineDisplay8(Line7, " H= . %");
- while(1)
- {
- if(!senflag)
- {
- DHT11_Read_Data(&temperature,&humidity);
- LCD_ShowNum(Line6,100,temperature/10,3);
- LCD_ShowNum(Line6,140,temperature%10,1);
- LCD_ShowNum(Line7,100,humidity/10,3);
- LCD_ShowNum(Line7,140,humidity%10,1);
- }
- Delayus(2000000);
- }
- }
復制代碼
下載后,其執行效果如圖2所示。
2.jpg (27.68 KB, 下載次數: 59)
下載附件
2020-8-29 08:56 上傳
圖2 溫濕度值顯示
歡迎光臨 (http://m.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
亚洲精品播放
|
一级做a视频|
欧美黑人一区二区三区
|
91亚洲国产
|
日韩性视频
|
成人午夜影院
|
亚洲免费精品
|
在线免费国产
|
欧美vieox另类极品
|
日本欧美久久久久免费播放网
|
日韩亚洲欧美在线
|
久久精品国产视频
|
国产三级视频在线
|
91久久国产综合久久91精品网站
|
中文字幕+乱码+中文乱码91
|
欧美精品第一页
|
国产美女视频网站
|
九九热在线观看
|
日本精品视频在线观看
|
欧美国产精品一区二区
|
中文字幕av久久爽av
|
天天色天天干天天
|
亚洲无av在线中文字幕
|
日本乱子伦
|
福利在线看|
91看片看淫黄大片
|
艳妇臀荡乳欲伦交换h漫
|
三级免费观看
|
国产一级特黄aaa大片
|
国产一级片视频
|
天天操夜夜骑
|
99国产在线视频
|
日韩免费高清视频
|
亚洲性天堂
|
久久青草视频
|
国产精品一区av
|
免费看av的网址
|
欧美在线综合
|
激情婷婷
|
久草福利在线
|
九九视频在线观看
|