问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于AT89C51/STC89C52单片机的智能火灾报警与灭火系统设计

创作时间:
作者:
@小白创作中心

基于AT89C51/STC89C52单片机的智能火灾报警与灭火系统设计

引用
CSDN
1.
https://blog.csdn.net/qq_58404700/article/details/142580240

本文介绍了一种基于AT89C51/STC89C52单片机的智能火灾报警与灭火系统。该系统集成了多种传感器、显示模块、通信模块以及执行机构,旨在提高火灾预警的准确性和响应速度,有效减少火灾带来的损失。

一、引言

随着城市化进程的加快,火灾安全问题日益凸显。传统的火灾报警系统往往存在响应慢、误报率高、功能单一等问题。为此,本文设计了一种集火灾预警、报警、灭火及远程通知功能于一体的智能系统,以满足现代建筑对火灾安全的高要求。

二、系统总体设计

本系统以AT89C51/STC89C52单片机为核心控制单元,通过连接LCD1602显示屏、DS18B20温度传感器、DS1302时钟模块、MQ2烟雾传感器(电位器模拟)、蓝牙模块、继电器组件、声光报警器等模块,构建了一个完整的火灾报警与灭火系统。

三、硬件设计

  1. 单片机模块:选用AT89C51/STC89C52单片机作为主控芯片,负责数据处理和逻辑控制。
  2. 显示模块:采用LCD1602液晶显示屏,实时显示当前时间、室内温度及烟雾浓度等关键信息。
  3. 温度采集模块:使用DS18B20数字温度传感器,高精度测量室内温度,为火灾判断提供依据。
  4. 时间采集模块:通过DS1302实时时钟芯片,确保系统时间的准确性和同步性。
  5. 烟雾采集模块:虽然实际项目中MQ2烟雾传感器直接输出模拟信号,但在此系统中我们假设使用电位器模拟其输出,模拟烟雾浓度的变化。
  6. 通信模块:集成蓝牙模块,实现火灾报警信息的远程无线传输,便于及时通知相关人员。
  7. 执行机构:包括风扇继电器和水泵继电器,根据系统判断结果自动执行通风或灭火操作。
  8. 声光报警模块:在检测到火灾或烟雾浓度超标时,触发声光报警,引起人员注意。

四、软件设计

系统软件设计主要围绕单片机程序展开,包括系统初始化、数据采集与处理、逻辑判断、报警与执行控制等部分。通过编程实现温度与烟雾浓度的实时监测,设置阈值进行比较判断,并根据判断结果控制继电器执行相应操作,同时驱动LCD显示实时信息,并通过蓝牙模块发送报警信息。

五、系统测试与验证

在系统硬件与软件设计完成后,进行了全面的测试与验证工作。通过模拟不同浓度的烟雾和温度条件,检验系统的响应速度和准确性。同时,测试了蓝牙通信的稳定性和可靠性,确保报警信息能够及时准确地传输到远程终端。

六、结论与展望

本文设计的基于AT89C51/STC89C52单片机的智能火灾报警与灭火系统,实现了火灾的实时监测、预警、报警及自动灭火功能,具有响应速度快、准确率高、功能全面等优点。未来,可进一步优化系统性能,如增加更多类型的传感器、提升数据处理能力、完善远程监控界面等,以满足更加复杂和多样化的火灾安全需求。

仿真

本设计采用proteus8.10软件实现仿真设计。

程序

本设计利用KEIL5软件实现程序设计,具体如上图,注释齐全,结合《常见问题汇总》文档看,理解容易。

原理图

本原理图利用AD21软件设计实现。

报告

内含7.3k,28页的相关报告一份,纯手打,内容与项目一致。

常见问题汇总(讲解文档)

包含了对各个模块的详细说明,方便读懂代码,加深自己的理解。(只需选择性看项目中包含的模块)

演示视频

58s的演示视频,将该项目的功能都展示了一遍,如果还有不清楚的地方,欢迎后台私聊!

全部资料

推荐先看proteus里的仿真效果或者演示视频,然后结合《常见问题汇总》里的讲解,对代码进行阅读,更容易掌握。

#include <reg51.h> // 包含51单片机寄存器定义  
#include "LCD1602.h" // 假设的LCD1602库  
#include "DS18B20.h" // 假设的DS18B20库  
#include "DS1302.h" // 假设的DS1302库  
#include "MQ2.h" // 假设的MQ2烟雾传感器库(实际可能通过ADC读取电位器值)  
#include "Bluetooth.h" // 假设的蓝牙通信库  
#include "Relay.h" // 假设的继电器控制库  
#include "SoundLightAlarm.h" // 假设的声光报警库  
  
#define TEMP_THRESHOLD 70 // 温度阈值,单位:摄氏度  
#define SMOKE_THRESHOLD 500 // 烟雾浓度阈值,单位根据MQ2输出调整  
  
// 全局变量  
unsigned char temp, smoke;  
unsigned char year, month, day, hour, minute, second;  
  
void main() {  
    // 初始化各模块  
    LCD1602_Init();  
    DS18B20_Init();  
    DS1302_Init();  
    MQ2_Init();  
    Bluetooth_Init();  
    Relay_Init();  
    SoundLightAlarm_Init();  
  
    // 读取初始温度和烟雾浓度  
    temp = DS18B20_ReadTemp();  
    smoke = MQ2_ReadSmoke();  
  
    // 主循环  
    while(1) {  
        // 更新时间  
        DS1302_GetTime(&year, &month, &day, &hour, &minute, &second);  
  
        // 显示时间、温度和烟雾浓度  
        LCD1602_DisplayTime(hour, minute, second);  
        LCD1602_DisplayTemp(temp);  
        LCD1602_DisplaySmoke(smoke);  
  
        // 读取新的温度和烟雾浓度  
        temp = DS18B20_ReadTemp();  
        smoke = MQ2_ReadSmoke();  
  
        // 判断是否触发报警或灭火  
        if (smoke > SMOKE_THRESHOLD) {  
            SoundLightAlarm_On();  
            Bluetooth_SendAlert("Smoke detected!");  
            if (temp > TEMP_THRESHOLD) {  
                Relay_CloseWaterPump(); // 灭火  
            } else {  
                Relay_CloseFan(); // 通风  
            }  
        } else {  
            SoundLightAlarm_Off();  
            Relay_OpenAll(); // 关闭所有继电器  
        }  
  
        // 延时一段时间再检测  
        Delay_ms(1000); // 假设的延时函数  
    }  
}  
  
// 假设的延时函数  
void Delay_ms(unsigned int ms) {  
    // 实际的延时实现依赖于单片机的定时器或循环计数  
}  
  
// 注意:以上所有函数(如LCD1602_Init, DS18B20_ReadTemp等)都需要您根据具体的硬件和库文件来实现。  
// 这里只是提供了一个框架性的示例。  
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号