一.硬件方案
火灾报警器采用51单片机为核心控制器,利用气体传感器MQ-2、ADC0809模数转换器、DS18B20温度传感器等实现基本功能。通过这些传感器和芯片,当环境中可燃气体浓度或温度等发生变化时系统会发出相应的灯光报警信号和声音报警信号,以此来实现火灾报警,智能化提示。
主要由51单片机+MQ-2烟雾传感+ADC0809模数转换芯片+LCD1602显示屏+继电器电路+按键+蜂鸣器;如图:
二.设计功能
(1)采用LCD1602实时显示当前的烟雾值和设置值;
(2)烟雾浓度的报警值可以通过按键设定;
(3)当前烟雾值在正常范围时,绿灯亮;
(4)当前烟雾超过上限值时,红灯亮,蜂鸣器响;
(5)三个按键功能:设置、加、减;
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:
(2)Protues仿真图如下:
四.软件设计
(1)程序流程图
(2)主程序源码
/*****主函数*****/
void main()
{
Init1602(); //调用初始化显示函数
while(1) //进入循环
{
temp=ADC0809(); //读取烟雾值
Key(); //调用按键函数 扫描按键
if(Mode==0) //只有当模式为0时才会执行以下的阀值判断部分
{
Display_1602(yushe_yanwu,temp); //显示预设烟雾,烟雾值
if(temp>=yushe_yanwu) //烟雾值大于等于预设值时
{
LED_yanwu=0; //烟雾指示灯亮
baojing=0; //蜂鸣器报警
}
else //烟雾值小于预设值时
{
LED_yanwu=1; //关掉报警灯
}
if(temp //当烟雾小于预设值并且温度也小于预设值时 (&&:逻辑与,左右两边的表达式都成立(都为真,也就是1)时,该if语句才成立) {
baojing=1; //停止报警
}
}
}
}
关键字:51单片机 烟雾报警器 ADC0809
引用地址:
基于51单片机的烟雾报警器设计-ADC0809
推荐阅读最新更新时间:2024-11-10 10:15
51单片机对LCD1602液晶的驱动设计
51单片机——LCD1602 1、1602液晶读写时序 (1)、读状态 RS=L,R/W=H,E=H。(判断忙完毕后释放总线) (2)、读数据 RS=H,R/W=H,E=H。 (3)、写指令 RS=L,R/W=L,D0~D7=指令码,E=高脉冲 (4)、写数据 RS=H,R/W=L,D0~D7=数据,E=高脉冲 2、液晶显示驱动文件 #include #define LCD1602_DB P0 sbit LCD1602_RS = P1 ^ 0; sbit LCD1602_RW = P1 ^ 1; sbit LCD1602_E = P1 ^ 5; /* 等待液晶准
[单片机]
51单片机实验8:led点阵(1):点亮一个点
开发板led点阵模块电路图如下: 74HC595:74HC595是一个8位串行输入、并行输出的位移缓存器。芯片第11角为数据输入时钟线,上升沿有效。芯片第12脚为输出存储器锁存时钟线,上升沿有效。芯片第13脚为输出有效(低电平)。芯片第14脚为串行数据输入。 为表示出输入74HC595的8位二进制数,开发板加入了led模块(图一中绿色所示)。若要使led发光,则需将JP595接vcc。 OE为输出有效控制端,低电平有效,所以务必将JOE短接片短接到GND端。 _nop_();函数为延时一个机器周期,所对应头文件为intrins.h #include reg52.h #include intrins.h #
[单片机]
51单片机学习笔记:DS18B20测温程序
C代码 #include my51.h #include smg.h #include ds18b20.h void main() //测试 ,6位数码管显示温度值 { u8 i=0; u16 temp=0; while(1) { temp=ds18b20_readTemperaData(); for(i=0;i 100;i++) { displaySMG(ds18b20_processTempData(temp)); } } } C代码 #if
[单片机]
单片机 数字电压表(ADC0809)
一、简述 采用模数转换的芯片ADC0809实现设计数字电压表。例子中设计的数字电压表可以测量0~5V范围内的输入电压值,并且通过4位LED数码管显示采集的电压值,例子测量三个模拟值:4.995、2.5、0.005。 ADC0809是可以将我们要测量的模拟电压信号量转换为数字量从而可以进行存储或显示的一种转换器件。 文件打包:链接: https://pan.baidu.com/s/1F2E135Jw7TG3EmUVx3xKGg 提取码: 5ttz 二、效果 三、工程文件 1、Keil工程 2、仿真电路图 四、源文件 #include reg51.h #define uint unsig
[单片机]
51单片机数码管显示跑马灯程序源代码讲解
基于51单片机学习板。用S1键作为控制跑马灯的方向按键,S5键作为控制跑马灯方向的加速度按键,S9键作为控制跑马灯方向的减速度按键,S13键作为控制跑马灯方向的启动或者暂停按键。记得把输出线P0.4一直输出低电平,模拟独立按键的触发地GND。 (2)实现功能: 跑马灯运行:第1个至第8个LED灯一直不亮。在第9个至第16个LED灯,依次逐个亮灯并且每次只能亮一个灯。每按一次独立按键S13键,原来运行的跑马灯会暂停,原来暂停的跑马灯会运行。用S1来改变方向。用S5和S9来改变速度,每按一次按键的递增或者递减以10为单位。 数码管显示:本程序只有1个窗口,这个窗口分成3个局部显示。8,7,6位数码管显示运行状态,启动时显示“on”,停
[单片机]
Atmega16单片机和51单片机有何区别?从软硬件两方面分析
1. Atmega16单片机简介 今天我们的主题是单片机,说道单片机你可能最先想到的是51单片机,然后通过外接的数字电路和模拟电路来控制外围的硬件,比如PWM,ADC,I2C等等。那么今天我们所说的是什么那?其实你把Atmega16单片机当成51单片机来使用即可,只不过是Atmega16单片机的外围接口更丰富,那么它都有什么外设资源那? ATmega16是基于增强的AVR RISC结构的低功耗8 位CMOS微控制器,由于其先进的指令集以及单时钟周期指令执行时间,ATmega16 的数据吞吐率高达1 MIPS/MHz。ATmega16常用片上资源有定时器、PWM、外部中断、SPI总线、两线串行接口TWI、EEPROM、USART
[单片机]
51单片机用nrf905头文件
简介:本文提供一个51单片机用nrf905头文件的代码。 #define nRFMainDev //主设备 //#define SysWaitTime 20//0.5*20=10S不压键停止闪烁 #define SysWaitTime 6//0.5*20=3S不压键停止闪烁 #define SysPushKeyTime 150//长压键150 * 20mS = 3。0S #define T2_5mS -921.6*5//5ms 12MHz /*------------------------------------------------ AT89S5X --------------------------------------
[单片机]
SLE4442卡_IC的51单片机驱动程序
整理了最初的实验草稿版,将端口宏定义,函数声明以及常用的函数声明建立头文件,感觉清楚多了,在不断地修改中凝练,在不停的实践中提高,满眼的思绪,在小小的Readme中划过一笔~~~~~~~~ char data_RST , ErrorCount ; void IC_RST(void) { uchar value,i,count; DATA_IN; //IC输入 RST_LOW; //复位时序 CLK_LOW; DATA_HIGH; DelayUs(5); RST_HIGH; DelayUs(5); CLK_HIGH; DelayUs(5); CLK_LOW; DelayUs(5); RST_LOW; DelayUs(2); for(
[单片机]