国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標題:
STM32F103VET6 溫濕度采集DHT11通過串口發給pc上位機
[打印本頁]
作者:
路漫漫
時間:
2020-5-25 00:14
標題:
STM32F103VET6 溫濕度采集DHT11通過串口發給pc上位機
程序功能 DHT11采集溫度 --》 stm32 PE6端口 - -》stm32校驗DHT11輸入的數據 --》 stm32 USART1上報PC。
串口軟件設置:
波特率: 9600;
校驗位: 無;
數據位: 8;
停止位: 1;
輸出方式 :ASII;
采集頻率:1s/次;
STM32_DHT11源碼.7z
(177.37 KB, 售價: 1 E幣)
2020-5-25 00:14 上傳
點擊文件名下載附件
售價: 1 E幣
[記錄]
[
購買
]
部分代碼
uint16_t DHT11_Buffer[5];
/**************************************
* 函 數 : 初始化DHT11
* 參 數 :無
* 返回值 :無
***************************************/
void DHT11_InitConfing(void)
{
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOE,ENABLE );
DHT11_O();
DHT11_H;
}
/**************************************
* 函 數 : DHT11配置為輸出
* 參 數 :無
* 返回值 :無
***************************************/
void DHT11_O(void){
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6;
GPIO_Init( GPIOE ,&GPIO_InitStruct);
}
/**************************************
* 函 數 : DHT11配置為輸入
* 參 數 :無
* 返回值 :無
***************************************/
void DHT11_I(void){
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6;
GPIO_Init( GPIOE ,&GPIO_InitStruct);
}
/**************************************
* 函 數 : DHT11讀取電平
* 參 數 :無
* 返回值 :高電平 1、 低電平 0
***************************************/
uint8_t DHT11_R(void){
return GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_6);
}
/**************************************
* 函 數 : DHT11讀取數據
* 參 數 :無
* 返回值 :高電平 1、 低電平 0
***************************************/
uint8_t DHT11_ReadBit(void){
while( DHT11_R() == RESET);
Delay_us(40);
if( DHT11_R() == SET )
{
while( DHT11_R() == SET);
return 1;
}else
return 0;
}
/**************************************
* 函 數 : DHT11讀取字節
* 參 數 :無
* 返回值 :字節
***************************************/
uint8_t DHT11_ReadByte(void){
uint8_t i,data = 0;
for( i = 0 ; i < 8 ; i++ ){
data <<= 1;
data |= DHT11_ReadBit();
}
return data;
}
/**************************************
* 函 數 : DHT11讀取溫濕度
* 參 數 :無
* 返回值 :SUCESS 1 ,FAIL = 0
***************************************/
uint16_t DHT11_ReadData(void)
{
uint8_t i;
DHT11_O();
DHT11_L;
Delay_us(19000);
DHT11_H;
Delay_us(30);
DHT11_I();
//DHT11_R;
if( DHT11_R() == RESET){
while( DHT11_R() == RESET);
while( DHT11_R() == SET );
for( i = 0; i < 5 ;i++ )
DHT11_Buffer[i] = DHT11_ReadByte();
DHT11_O();
DHT11_H;
if( (DHT11_Buffer[0] + DHT11_Buffer[1] + DHT11_Buffer[2] + DHT11_Buffer[3]) == DHT11_Buffer[4] )
return 1;
else
return 0;
}else
return 0;
}
復制代碼
歡迎光臨 ELEOK (http://m.afoofa.cn/)
Powered by Discuz! X5.0