主要功能
- LCD1602显示屏实时显示当前的烟雾值和报警值;烟雾浓度的报警值可以通过按键设定;
- 当前烟雾值在正常范围时,绿灯亮;当前烟雾浓度超过上限值时,红灯亮,蜂鸣器响;
- 三个按键功能:设置、加、减;
- 通过蓝牙模块,系统可与手机APP进行连接,在APP上显示当前的温度和设置值,并可通过APP上的按钮,调整设置值。
整体电路主要由51单片机最小系统,MQ-2烟雾传感器电路,ADC0832模数转换芯片,LCD1602显示屏电路,按键电路,蜂鸣器及蓝牙模块构成。原理图如下:
仿真图如下:
蓝牙功能无法仿真。
程序
void main() //主函数
{
Init1602(); //初始化液晶函数
UartInit();
init(); //初始化定时器
init_eeprom(); //开始初始化保存的数据
CO_Calibration();
FENG = 1;
while(1) //进入循环
{
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(); //调用按键函数
}
}