一.硬件方案
本设计采用51单片机为核心控制器,利用气体传感器MQ-2、ADC0832模数转换器、DS18B20温度传感器等实现基本功能。通过这些传感器和芯片,当环境中可燃气体浓度或温度等发生变化时系统会发出相应的灯光报警信号和声音报警信号,以此来实现火灾报警,智能化提示。
电路主要由51单片机+最小系统+LCD1602液晶显示模块+MQ-2烟雾模块+ADC0832模块+DS18B20温度模块+蜂鸣器模块+LED指示灯模块+继电器驱动模块+风扇模块+按键模块;
二.设计功能
(1)LCD1602液晶显示屏实时显示当前的烟雾值和温度值。
(2)温度和烟雾的报警值可以通过按键设定。
(3)当前温度值超过上限时,红灯亮,蜂鸣器响。
(4)当前烟雾值超过上线时,黄灯亮,蜂鸣器响。
(5)四个按键功能:减、设置、加、单独的是复位按键;
(6)通过继电器驱动模块,当烟雾或可燃气体浓度超过报警值时启动继电器,继电器带动风扇转动模拟排烟。
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:
(2)Protues仿真图如下:
四.软件设计
主程序源码
void main (void)
{u8 key;wendu=check_wendu(); //初始化时调用温度读取函数 防止开机85°CInit1602(); //调用初始化显示函数LCD_Write_String(0,0,"SET T:00 E:000"); //开机界面LCD_Write_String(1,0,"NOW T:00.0 E:000"); delay_ms(1000);wendu=check_wendu(); //初始化时调用温度读取函数 防止开机85°Cwhile (1) //主循环{key=Key_Scan(); //按键扫描yanwu=Adc0832(0); //读取烟雾值wendu=check_wendu(); //读取温度值if(key==KEY_SET){Mode++;}switch(Mode) //判断模式的值{case 0: //监控模式{Display_1602(yushe_wendu,yushe_yanwu,wendu,yanwu); //显示预设温度,预设烟雾,温度值,烟雾值if(yanwu>=yushe_yanwu) //烟雾值大于等于预设值时{Led_Reg=0; //烟雾指示灯亮Fan=0;Buzzer=0; //蜂鸣器报警}else //烟雾值小于预设值时{Led_Reg=1; //关掉报警灯Fan=1;}if(wendu>=(yushe_wendu*10)) //温度大于等于预设温度值时(为什么是大于预设值*10:因为我们要显示的温度是有小数点后一位,是一个3位数,25.9°C时实际读的数是259,所以判断预设值时将预设值*10){Buzzer=0; //打开蜂鸣器报警Led_Yellow=0; //打开温度报警灯}else //温度值小于预设值时{Led_Yellow=1; //关闭报警灯}if((yanwu<yushe_yanwu)&&(wendu<(yushe_wendu*10))) //当烟雾小于预设值并且温度也小于预设值时 (&&:逻辑与,左右两边的表达式都成立(都为真,也就是1)时,该if语句才成立){Buzzer=1; //停止报警}break;}case 1://预设温度模式{SelectPosition(0,5) ; //指定位置write_com(0x0d); //阴影闪烁if(key==KEY_ADD) //加键按下{yushe_wendu++; //预设温度值(阀值)加1if(yushe_wendu>=99) //当阀值加到大于等于99时yushe_wendu=99; //阀值固定为99LCD_Write_Char(0,6,yushe_wendu,2) ;//显示预设温度}if(key==KEY_MINUS) //减键按下{if(yushe_wendu<=1) //当温度上限值减小到1时yushe_wendu=1; //固定为1yushe_wendu--; //预设温度值减一,最小为0LCD_Write_Char(0,6,yushe_wendu,2) ;//显示预设温度}break; //执行后跳出switch}case 2: //预设烟雾模式{SelectPosition(0,12) ; //指定位置 write_com(0x0d); //打开显示 无光标 光标闪烁if(key==KEY_ADD) //加键按下{if(yushe_yanwu>=255) //当阀值加到大于等于255时yushe_yanwu=254; //阀值固定为254yushe_yanwu++; //预设烟雾值(阀值)加1,最大为255LCD_Write_Char(0,13,yushe_yanwu,3) ;//显示预设烟雾}if(key==KEY_MINUS) //减键按下{if(yushe_yanwu<=1) //当烟雾上限值减小到1时yushe_yanwu=1; //固定为1yushe_yanwu--; //预设温度值减一,最小为0 LCD_Write_Char(0,13,yushe_yanwu,3) ;//显示预设烟雾}break;}default : {write_com(0x38);//屏幕初始化write_com(0x0c);//打开显示 无光标 无光标闪烁Mode=0; //恢复正常模式break;}}}}
资料链接:https://pan.baidu.com/s/1C64h9BpIxXy-OLL4zb300w?pwd=rr11