1896基于单片机温度烟雾控制系统设计【毕设课设】

摘要

随着家用电器的普及,家庭火灾发生的频率逐年上升,烟雾报警器在预防火灾中的作用日益凸显。本文设计了一种基于AT89S52单片机的温度烟雾控制系统,该系统结合了MQ-2烟雾传感器和DS18B20温度传感器,能够实时检测环境烟雾浓度和温度,实现声光报警、浓度显示和温度显示等功能。本文详细介绍了系统的组成部分、功能、接口连接方式以及软件设计,展示了一种结构简单、性能稳定、使用方便、价格低廉且智能化的烟雾报警系统。

一、引言

随着科技的进步和人们生活水平的提高,家用电器越来越普及,家庭用电量逐年上升,火灾风险也随之增加。因此,开发一种高效、可靠的烟雾报警系统对于预防家庭火灾具有重要意义。本文基于单片机技术,结合烟雾传感器和温度传感器,设计了一种温度烟雾控制系统,旨在提高报警的灵敏度和准确率。

二、系统设计

  1. 硬件设计

本系统以AT89S52单片机为核心控制器,通过MQ-2烟雾传感器和DS18B20温度传感器实时检测环境中的烟雾浓度和温度。单片机接收到传感器的信号后,进行数据处理,并根据预设的阈值判断是否触发报警。系统还包括声光报警模块、浓度显示模块和温度显示模块,用于向用户提供直观的报警信息和环境参数。

  1. 软件设计

系统软件主要包括数据采集、数据处理、报警判断和显示控制等模块。数据采集模块负责从传感器读取烟雾浓度和温度数据;数据处理模块对采集到的数据进行处理和分析;报警判断模块根据处理后的数据判断是否触发报警;显示控制模块则负责控制浓度显示和温度显示模块的工作。

三、系统实现与测试

  1. 系统实现

根据系统设计方案,我们完成了硬件电路的搭建和软件程序的编写。硬件电路包括单片机最小系统、传感器接口电路、声光报警电路、显示电路等部分。软件程序采用模块化设计,便于调试和维护。

  1. 系统测试

我们对系统进行了多次测试,包括不同烟雾浓度和温度条件下的测试。测试结果表明,系统能够准确检测环境中的烟雾浓度和温度,并在达到预设阈值时触发报警。同时,系统的声光报警和显示功能也表现良好,能够为用户提供及时、准确的报警信息。

四、结论

本文设计了一种基于单片机的温度烟雾控制系统,该系统结合了烟雾传感器和温度传感器,能够实时检测环境烟雾浓度和温度,实现声光报警、浓度显示和温度显示等功能。系统结构简单、性能稳定、使用方便、价格低廉,具有一定的实用价值。未来,我们将进一步优化系统的性能,提高报警的灵敏度和准确率,为预防家庭火灾做出更大的贡献。

#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()-5; //获取温度值并减去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++);
}
unsigned char rolmove(unsigned  char m)
 { 
  
  unsigned char   a,b,c,d,e,f,g,h;               
a=(m&0x01)<<7;
b=(m&0x02)<<5;
c=(m&0x04)<<3; 
d=(m&0x08)<<1;
e=(m&0x10)>>1;
f=(m&0x20)>>3;
g=(m&0x40)>>5;
h=(m&0x80)>>7;
m=a|b|c|d|e|f|g|h; 
return m;
 }
void wr_com(uchar com)//写指令//
{ delay1ms(1);
   RS=0;
   RW=0;
   EN=0;
   P0=rolmove(com);
   delay1ms(1);
   EN=1;
   delay1ms(1);
   EN=0;
}

void wr_dat(uchar dat)//写数据//
{ delay1ms(1);;
   RS=1;
   RW=0;
   EN=0;
   P0=rolmove(dat);
   delay1ms(1);
   EN=1;
   delay1ms(1);
   EN=0;
}
void wr_new()		  //写新字符
{
	uchar i;
	wr_com(0x40);
	for(i=0;i<8;i++)
部分代码

资料下载地址:

https://docs.qq.com/doc/p/ffc421513a628b30450ae742547c0b850456d7c8

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值