基于51单片机的烟雾浓度检测系统-带蓝牙

 本设计的硬件构成:

51单片机最小系统,LCD1602液晶显示模块,MQ-2烟雾传感器,ADC0832模块,蜂鸣器模块,LED指示灯模块,按键模块,HC-05蓝牙模块;

仿真图

​​​​​​​

功能介绍:

1、采用MQ-2烟雾传感器采集酒精浓度,AD0832模数转换芯片将MQ-2烟雾传感器采集到的的电压信号转换成数字信号给单片机。

2、采用LCD1602液晶屏显示当前酒精浓度值和报警值。可以按键设置报警值。

3、四个按键设置、加、减,单独的是复位按键。

4、当烟雾浓度没有超过设置的阀值时,绿灯闪亮,当烟雾浓度超过上限值时,红灯闪烁同时蜂鸣器报警。

5、手机蓝牙APP除可显示烟雾浓度值和设置值外,可设置浓度的报警值,也可控制打开或者关闭蜂鸣器。

主要物料清单及型号:

显示屏:LCD1602-5V;

单片机:STC89C51/52、AT89S51/52;

烟雾传感器:MQ-2;

蓝牙模块:HC-05、HC-06;

部分程序源码:


void main()				//主函数
{
	Init1602();						 //初始化液晶函数
	UartInit();
	init();							 //初始化定时器
	init_eeprom();  //开始初始化保存的数据
	CO_Calibration();
	FENG = 1;
	while(1)						 //进入循环
	{
		if(revFlag == 1)
		{
			switch(revData)
			{
				case 'O':        //获取当前酒精浓度
				{
					FENG=0;					//打开蜂鸣器
					FENGen = 1;	
					Delay(50);       //延时50ms
					FENG=1;						//关闭蜂鸣器			
				}
				break;
				
				case 'C':        //获取传感器2数据
				{
					FENG=0;					//打开蜂鸣器
					FENGen = 0;
					Delay(50);       //延时50ms
					FENG=1;						//关闭蜂鸣器
				}
				break;
				
				case '+':        //开启蜂鸣器
				{
					FENG=0;					//打开蜂鸣器
					WARNING++;				//报警值加
					if(WARNING>=255)		//最大加到255
						WARNING=0;				//清零
					Delay(50);
					FENG=1;						//关闭蜂鸣器
					write_eeprom();			   //保存数据
				}
				break;
				
				case '-':        //开启蜂鸣器
				{
					FENG=0;					//打开蜂鸣器
					WARNING--;
					if(WARNING<=0)   //减到最小
						WARNING=255;
					Delay(50);       //延时50ms
					FENG=1;						//关闭蜂鸣器
					write_eeprom();			   //保存数据
					
				}
				break;
				
				default:
					break;
			}
			revFlag = 0;
		}
		
		
		if((T_50ms%10)==0)     //500ms刷新一次
		{
			for(m=0;m<50;m++)			//读50次AD值
			sum = adc0832(0)+sum;		//读到的AD值,将读到的数据累加到sum
			temp=sum/50;				//跳出上面的for循环后,将累加的总数除以50得到平均值temp
			sum=0; 						//平均值计算完成后,将总数清零
			if(temp > K_ZERO) 
				temp = temp - K_ZERO;              //首先减去零点漂移,一般是130mV
			else
				temp = 0;
		}
		if(displayRrfresh==1)
		{
			displayRrfresh = 0;
			if(set==0)					 //set为0,说明现在不是设置状态
				Display_1602(temp,WARNING);	 //显示AD数值和报警值
		}
		if(T_50ms>=20)
		{
			T_50ms=0;
				GetCO();
		}
		
		
		if(temp<WARNING&&set==0)	 //AD数值小于报警值
		{
			flag=0;					 //关闭报警
		}
		else if(temp>WARNING&&set==0)//AD值大于报警值
		{
			flag=1;					 //打开报警
		}
		Key();						 //调用按键函数
	}
}

链接:https://pan.baidu.com/s/1zYa6QAjg5e9uwIeJrzMgog 
提取码:5sg0

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值