本设计的硬件构成:
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