|
利用stm32f103c6t6和DHT11實(shí)現(xiàn)溫濕度測(cè)量
制作出來的實(shí)物圖如下:
溫濕度測(cè)量
STM32單片機(jī)源程序如下:
- #include "stm32f10x.h" // Device header
- #include "Delay.h"
- #define MCU_Output 1
- #define MCU_Input 0
- extern uint8_t DHT11_exist_Plag;// DHT11狀態(tài)標(biāo)志位,0表示DHT11不存在,1表示DHT11存在
- extern uint8_t Hum_Tem_Data[];// 存放溫濕度數(shù)據(jù)數(shù)組
- /****
- *@brief 引腳初始化,將DHT11與PA10相連
- *@parameter MCU_State:MCU_State=1時(shí),單片機(jī)引腳配置為輸出模式。MCU_State=0則配置為輸入模式
- *@ReturnValue 無
- */
- void DHT11_DataPin_Init(uint8_t MCU_State)
- {
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
- GPIO_InitTypeDef GPIO_InitStructure;
- if(MCU_State)
- {
- GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
- }else
- {
- GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
- }
- GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
- GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
- GPIO_Init(GPIOA,&GPIO_InitStructure);
- }
- /****
- *@brief DHT11起始信號(hào)
- *@parameter
- *@ReturnValue
- */
- void DHT11_Start(void)
- {
- Delay_s(1);
- DHT11_DataPin_Init(MCU_Output);
- GPIO_SetBits(GPIOA,GPIO_Pin_10);
- GPIO_ResetBits(GPIOA,GPIO_Pin_10);
- Delay_ms(20);
- GPIO_SetBits(GPIOA,GPIO_Pin_10);
- Delay_us(30);
- DHT11_DataPin_Init(MCU_Input);
- if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_10)==0)
- {
- DHT11_exist_Plag=1;
- while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_10)==0);
- while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_10)==1);
- }
- }
- /****
- *@brief DHT11溫濕度測(cè)量
- *@parameter 無
- *@ReturnValue 無
- */
- void DHT11_GetData(void)
- {
- int8_t i,j,Temp=0x00;
- if(DHT11_exist_Plag==1)// 檢測(cè)DHT11是否存在,若DHT11不存在,則不必進(jìn)行下面步驟
- {
- for(j=0;j<5;j++)
- {
-
- for(i=0;i<8;i++)
- {
- while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_10)==0);
- Delay_us(30);
- if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_10)==1)
- {
- Temp=Temp|(0x80>>i);// DHT11數(shù)據(jù)高位先出
- while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_10)==1);
- }
- }
- Hum_Tem_Data[j]=Temp;
- Temp=0x00;
- }
- if(Hum_Tem_Data[0]+Hum_Tem_Data[1]+Hum_Tem_Data[2]+Hum_Tem_Data[3]!=Hum_Tem_Data[4])// 校驗(yàn)數(shù)據(jù)是否正確,若不正確則數(shù)組全部寫1
- {
- Hum_Tem_Data[0]=0xff;
- Hum_Tem_Data[1]=0xff;
- Hum_Tem_Data[2]=0xff;
- Hum_Tem_Data[3]=0xff;
-
- }
- }else
- {
- DHT11_Start();
- }
- }
復(fù)制代碼
DHT11_數(shù)據(jù)手冊(cè).pdf
(681.04 KB, 下載次數(shù): 29)
2022-10-6 16:16 上傳
點(diǎn)擊文件名下載附件
Keil代碼下載:
Keil代碼.7z
(176.88 KB, 下載次數(shù): 107)
2022-10-8 03:01 上傳
點(diǎn)擊文件名下載附件
|
評(píng)分
-
查看全部評(píng)分
|