火灾报警系统的protues仿真图及51单片机烧录程序代码

本文介绍了使用51单片机和MQ-2烟雾传感器构建的火灾报警系统,该系统包括烟雾检测、声光报警、数据存储等功能。通过STC89C52单片机控制,利用烟雾信号采集、模数转换和显示电路等模块,实现了智能化的火灾预警。详细讲述了仿真图和程序代码,包括数据的读写和18b20初始化等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        本设计以传感器和单片机作为烟雾报警器设计的核心器件,配合其它器件即可实现声光报警、自动排烟换气和消防灭火等功能。设计中单片机选用STC89C52作为控制器件,传感器选用MQ-2型半导体可燃气体敏感元件烟雾传感器实现烟雾的检测。烟雾报警器主要由烟雾信号采集及前置放大电路、模数转换电路、单片机控制电路、显示电路、声光报警电路和安全保护电路构成,设计合理、简单易懂、价格低廉,使单片机在烟雾报警系统的控制中得到充分应用,具有一定的实用价值。        

一、仿真图

二、程序

#include <reg52.h>          //调用单片机头文件

#define uchar unsigned char  //无符号字符型 宏定义     变量范围0~255

#define uint  unsigned int    //无符号整型 宏定义 变量范围0~65535

#include <intrins.h>

#include "eeprom52.h"

//数码管段选定义      0     1    2    3    4    5       6   7     8     9      

uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,

                                  0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};      //断码

//数码管位选定义

uchar code smg_we[]={0x7f,0xbf,0xdf,0xef};

uchar dis_smg[8]  = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8}; 

sbit CS=P3^2;        //CS定义为P3口的第2位脚,连接ADC0832CS脚  PCB

sbit SCL=P3^3;            //SCL定义为P3口的第3位脚,连接ADC0832SCL脚

sbit DO=P3^4;              //DO定义为P3口的第4位脚,连接ADC0832DO脚

sbit dq   = P3^5;  //18b20 IO口的定义

sbit beep = P3^6;   //蜂鸣器IO口定义

uint temperature,s_temp ;  //温度的变量

uchar dengji,s_dengji;     //烟物等级

uchar shoudong;            //手动报警键

bit flag_300ms = 1;

uchar key_can;             //按键值的变量

uchar menu_1;        //菜单设计的变量

/***********************1ms延时函数*****************************/

void delay_1ms(uint q)

{

       uint i,j;

       for(i=0;i<q;i++)

              for(j=0;j<120;j++);

}

/***********************小延时函数*****************************/

void delay_uint(uint q)

{

       while(q--);

}

/******************把数据保存到单片机内部eeprom中******************/

void write_eeprom()

{

       SectorErase(0x2000);

       byte_write(0x2000, s_temp);

       byte_write(0x2001, s_dengji);

       byte_write(0x2060, a_a);     

}

/******************把数据从单片机内部eeprom中读出来*****************/

void read_eeprom()

{

       s_temp   = byte_read(0x2000);

       s_dengji = byte_read(0x2001);

       a_a      = byte_read(0x2060);

}

/**************开机自检eeprom初始化*****************/

void init_eeprom()

{

       read_eeprom();             //先读

       if(a_a != 1)            //新的单片机初始单片机内问eeprom

       {

              s_temp   = 50;

              s_dengji = 5;

              a_a = 1;

              write_eeprom();        //保存数据

       }    

}

/***********************18b20初始化函数*****************************/

void init_18b20()

{

       bit q;

       dq = 1;                         //把总线拿高

       delay_uint(1);     //15us

       dq = 0;                         //给复位脉冲

       delay_uint(80);             //750us

       dq = 1;                         //把总线拿高 等待

       delay_uint(10);             //110us

       q = dq;                         //读取18b20初始化信号

       delay_uint(20);             //200us

       dq = 1;                         //把总线拿高 释放总线

}

/*************写18b20内的数据***************/

void write_18b20(uchar dat)

{

       uchar i;

       for(i=0;i<8;i++)

       {                                 //写数据是低位开始

              dq = 0;                  //把总线拿低写时间隙开始

              dq = dat & 0x01; //向18b20总线写数据了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值