【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;

}

}

}

五、实验现象

演示视频:

相关推荐
Wave8453 小时前
基于 STM32 + ESP8266 + W25Q64 的双核 OTA 底层架构总结
stm32·嵌入式硬件·架构
xiangw@GZ4 小时前
WiFi 全世代(WiFi1~WiFi7)技术规范与核心参数总结
嵌入式硬件
振南的单片机世界4 小时前
CPU时钟:频率越高跑越快,但物理极限在“拖后腿”
stm32·单片机·嵌入式硬件
普中科技5 小时前
【普中 51-Ai8051 开发攻略】-- 第 20 章 输入捕获实验
单片机·嵌入式硬件·输入捕获·pca·普中科技·ai8051u·aicube
d111111111d5 小时前
直流电机位置式 PID 控制 和 舵机的区别
笔记·stm32·单片机·嵌入式硬件·学习
dgaf5 小时前
DX12 快速教程(17) —— 立体图标与合并渲染
c语言·c++·3d·图形渲染·d3d12
念恒123066 小时前
进程控制---自定义Shell
linux·c语言
云里物里7 小时前
1000个物联网电子标签刷新完需要多久?
物联网·电子价签·电子标签·云里物里·电子墨水屏标签·蓝牙电子标签·电子标签系统
d111111111d8 小时前
了解Modbus
网络·笔记·stm32·单片机·嵌入式硬件·学习
三佛科技-134163842128 小时前
主控FT32F031便携式吸尘器方案,迷你手持吸尘器MCU控制方案开发
单片机·嵌入式硬件·物联网·智能家居·pcb工艺