【51单片机】【protues仿真】基于51单片机火灾报警控制系统

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、LCD1602液晶屏幕显示烟雾,温度值

2、按键设置阈值​

3、烟雾值大于阈值或温度大于阈值10s启动声光警报、喷水模块

4、元器件损坏警报

二、使用步骤

基于51单片机的火灾报警控制系统通常采用模块化设计,集成多种传感器实现火灾隐患的早期监测与预警。系统通过多参数协同检测和联动控制机制,显著提升火灾识别的准确性和响应速度。

三、硬件资源

1、51单片机核心模块

2、按键模块

3、DHT11温湿度传感器、MQ烟雾传感器模块

4、蜂鸣器模块

5、继电器模块

6、LCD1602显示模块

四、软件设计

#include <reg51.H>

#include "intrins.h"

#define uint unsigned int

#define uchar unsigned char

#define ulong unsigned long

#define LCDIO P0 //液晶屏数据口

sbit rs=P2^5; //定义1602 RS

sbit rw=P2^6; //定义1602 RW

sbit lcden=P2^7; //定义1602 EN

sbit SET = P2^0; //设定

sbit Up = P2^1; //加

sbit Down = P2^2; //减

sbit contrl = P2^3; //模拟布线 问题

sbit DQ = P2^4; //温度传送数据IO口

sbit motor1 =P1^6; //继电器接口

sbit speak=P1^7; //蜂鸣器接口

uchar Temp_H=35;//温度上限

uchar RH=50;//烟雾上限

uchar mq_value=0;//烟雾值

uchar setflag = 0;//

uchar temp_value; // 温度值

uchar signature ;//温度正负判断

uchar alam_flag=0;//火灾警报标志

uchar speak_flag=0;

uchar com_flag=0;//模块异常标志

uchar alam_cont=0;

uchar count = 0; //计数

uchar code table[]= "Tp: MQ: ";

uchar code table1[]="TH: RH: % ";

/*********************************************/

void delay(uint z) //延时

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

/**********************************************/

void write_com(uchar com)

{

rs=0;

rw=0;

lcden=0;

P0=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

/*********************************************/

void write_date(uchar date)

{

rs=1;

rw=0;

lcden=0;

P0=date;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

void lcdinit()

{

lcden=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

}

/***********************************************/

void init()

{

uchar num;

for(num=0;num<15;num++)

{

write_date(table[num]);

delay(5);

}

write_com(0x80+0x40);

for(num=0;num<15;num++)

{

write_date(table1[num]);

delay(5);

}

}

void main(void)

{

TMOD=0x01; //TMOD=0000 0001B,使用定时器T0的模式1

TH0=(65536-5000)/256; //定时器T0的高8位赋初值

TL0=(65536-5000)%256; //定时器T0的高8位赋初

ET0=1;

TR0=1; //定时关闭

lcdinit();

init();

delay(50); //启动等待,等LCD讲入工作状态

delay(50); //延时片刻(可不要)

Conut(); //显示函数

delay(150);

while(1)

{

Conut(); //显示当前烟雾

temp_to_str(); //温度数据转换成液晶字符显示

alam();//警报

keyscan();

}

}

//*****T0中断函数50ms中断一次**************

void t0_time() interrupt 1

{

TH0=(65536-5000)/256; //定时器T0的高8位赋初值

TL0=(65536-5000)%256; //定时器T0的高8位赋初

count++;

if(count>=200)

{

count=0;

alam_cont++;

if(alam_cont>=10)

{

alam_cont=0;

speak_flag=1;//启动警报

EA=0;

}

}

}

五、实验现象

演示视频:

相关推荐
逐步前行7 分钟前
C51_ATGM336H_GPS
51单片机
The Electronic Cat31 分钟前
树莓派使用串口启动死机
单片机·嵌入式硬件·树莓派
晨晖21 小时前
顺序查找:c语言
c语言·开发语言·算法
北京耐用通信1 小时前
告别“蜘蛛网”接线!耐达讯自动化PROFIBUS 三路集线器让气缸布线“一拖三”的神操作
人工智能·物联网·网络协议·自动化·信息与通信
阿华hhh2 小时前
Linux系统编程(网络udp)
linux·服务器·c语言·网络·网络协议·udp
superman超哥3 小时前
仓颉类型别名的使用方法深度解析
c语言·开发语言·c++·python·仓颉
先知后行。3 小时前
常见元器件
单片机·嵌入式硬件
是Yu欸3 小时前
从Ascend C算子开发视角看CANN的“软硬协同”
c语言·开发语言·云原生·昇腾·ascend·cann·开放社区
黎雁·泠崖3 小时前
C 语言字符串进阶:strcpy/strcat/strcmp 精讲
c语言·开发语言
时光呀时光慢慢走3 小时前
MAUI 开发安卓 MQTT 客户端:实现远程控制 (完整源码 + 避坑指南)
android·物联网·mqtt·c#