基于51单片机的温度+烟雾报警系统设计

最新更新时间:2021-10-14来源: eefocus关键字:51单片机  温度  烟雾报警系统 手机看文章 扫描二维码
随时随地手机看文章

一.硬件方案

本设计采用51单片机为核心控制器,利用气体传感器MQ-2、ADC0832模数转换器、DS18B20温度传感器等实现基本功能。通过这些传感器和芯片,当环境中可燃气体浓度或温度等发生变化时系统会发出相应的灯光报警信号和声音报警信号,以此来实现火灾报警,智能化提示。


主要由51单片机+最小系统+LCD1602液晶显示模块+MQ-2烟雾模块+ADC0832模块+DS18B20温度模块+蜂鸣器模块+LED指示灯模块+继电器驱动模块+风扇模块+按键模块;如图:

二.设计功能

(1)LCD1602液晶显示屏实时显示当前的烟雾值和温度值。

(2)温度和烟雾的报警值可以通过按键设定。

(3)当前温度值超过上限时,红灯亮,蜂鸣器响。

(4)当前烟雾值超过上线时,黄灯亮,蜂鸣器响。

(5)四个按键功能:减、设置、加、单独的是复位按键;

(6)通过继电器驱动模块,当烟雾或可燃气体浓度超过报警值时启动继电器,继电器带动风扇转动模拟排烟。


三.设计原理图

(1)原理图主要采用AD软件进行设计,如图:

(2)Protues仿真图如下:

(3)PCB图如下:

四.软件设计

(1)程序流程图

(2)温度子程序流程图

(3)主程序源码


void main (void)

{

u8 key;

wendu=check_wendu();   //初始化时调用温度读取函数 防止开机85°C

Init1602();   //调用初始化显示函数

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°C

while (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   //当烟雾小于预设值并且温度也小于预设值时 (&&:逻辑与,左右两边的表达式都成立(都为真,也就是1)时,该if语句才成立)

{

Buzzer=1;   //停止报警

}

break;

}

case 1://预设温度模式

{

SelectPosition(0,5) ; //指定位置

    write_com(0x0d); //阴影闪烁

if(key==KEY_ADD) //加键按下

{

yushe_wendu++;     //预设温度值(阀值)加1

if(yushe_wendu>=99) //当阀值加到大于等于99时

yushe_wendu=99; //阀值固定为99

LCD_Write_Char(0,6,yushe_wendu,2) ;//显示预设温度

}

if(key==KEY_MINUS) //减键按下

{

if(yushe_wendu<=1) //当温度上限值减小到1时

yushe_wendu=1;          //固定为1

yushe_wendu--; //预设温度值减一,最小为0

LCD_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;            //阀值固定为254

yushe_yanwu++;     //预设烟雾值(阀值)加1,最大为255

LCD_Write_Char(0,13,yushe_yanwu,3) ;//显示预设烟雾

}

if(key==KEY_MINUS) //减键按下

{

if(yushe_yanwu<=1) //当烟雾上限值减小到1时

yushe_yanwu=1;          //固定为1

yushe_yanwu--; //预设温度值减一,最小为0   

LCD_Write_Char(0,13,yushe_yanwu,3) ;//显示预设烟雾

}

break;

}

default :

{

write_com(0x38);//屏幕初始化

write_com(0x0c);//打开显示 无光标 无光标闪烁

Mode=0; //恢复正常模式

break;

}

}

}


}

关键字:51单片机  温度  烟雾报警系统 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic550438.html

上一篇:基于51单片机的霍尔自行车里程测速仪
下一篇:基于51单片机的温湿度控制系统

推荐阅读

【自学51单片机】7--LED点阵学习
1、LED点阵介绍LED点阵由多个LED小灯构成,以8*8LED点阵介绍,实物图和内部原理图如下。图7-2左侧8个引脚为内部LED小灯阳极,上侧8个引脚为阴极。2、点亮LED点阵2.1 原理点亮LED点阵与点亮LED小灯原理相似,根据LED点阵电路图分析即可,详细见第三章。2.2 点亮全部LED点阵程序利用定时器中断和数码管动态显示原理,就不进行说明,详细见第六章3、取模软件简单介绍取模软件可以将LED点阵图形的数据转换为程序中的数据。取模软件中黑色为LED熄灭,值为1,白色为LED点亮,值为0。如下图绘制了一个心形。下面来说明取模软件参数的选取。取模方式:根据LED点阵结构原理图,PO口控制的是一行,选择“横向取模”,控制的是一列
发表于 2021-10-20
【自学<font color='red'>51单片机</font>】7--LED点阵学习
【自学51单片机】8 -- 按键的学习,单片机最小系统
1、单片机最小系统电源单片机中常见5v和3.3v的单片机,“5v”和“3.3v”分别只是他们正常工作的典型值,5v和3.3v单片机也是以他们正常工作典型值命名的,他们正常工作电压的标准范围要根据单片机手册查询,晶振晶振分无源晶振和有源晶振。实物图和原理图见下图。无源晶振: 依靠单片机内部振荡电路才能工作,接到单片机两个振荡引脚即可,晶体两个引脚无区别,电压无要求,两侧通常有电容,手册有要求根据手册选电容,手册无要求一般选20pf。有源晶振: 无需依靠单片机内部振荡电路,只需外部供电达到电压要求,即可产生振荡频率,接到单片机晶振输入引脚即可接受到晶振频率,单片机晶振输出引脚无需连接。两者区别:无源晶振信号质量和精度比有源晶振差,价格比
发表于 2021-10-20
【自学<font color='red'>51单片机</font>】8 -- 按键的学习,单片机最小系统
【自学51单片机】9 -- 步进电机原理、蜂鸣器原理,单片机IO
【自学51单片机】9 -- 步进电机原理、蜂鸣器原理,单片机IO口的结构,上下拉电阻1、单片机IO口的结构单片机IO口有四种结构:准双向IO,开漏输出、强推挽输出和高阻态输出。内部结构如下图。T1和T2为MOS管,靠电压导通的原件。(1)准双向IO口特点:内部输出为1,才能正常读取外部信号。(2)开漏输出特点:必须外加上拉电阻,不然单片机IO电平是个不确定的态。(3)强推挽输出特点:可输出或输入高电流,驱动能力强。(4)强阻态特点:状态取决与外部输入。 标准51单片机P0默认开漏输出。2、上下拉电阻上下拉电阻:上拉电阻就是将不确定的信号通过一个电阻拉到高电平,同时此电阻也起限流作用,下拉电阻同理。上拉电阻的应用:(1)OC门(开漏
发表于 2021-10-20
【自学<font color='red'>51单片机</font>】9 -- 步进电机原理、蜂鸣器原理,单片机IO
【自学51单片机】10 --PWM介绍、51单片机RAM区域划分
1、PWM介绍PWM (Pulse Width Modulation) ,中文名为脉冲宽度调制,它能使用数字信号达到一个模拟信号的效果,脉冲宽度调制就是改变脉冲宽度来实现不同的效果。下面看图10-1三组脉冲信号。它是一个周期为10ms,频率为100Hz的波形,每组高低电平脉冲宽度各不相同,也就是占空比(指高电平的时间占整个周期的比例)不同。在数字电路中,只有0和1两种状态,在小灯中,0熄灭,1点亮。当让小灯亮灭间隔运行时,并且间隔时间不断减小,频率大于100Hz,肉眼看起来为一直保持亮状态,每个周期内不断改变小灯亮和灭的时间,小灯亮度也会发生变化,这就达到模拟电路的效果,不再是纯粹的0和1,还有亮度的不断变化。2、51单片机RAM
发表于 2021-10-20
【自学<font color='red'>51单片机</font>】10 --PWM介绍、<font color='red'>51单片机</font>RAM区域划分
【自学51单片机】12 --- 1602液晶初步认识
1、1602液晶硬件接口介绍1602液晶技术参数说明:(1) 工作电流:在5v工作电压下液晶的工作电流为2mA,仅仅指液晶,不包括背光。1602液晶接口原理图及引脚功能说明:(1) 引脚3:液晶显示偏压信号。用来调整显示黑点与不显示黑点的对比度。(2) 4引脚:数据命令选择引脚。置高电平1,为读写数据,置低电平0,为读写命令。(3) 5引脚:读写选择引脚。置高电平1,为读数据或命令,置低电平0,为写数据或命令。(4) 6引脚:使能信号引脚。高电平有效,低电平无效。(5) 7~14引脚:8个数据引脚。因为总电流不大,直接接到PO口上,不用通过74HC245。2、1602的读写时序介绍液晶内部自带80字节的显示RAM,用来存储发送的数据
发表于 2021-10-20
【自学<font color='red'>51单片机</font>】12 --- 1602液晶初步认识
【自学51单片机】11 -- UART串口通信
串口通信的基本应用3.1 通信的三种基本类型通信从传输方向上可分为:单工通信,半双工通信和全双工通信三类。单工通信:允许一方向另外一方传送信息,而另一方不能回传信息。如遥控器半双工通信:数据可以在双方之间互相传播,但同一时刻只能其中一方发给另外一方。如对讲机全双工通信:发送数据的同时也能够接收数据,两者同步进行,如电话3.2 UARM模块介绍单片机内部有UART模块,实现串口通信。51单片机的UART 串口的结构由串行口控制寄存器SCON、发送和接收电路三部分构成,先来了解一下串口控制寄存器 SCON。SCON寄存器说明说明:第0位RI为接收中断标志位,第1位TI为发送中断标志位,这两个为进入串口中断都不会自动清零,都需要软件清零
发表于 2021-10-20
【自学<font color='red'>51单片机</font>】11 -- UART串口通信
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved