0
本帖最后由 sda12138 于 2023-4-23 19:07 编辑
硬件设计:DHT11 data 引脚 连接 单片机 PB8软件设计:
1.通信设计:
波特率:无
校验位:无
数据位:8
停止位:1
2.程序设计:
(1).DHT11程序设计
#include \"debug.h\"
#define HIGH 1
#efine LOW 0
#define SUCCESS 1
#define ERROR 0
#define DHT11_CLK RCC_APB2Periph_GPIOB
#define DHT11_PIN GPIO_Pin_8
#define DHT11_PORT GPIOB
//读取引脚的电平
#define DHT11_DATA_IN() GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8)
typedef struct
{
int shidu_int; //湿度的整数部分
int shidu_deci; //湿度的小数部分
int wendu_int; //温度的整数部分
int wendu_deci; //温度的小数部分
int dht11_crc; //校验和
}DHT11_Data_TypeDef;
void DHT11_GPIO_Config(void);//引脚配置
int Read_DHT11(DHT11_Data_TypeDef *DHT11_Data);//测量数据读取
int Read_One_Byte(void);
(2).主程序设计
DHT11_Data_TypeDef DHT11_Read_Data;
int main(void)
{
unsigned char pt1[4];
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Delay_Init();
USART_Printf_Init(115200);
DHT11_GPIO_Config();
printf(\\\"SystemClk:%d\\\\r\\\\n\\\", SystemCoreClock);
for(;;)
{
if(Read_DHT11(&DHT11_Read_Data )==SUCCESS){
pt1[0]=DHT11_Data.shidu_int ;
pt1[1]=DHT11_Data.shidu_deci ;
pt1[2]=DHT11_Data.wendu_int ;
pt1[3]=DHT11_Data.wendu_deci ;
printf(\\\"温度是===%d.%d\\\\r\\\\n\\\",pt1[2],pt1[3]);
printf(\\\"湿度是===%d.%d\\\\r\\\\n\\\",pt1[0],pt1[1]);
}else {
for(int i=0;i<4;i++){
pt=0;
}
printf(\\\"系统繁忙!\\\\r\\\\n\\\");
}
Delay_Ms(1000);
}
}
下期更新:
题目:基于CH32和数据融合技术的实验室温湿度检测系统设计与实现
时间:最晚更新时间超过4月30日
|
|