【51单片机】【protues仿真】基于51单片机温度烟雾控制系统

 目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、LCD1602液晶显示检测到的烟雾值、温度值
2、通过按键设置烟雾的下限值和温度的上下限值​
3、按键一键警报或取消
4、当超过设定的范围,LED警报灯闪烁
5、当满足烟雾、温度异常,继电器吸合控制电机转动

二、使用步骤

51单片机温度烟雾控制系统是一种集成了温度监测和烟雾检测功能的智能报警系统,主要用于火灾预警和环境监控。该系统以51系列单片机(如STC89C51/52或AT89C51)为核心控制器,结合DS18B20温度传感器和烟雾传感器,实现对环境参数的实时监测和报警控制。

三、硬件资源

1、51单片机核心模块
2、按键模块
3、温度传感器、MQ烟雾传感器模块
4、蜂鸣器模块
5、继电器模块
6、LCD1602显示模块

四、软件设计

#include <reg52.h>
#include <intrins.h>
#include <key.h>
#include "DS18B20.h"   
#define uint unsigned int
#define uchar unsigned char   //宏定义
#define BEEP P3_4    //定义蜂鸣器
#define hujiao P1_3 
sbit BEEP=P3^4;
sbit hujiao=P1^3;
sbit RS=P2^5;
sbit RW=P2^6;
sbit EN=P2^7;
sbit led_h=P1^4;
sbit led_l=P1^5;
sbit JDQ=P2^0;
sbit ADCS = P3^7;
sbit ADCLK = P3^5;
sbit ADDI = P3^6;
sbit ADDO = P3^6;
bit shanshuo_st;    //闪烁间隔标志
bit beep_st;     //蜂鸣器间隔标志
bit flag=0;//紧急呼叫标志
sbit DIAN = P2^5;        //小数点
uint abc;
uchar x=4;      //计数器
signed char m;     //温度值全局变量
uchar n;      //温度值全局变量
uchar data disdata[5];

uchar code LEDData[]={0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0};
uchar code table[8]={0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00};    // 摄氏温度符号

/*****初始化定时器0*****/
void InitTimer(void)
{
TMOD=0x1;
TH0=0x4c;
TL0=0x00;     //50ms(晶振11.0592M)
}
/*****定时器0中断服务程序*****/
void timer0(void) interrupt 1
{
TH0=0x4c;
TL0=0x00;
x++;
}
/*****读取温度*****/
void check_wendu(void)
{
uint a,b,c;
c=ReadTemperature(); //获取温度值并减去DS18B20的温漂误差
a=c/100;     //计算得到十位数字
b=c/10-a*10;    //计算得到个位数字
m=c/10;      //计算得到整数位
n=c-a*100-b*10;    //计算得到小数位
if(m<0){m=0;n=0;}   //设置温度显示上限
if(m>99){m=99;n=9;}   //设置温度显示上限    
}
/*************************lcd1602程序**************************/
void delay1ms(uint ms)//延时1毫秒(不够精确的)
{  uint i,j;
   for(i=0;i<ms;i++)
    for(j=0;j<100;j++);
}

/*****主函数*****/
void main(void)
{
    InitTimer();    //初始化定时器
    EA=1;      //全局中断开关
    TR0=1;
    ET0=1;      //开启定时器0
    BEEP=0;
    led_h=1;
    led_l=1;
    JDQ=1;
    check_wendu();
    check_wendu();
    lcd_init();//初始化显示
    delay1ms(100);
    lcd_init();//初始化显示
    delay1ms(100);
    while(1)
    {
        if(hujiao==0)
        {
             Delay(2000);
             while(hujiao==0);
             flag=~flag;
        }
        check_wendu();
        checkkey();
      abc = ADC0832(0,0);  //差分模式,CH0-CH1
    abc = abc*9/255; //转换为实际电压便于显示
    

        disp();
        baojing();
        if(flag==1)
        {
            Alarm1();
            JDQ=0;
        }
        else    
            Alarm();   //报警检测
        if(set_st==0) 
            wr_com(0x0c);
        if(set_st==1)
        {
            wr_com(0xc6);
            wr_com(0x0d);
            delay1ms(150);
            wr_com(0x0c);
        }
        if(set_st==2)
        {
            wr_com(0xca);
            wr_com(0x0d);
            delay1ms(150);
            wr_com(0x0c);
        }
        if(set_st==3)
        {
            wr_com(0xcd);
            wr_com(0x0d);
            delay1ms(150);
            wr_com(0x0c);
        }

    }
}/*****END*****/

五、实验现象

演示视频:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值