基于DS18B20温度传感器和MQ2烟雾传感器的火灾报警器设计

发布者:CaptivatingGaze最新更新时间:2017-09-02 来源: elecfans关键字:DS18B20  温度传感器  烟雾传感器  火灾报警器 手机看文章 扫描二维码
随时随地手机看文章

一、概述

火灾自动报警系统(Fire Alarm System,简称FAS系统)是人们为了早期发现通报火灾,并及时采取有效措施,控制和扑灭火灾,而设置在建筑物中或其它场所的一种自动消防设施,是人们同火灾作斗争的有力工具。【1】

本设计中以温度探头和烟雾传感器作为火灾报警器的传感装置,并以LED和蜂鸣器作为示警装置。

二、功能

●高温检测。传感器选用DS18B20,当环境温度大于40℃,高温报警指示灯亮,LCD1602第一行显示温度。

●环境烟雾浓度检测。传感器选用MQ2烟雾传感器,AD0809作模数转换传烟雾浓度数据给单片机。当环境烟雾浓度大于50时,烟雾浓度指示灯亮,LCD1602第二行显示烟雾浓度。

当温度和烟雾浓度同时过高时,蜂鸣器发出报警声音。

三、硬件设计

温度传感器:DS18B20

烟雾传感器:MQ2。MQ2输出的模拟电压信号,使用ADC0809作模数转换后输入单片机。

基于DS18B20温度传感器和MQ2烟雾传感器的火灾报警器设计V2.0(承接单片机开发设计)

四、程序设计

基于DS18B20温度传感器和MQ2烟雾传感器的火灾报警器设计V2.0(承接单片机开发设计)

部分程序段:

○LCD1602显示部分程序

#define LCD_DATA P0 //lcd1602的引脚

sbit LCD_RS = P2^0;

sbit LCD_RW = P2^1;

sbit LCD_EN = P2^2;

void LCD_Init(void)

{

Delay20ms();

  LCD_WriteCmd(0x38); //8位机接口、双行显示、5×7字符点阵;

LCD_WriteCmd(0x0c); //显示开启、光标不显示也不闪烁;

LCD_WriteCmd(0x01); //清屏;

LCD_WriteCmd(0x06); //光标右移一位、整屏不移动;

  

  LCD_Goto(0,0);

}

 void LCD_WriteDat(unsigned char lcd_dat)

{

unsigned char tmp;

tmp = LCD_ReadStatus(); //读状态;

while((tmp & 0x80)) //是否忙 ?

{

tmp = LCD_ReadStatus();

}

LCD_RS = 1;

LCD_RW = 0;

LCD_DATA = lcd_dat;

_nop_();

LCD_EN = 0;

_nop_();

_nop_();

LCD_EN = 1;

}

 void LCD_WriteCmd(unsigned char lcd_cmd)

{

unsigned char tmp;

tmp = LCD_ReadStatus();

while((tmp & 0x80))

{

tmp = LCD_ReadStatus();

}

LCD_RS = 0;

LCD_RW = 0;

LCD_DATA = lcd_cmd;

_nop_();

LCD_EN = 0;

_nop_();

_nop_();

LCD_EN = 1;

}

 unsigned char LCD_ReadStatus(void)

{

unsigned char tmp;

#if 0

LCD_RS = 0;

LCD_RW = 1;

LCD_EN = 1;

tmp = LCD_DATA;

LCD_EN = 0;

#endif

LCD_DATA = 0xff;

LCD_RS = 0;

LCD_RW = 1;

LCD_EN = 0;

_nop_();

_nop_();

LCD_EN = 1;

tmp = LCD_DATA;

return tmp;

}

 void LCD_Goto(unsigned char x,unsigned char y)

{

unsigned char tmp;

if(y) //若是第二行;

{

tmp = 0xc0 + x;

LCD_WriteCmd(tmp);

}

else

{

tmp = 0x80 + x;

LCD_WriteCmd(tmp);

}

}

 void LCD_Display(unsigned char row,unsigned char *str)

{

if(row)

{

LCD_Goto(0,1);

}

  else 

  {

  LCD_Goto(0,0);

  }

  while(*str != '\0')

    {

  LCD_WriteDat(*str++);

  }

}

○ADC0809部分程序

//AD0809的IO口以及变量定义

sbit OE=P2^7;

sbit EOC=P2^6;

sbit START=P3^0;

void AD0809()//0809转换数据

{

START=0;_nop_();

START=1;_nop_();

START=0;_nop_();

while(EOC==0);

OE=1;_nop_();

density=P1;_nop_();

OE=0;

}

○DS18B20部分程序

sbit DQ=P2^3;  //DS18B20数据端

//2、DS18B2模块

void delay_18B20(unsigned int i)

{

while(i--);

}

//ds18b20初始化函数

void Init_DS18B20(void)

{

unsigned char x=0;

DQ = 1;          //DQ复位

delay_18B20(2); //稍做延时

DQ = 0;          //单片机将DQ拉低

delay_18B20(60); //精确延时 大于 480us

DQ = 1;          //拉高总线

delay_18B20(2);

x=DQ;            //稍做延时后 如果x=0则初始化成功 x=1则初始化失败

delay_18B20(15);

}

//ds18b20读一个字节

unsigned char ReadOneChar(void)

{

unsigned char i=0;

unsigned char dat = 0;

for (i=8;i>0;i--)

{

    DQ = 0; // 给脉冲信号

    dat>>=1;

    DQ = 1; // 给脉冲信号

    if(DQ)

    dat |=0x80;

    delay_18B20(4);

}

   return(dat);

}

//ds18b20写一个字节

void WriteOneChar(unsigned char dat)

{

   unsigned char i=0;

   for (i=8; i>0; i--)

   {

    DQ = 0;

    DQ = dat&0x01;

    delay_18B20(2);

    DQ = 1;

    dat>>=1;

  }

}

五、仿真图

 基于DS18B20温度传感器和MQ2烟雾传感器的火灾报警器设计V2.0(承接单片机开发设计)

图3 火灾报警器仿真图


关键字:DS18B20  温度传感器  烟雾传感器  火灾报警器 引用地址:基于DS18B20温度传感器和MQ2烟雾传感器的火灾报警器设计

上一篇:一种实用的单片机矩阵键盘设计
下一篇:51单片机超声波测距模块

推荐阅读最新更新时间:2024-03-16 15:35

基于DS18B20和AT89C2051设计的分布式温度测量系统
温度监控是工业生产中的一个重要环节,尤其在环境 恶劣和复杂的工业现场,温度监控起着不可替代的作用。但是由于目前许多温度监控系统所采用的温度传感器的输出是一个变化的模拟电压量,不能与计算机采集系统直 接接口,需要进行采集、处理与变换,才能送入基于计算机 的监控系统。这就使得对于多点分布式的温度测量带来 了不便。随着计算机、通信、网络控制等技术的发展,工业测控系统已成为许多工业企业中非常重要的组成部分。加之现场总线技术的日趋成熟及数字温度传感器的出现,使得现场总线技术和数字温度传感器更多的用于工业监控系统中来,从而使得工业监控系统的功能更加强大,监控的范围更加的广泛。同时提高温度的测量的精度也是重要的目标之一。 因此本文设计的系统
[单片机]
基于<font color='red'>DS18B20</font>和AT89C2051设计的分布式温度测量系统
关于DS18B20在温度检测系统中的应用
  1.背景   在现代化的工业生产中人们需要对温度进行检测和控制。采用51单片机来对温度进行控制,具有控制方便、组态简单和灵活性大等优点;本论文设计方案根据实际经验讨论关于DS18B20数字温度传感器在温度测量中的应用;其具有较高的测量精度,适合对温度精度要求较高的化工生产、电力工程等行业。   2.温度控制系统   美国DALLAS公司生产的DS18B20数字温度传感器,可以直接将被测温度转化为串行数字信号供微机处理,通过简单的编程实现9位的温度读数。并且多个DS18B20可以并接到多个地址线上与单片机实现通信。   DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单
[单片机]
关于<font color='red'>DS18B20</font>在温度检测系统中的应用
PIC单片机控制DS18B20 源程序
P IC 单片机 控制DS18B20 源程序 ORG   PIC54    GOTO  MAIN    ORG   0 ;---------------------- ;---------------------------- DELAY22            MOV LW  D 200         ; DELAY 2*250=500mS      MOV WF  COUNT1 DE32   MOV LW  D 250         ; 8*250=2mS    MOV WF  COUNT2 DE42  NOP             ; 1+2+1=5uS     DECFSZ  COUNT2,1     GOTO 
[单片机]
AD590温度传感器的使用
     AD590温度传感器是一种已经IC化的温度感测器,它会将温度转换为电流,在8051的各种课本中经常看到。其规格如下:   1、 度每增加1℃,它会增加1μA输出电流   2、 可测量范围-55℃至150℃   3、 供电电压范围+4V至+30V   AD590的管脚图及元件符号如下图所示:            AD590的输出电流值说明如下:   其输出电流是以绝对温度零度(-273℃)为基准,每增加1℃,它会增加1μA输出电流,因此在室温25℃时,其输出电流Iout=(273+25)=298μA。   AD590基本应用电路:            注意事项:   1、 Vo的值为Io
[工业控制]
51单片机-温度传感器代码解析Ⅱ
1.小于0度的转换 我们知道当测量的实际温度为0度以下时,temp没转换时的情况为下图所示 我们已经知道高5位为1表示的是负数,那么-0.5度的时候为什么是1111 1111 1111 1000。 负数的计算涉及到补码的知识。首先0xFFF8,除去高5位那就是 111 1111 1000 反码为 000 0000 0111 而补码就是反码加1,也就是补码为000 0000 1000 这样0.5就是由补码(十进制的8)乘以0.0625得来。 我们要知道,负数的时候需要关注的是temp的低11位,补码其实就是2的11次方(2048)减去temp的低11位的数值。 -55度的时候,补码为2048-0x0490=880。
[单片机]
51单片机-<font color='red'>温度传感器</font>代码解析Ⅱ
单总线协议(ds18b20)读写详解
1、时序图 2、51c代码 3、总结 1、时序图 1、初始化 2、 写 3、 读 2、代码 #include reg52.h sbit DQ = P2^0; //定义总线的I/O管脚 void SendByte(unsigned char dat); void Delay4us() //延时4us { ; } void Delay(unsigned char j) //一个循环15us { unsigned char i; while(j--) { i = 5; while (--i); } } bit d18b20_qs() //
[单片机]
单总线协议(<font color='red'>ds18b20</font>)读写详解
FPGA与DSl8820型温度传感器通信的实现
l 引言    DS18B20是DALLAS公司生产的一线式数字温度传感器,采用3引脚T0-92型小体积封装;温度测量范围为-55℃~+125~C,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出。   一线式(1-WIRE)串行总线是利用1条信号线就可以与总线上若干器件进行通信。具体应用中可以利用微处理器的I/O端口对DS18B20直接进行通信,也可以通过现场可编程门阵列(FPGA)等可编程逻辑器件(PLD)实现对1-WIRE器件的通信。   本文介绍利用ACTEL公司的ProASICplus系列FPGA实现与DS18B20的通信功能。FPGA可以将读出DS18B20
[传感技术]
温度传感器IC:DS1631
本应用笔记向用户介绍DS5000(兼容8051)微控制器与DS1631温度传感器的接口软件。DS1631集成了一个标准的2线串行数字接口。提供的软件代码可用于提供对DS1631的所有类型的功能访问,包括读取温度寄存器、写入恒温器门限和设置器件配置。 介绍 DS1631为数字温度计,在-9°C范围内提供10、11、12或55位温度读数 至 +125°C 范围,0°C 至 +5°C 范围内具有 ±0.70°C 精度,3.0V ≤ VDD≤ 5.5V。DS1631还具有用户定义的跳变点(TH和 TL).三个地址引脚 允许多达1631个DS 在同一总线上工作。 与DS1631的通信通过2线串行接口实现。本应用笔记介绍 “C”源代码,允
[单片机]
<font color='red'>温度传感器</font>IC:DS1631
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved