功能介绍:采用stm32单片机作为控制CPU,采用ADC采集天然气浓度,仿真中使用电位器调节天然气浓度,采用DHT11传感器采集温湿度,当天然气浓度或者温度大于一定值时,蜂鸣器报警,并且风扇打开进行排气,LCD1602显示屏显示相关数据,程序采用keil5编写,仿真使用Proteus8.9,并且程序有中文注释,新手容易看懂,文末有资料分享:
下面是仿真演示视频和相关仿真图片
62-基于stm32单片机天然气温湿度检测自动排气Proteus仿真(程序+仿真+全套资料)




下面是程序部分展示(程序有中文注释,新手容易看懂)
程序部分展示:/******************************************************************************** Function Name : DHT11_Read* Description : 读取温湿度* Input : None* Output : None* Return : None*******************************************************************************/int DHT11_ReadData(void){unsigned int cout = 1;unsigned int T_H, T_L, H_H, H_L, Check;//设置为IO口输出模式DHT_Set_Output();DHT_W_DATA=1;//1、MCU开始起始信号DHT_ResetBit();delay_ms(18); //拉低至少18msDHT_SetBit();//delay_us(20); //拉高20~40us//设置为IO口输入模式DHT_Set_Input();//2、读取DH21响应if(DHT_ReadBit() == Bit_RESET){//等待80us的高电平cout = 1;while(DHT_ReadBit() && cout++);//等待80us的低电平cout = 1;while(!DHT_ReadBit() && cout++);delay_us(54);//读取8bit的湿度整数数据H_H = DH21_ReadByte();//读取8bit的湿度小数数据H_L = DH21_ReadByte();//读取8bit的温度整数数据T_H = DH21_ReadByte();//读取8bit的温度小数数据T_L = DH21_ReadByte();//读取8bit的校验和Check = DH21_ReadByte();if(Check == (H_H + H_L + T_H + T_L)){DHT11.Hum_H = H_H;DHT11.Hum_L = H_L;DHT11.Tem_H = T_H;DHT11.Tem_L = T_L;return 1;}else{return 0;}}return 0;}/*** @brief 获取温度* @param none.* @retval Temp, 温度值*/int DHT11_GetTem(void){return (DHT11.Tem_H << 8 | DHT11.Tem_L);}/*** @brief 获取湿度* @param none.* @retval Hum,湿度值*/int DHT11_GetHum(void){return (DHT11.Hum_H << 8 | DHT11.Hum_L);}
程序打开办法:特别注意:下载资料包以后一定要先解压!!!(建议解压到桌面上,文件路径太深会导致程序打开异常),解压后再用keil5打开。

下面是资料包里面包含的相关文件展示

本文介绍了基于STM32单片机的项目,使用ADC和DHT11传感器监测天然气浓度和温湿度,当条件触发时蜂鸣器报警并启动风扇排气。程序带有中文注释,适合新手学习,附带Proteus仿真及全套资料下载链接。

被折叠的 条评论
为什么被折叠?



