标题:
STM32F103VET6 温湿度采集DHT11上报PC
[打印本页]
作者:
xiexuedi
时间:
2020-4-22 01:16
标题:
STM32F103VET6 温湿度采集DHT11上报PC
程序功能 DHT11采集温度 --》 stm32 PE6端口 - -》stm32校验DHT11输入的数据 --》 stm32 USART1上报PC。
串口软件设置:
波特率: 9600;
校验位: 无;
数据位: 8;
停止位: 1;
输出方式 :ASII;
采集频率:1s/次;
#include "../DRIVER/inc/dht11.h"
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;
}
复制代码
全部资料51hei下载地址:
2020-04-21_STM32_DHT11.7z
(177.37 KB, 下载次数: 66)
2020-4-22 02:27 上传
点击文件名下载附件
stm32f103vet6与DHT11温度采集
下载积分: 黑币 -5
作者:
i林小拽
时间:
2020-4-23 23:57
谢谢楼主,我正在找这样的好文件,谁知道你这么快就发了
作者:
ahdsdq
时间:
2020-4-24 07:20
谢谢楼主,很好
作者:
zhaoxla
时间:
2020-4-25 14:28
感谢,下载看看。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1