243-基于stm32单片机车内环境监测系统(源程序+原理图+元件清单)

  一:功能介绍:

1、系统组成:采用stm32f103c8t6核心板+DHT11温湿度+DS1302时钟模块+LCD1602显示屏+蜂鸣器+MQ135传感器+CH340USB模块+按键+LED
2、通过DHT11传感器采集温湿度,显示到LCD1602上面;
3、通过DS1302时钟模块读取当前时间,显示到LCD1602上面;
4、通过MQ135传感器检测车内空气质量,显示到LCD1602上面;
5、当空气质量浓度大于50(阈值程序可调),蜂鸣器报警提醒;
6、当温度大于30度(阈值程序可调),LED灯闪烁提醒;
7、通过CH340模块将数据通过串口上传到电脑串口助手;

二:实物演示视频

243-基于stm32单片机车内环境温湿度空气质量监测

三:程序代码展示(采用C语言编写,使用keil5编译,代码有中文注释,新手容易看懂)

 

void Display(void)
{
	char xxx=0,yyy=0;
	//T1 温度
	WrByte1602(0,0,'T'); //.
	WrByte1602(0,1,'='); //.		
	WrByte1602(0,2,AsciiCode[wendu%100/10]);
	WrByte1602(0,3,AsciiCode[wendu%10]);
	WrByte1602(0,4,' ');	
	//T2 湿度
	WrByte1602(0,5,'H'); //.
	WrByte1602(0,6,'='); //.		
	WrByte1602(0,7,AsciiCode[shidu%100/10]);
	WrByte1602(0,8,AsciiCode[shidu%10]);
	WrByte1602(0,9,' ');		
	//T3 浓度
	WrByte1602(0,10,'N'); //.
	WrByte1602(0,11,'='); //.		
	WrByte1602(0,12,AsciiCode[nongdu%1000/100]);	
	WrByte1602(0,13,AsciiCode[nongdu%100/10]);
	WrByte1602(0,14,AsciiCode[nongdu%10]);
	WrByte1602(0,15,' ');		

	xxx=0;yyy=1;

	
	WrByte1602(yyy,xxx++,AsciiCode[shi%100/10]);
	WrByte1602(yyy,xxx++,AsciiCode[shi%10]);
	WrByte1602(yyy,xxx++,':');		

	WrByte1602(yyy,xxx++,AsciiCode[fen%100/10]);
	WrByte1602(yyy,xxx++,AsciiCode[fen%10]);
	WrByte1602(yyy,xxx++,':');	
	WrByte1602(yyy,xxx++,AsciiCode[miao%100/10]);
	WrByte1602(yyy,xxx++,AsciiCode[miao%10]);

	
}

int main(void)
{	
  float vol;//ADC电压值
	//时钟配置
	SystemInit();		
	SystemCoreClockUpdate();
		RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
  //引脚配置
	GPIO_Configuration();
	//LCD1602初始化
	Init1602();
	NVICConfig();
	//RCC时钟开启
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
	Usart1_Init(9600);	//串口1初始化 
	DS1302_Init();
		 ADC_Set();	
	delay_ms(300);
	//DS1302_Write_Time();	//ds1302时间校准
	DS1302_Get_Time(time_data);	//读取时间	
		shi=time_data[9]*10+time_data[10];
		fen=time_data[11]*10+time_data[12];
		miao=time_data[13]*10+time_data[14];	
	
	while (1)
	{		
				 vol = ADC_GetConversionValue(ADC1);
					 nongdu = (vol)*(3.3/4096)*100-20;
				 //读取温湿度
				 DHT11_receive(&shidu,&wendu);
					DS1302_Get_Time(time_data);	//读取时间	
		shi=time_data[9]*10+time_data[10];
		fen=time_data[11]*10+time_data[12];
		miao=time_data[13]*10+time_data[14];			
         //显示全部参数
				 Display(); 
		
     //浓度大于50
     if(nongdu>50 )
		 {
			 PBout(13)=1;//蜂鸣器提醒
		 }
		 else  PBout(13)=0;//蜂鸣器关闭
		     
		 //温度>30  LED闪烁提醒
     if(wendu>30 )
		 {
			 PBout(12)=~PBout(12);
		 }
		 else  PBout(12)=0;//否则关闭 
		printf("TEMP:%d\r\n",wendu);	 //串口发送温度 
		delay_ms(100);
		printf("HUMI:%d\r\n",shidu);	 //串口发送湿度 
		delay_ms(100);
		printf("nongdu:%d\r\n",nongdu);	 //串口发送浓度
		delay_ms(100);
	}

四:原理图文件展示(采用AD(Altium Designer)打开)

 五:实物图展示:

六: 资料清单展示:

资料包百度网盘下载链接 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电子工程DIY工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值