51单片机项目(14)——基于51单片机的烟雾报警系统_单片机烟雾报警器设计

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

1.设计内容

本次设计的系统功能描述如下:

1.可以测量烟雾浓度并且在屏幕显示,同时显示浓度阈值。

2.可以通过按键对阈值进行加减调节。

3.浓度大于阈值时,蜂鸣器报警,风扇转动,发送报警信息(“to high”字符)到手机。

4.同时浓度是实时往手机端发送。

5.程序会把每分钟的数据存储在AT24C02里面,当触发按键时,会把以往存储的所有数据读出来,发送到手机上,每个数据对应一个地址,根据地址就可以知道它是哪个时刻采集到的数据。

原理图如下:

演示视频如下:

基于51单片机烟雾检测报警系统

2.模块介绍

1.LCD1602

LCD1602 模块是一种常用的字符液晶显示屏模块,它可以用于显示简单的文本信息。LCD1602 模块通常由一个 16x2 的字符液晶显示屏组成,可以显示 16 列字符和 2 行字符。

以下是 LCD1602 模块的一些基本特点和使用方法:

  1. 引脚:LCD1602 模块通常具有 16 个引脚,其中包括用于数据传输和控制的引脚,以及背光控制引脚。
  2. 控制器:LCD1602 模块通常采用 HD44780 控制器,这是一种广泛使用的字符液晶显示控制器。
  3. 接口:LCD1602 模块可以通过并行接口或者串行接口(如 I2C)与单片机或者其他设备进行连接。
  4. 显示内容:LCD1602 模块可以显示各种字符、数字、符号和自定义图形。
  5. 初始化:在使用 LCD1602 模块之前,您需要通过发送特定的指令来初始化显示屏的模式和参数。
  6. 控制指令:您可以通过发送控制指令来控制 LCD1602 模块的显示内容、光标位置、显示模式等。

2.ADC0832

ADC0832 是一种 8 位分辨率的模拟到数字转换器模块,可用于将模拟电压信号转换为数字信号。ADC0832 模块具有以下特点:

  1. 分辨率高:ADC0832 模块具有 8 位分辨率,可以将模拟输入信号转换为 0~255 的数字量。
  2. 接口简单:ADC0832 模块的接口简单,只需要连接 VCC、GND、以及模拟输入信号(VIN+ 和 VIN-),同时还需要使用两个 IO 口控制转换开始和完成。
  3. 可编程输入范围:ADC0832 模块具有可编程的输入范围,可以选择 0~5V 或者 0~10V 的电压范围。
  4. 内部参考电压:ADC0832 模块内部集成了一个稳定的基准电压源,供电时可以使用内部基准电压,获取更为精准的输入电压转换结果。
  5. 低功耗:ADC0832 模块工作电压范围为 4.5V~6V,低功耗,适用于各种微控制器系统。

3.蓝牙模块HC08

蓝牙模块 HC08(也称为 HC-08 或 BT05)是一种低功耗蓝牙串口透传模块,可用于在设备之间进行无线数据传输和通信。以下是 HC08 蓝牙模块的一些基本特点和功能:

  1. 蓝牙版本:HC08 蓝牙模块基于蓝牙 4.0 技术,支持蓝牙经典和低能耗(BLE)模式。
  2. 透传通信:HC08 蓝牙模块可用于建立串口通信连接,将串口数据通过蓝牙进行透传传输。
  3. 低功耗:HC08 蓝牙模块采用低功耗设计,适用于需要长时间运行、对电源要求较高的应用场景。
  4. 小型化设计:HC08 蓝牙模块的尺寸小巧,体积小,易于集成到各种设备中。
  5. 通信距离:HC08 蓝牙模块的通信距离一般在 10 米左右,可根据外部环境和天线设计等因素有所变化。
  6. AT 指令控制:HC08 蓝牙模块支持通过发送 AT 指令进行模块控制和参数设置,例如设置蓝牙名称、波特率等。
  7. 多种工作模式:HC08 蓝牙模块支持主从模式、设备间点对点通信、多设备连接等多种工作模式。

4.电机模块

该模块自带驱动,不用外接电机驱动,供电后,直接用单片机IO控制即可

5.烟雾传感器MQ2

MQ2 是一种常用的烟雾传感器模块,它可以用来检测环境中的可燃气体和烟雾浓度。以下是 MQ2 烟雾传感器的一些基本特点和功能:

  1. 灵敏度:MQ2 烟雾传感器对各种可燃气体和烟雾具有较高的灵敏度,可以检测到燃气和烟雾的存在并量化其浓度。
  2. 多种气体检测:MQ2 烟雾传感器可以检测多种可燃气体,例如甲烷、丙烷、丁烷、液化气、烟雾等。
  3. 模拟输出:MQ2 烟雾传感器以模拟输出方式提供检测数据,输出电压信号与检测到的气体浓度成正比。
  4. 可调灵敏度:MQ2 烟雾传感器通常提供可调的灵敏度电位器,可以根据需要调整传感器的灵敏度。
  5. 快速响应时间:MQ2 烟雾传感器具有快速的响应时间,可以迅速感知到环境中的可燃气体和烟雾变化。
  6. 低功耗:MQ2 烟雾传感器功耗较低,适用于长时间运行和电池供电的应用。
  7. 小型化设计:MQ2 烟雾传感器模块体积小巧,易于集成到各种设备中。

3.代码

主程序main.c如下:

#include "reg52.h"
#include "LCD1602.h"
#include "delay.h"
#include <string.h>
#include <stdio.h>
#include "adc0832.h"
#include "usart.h"
#include "i2c.h"

sbit led=P2^2;
sbit beep=P1^5;
sbit motor=P1^6;
sbit k3=P3^2;	         //阈值+ 
sbit k4=P3^3;           //阈值-
sbit k5=P1^7;           //触发信息发送

char inf[12];           //保存烟雾浓度信息
char inf2[12];          //保存烟雾阈值信息
char alarm[16]="smoke too high\r\n";


int t=0;

int addr=0;
int temp=0;

int smoke_yuzhi=100;
int smoke=0;      //烟雾浓度

int read_flag=0;     //读取信息标志位  由蓝牙控制

char h=0;
int j=0;          //用于遍历AT24C02的地址

void Int0Init()             //定时器初始化 
{  
  
   TMOD|=0X01;                  //定时器工作在方式1下,即16位定时器
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256;   
   TR0=1;                     //打开定时器0
   ET0=1;                     //使能定时器0
   EA=1;                     //打开总中断
   
}

void main(void)
{  
   
   char i=0;
   
   char history[]="addr:     is     \r\n";
   LcdInit();    //LCD显示器初始化
   UsartInit();  //串口初始化
   Int0Init() ;        //定时器初始化
   
   while(1)
   {  
      smoke=read_ad(0);
      sprintf((char*)inf,"yanwu:%d\r\n",smoke);
      sprintf((char*)inf2,"yuzhi:%d\r\n",smoke_yuzhi);
       LcdWriteCom(0x01);            //清屏
       for(i=0;i<strlen(inf)-2;i++)             //-2是为了不显示\r\n


**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/f8721e79c229474f343c8a7bf4481e91.png)
![img](https://img-blog.csdnimg.cn/img_convert/72c4922fbbc2f9fefdc59156c58d69dc.png)

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**

**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

### 回答1: 51单片机mq2烟雾传感器代码用于检测周围环境中的烟雾浓度。以下是一个简单的示例代码: #include<reg51.h> #include<stdio.h> #define MQ2_pin P1 #define LED_pin P2 sbit power = P0^0; // 定义MQ2传感器的电源引脚 void delay(unsigned int time) // 延时函数 { unsigned int i,j; for(i=0;i<time;i++) for(j=0;j<121;j++); } void LCD_cmd(unsigned char cmd) // 发送命令到LCD { P2 = (P2 & 0x0F) | (cmd & 0xF0); P3 &= ~0x80; // RS = 0 P3 &= ~0x40; // RW = 0 P3 |= 0x20; // EN = 1 delay(5); P3 &= ~0x20; // EN = 0 delay(5); P2 = (P2 & 0x0F) | (cmd << 4); P3 |= 0x20; // EN = 1 delay(5); P3 &= ~0x20; // EN = 0 delay(5); } void LCD_write(unsigned char dat) // 发送数据到LCD { P2 = (P2 & 0x0F) | (dat & 0xF0); P3 |= 0x80; // RS = 1 P3 &= ~0x40; // RW = 0 P3 |= 0x20; // EN = 1 delay(5); P3 &= ~0x20; // EN = 0 delay(5); P2 = (P2 & 0x0F) | (dat << 4); P3 |= 0x20; // EN = 1 delay(5); P3 &= ~0x20; // EN = 0 delay(5); } void init_lcd() // 初始化LCD { LCD_cmd(0x02); // 返回起始位置 LCD_cmd(0x28); // 设置2行显示,5x7点阵 LCD_cmd(0x0C); // 打开显示,无光标 LCD_cmd(0x01); // 清屏 LCD_cmd(0x80); // 设置显示位置为第一行第一列 LCD_write("Smoke Level:"); } void display_smoke_level(unsigned int level) // 显示烟雾浓度 { LCD_cmd(0xC0); // 设置显示位置为第二行第一列 LCD_write(" "); LCD_cmd(0xC0); // 设置显示位置为第二行第一列 LCD_write(level); } void main() { unsigned int smoke_level; power = 1; // 打开传感器电源 init_lcd(); // 初始化LCD while(1) { smoke_level = MQ2_pin; // 读取MQ2传感器输出 display_smoke_level(smoke_level); // 显示烟雾浓度 delay(500); } } ### 回答2: 51单片机是一种常用的微控制器,能通过编程实现不同功能。MQ2烟雾传感器是一种常用的传感器,用于检测环境中的烟雾浓度。 编写51单片机的MQ2烟雾传感器的代码可以分为以下几个步骤: 1. 首先,需要包含相关的头文件和宏定义。例如,可以包含51单片机的相关头文件如reg51.h、intrins.h,并定义需要使用的IO口。 2. 然后,需要初始化IO口和串口。可以使用相应的函数来设置IO口的工作模式,例如将传感器的输出引脚连接到51单片机的某个IO口上,并设置为输入模式。 3. 接下来,需要编写主函数或中断函数,来处理传感器数据的读取和处理。可以使用一个循环来不断读取传感器的输出,然后根据读取到的数据进行相应的处理,例如根据阈值判断是否有烟雾存在,或者输出烟雾浓度的数值。 4. 最后,可以通过串口或其他方式将检测到的烟雾浓度数据输出到外部设备,例如显示器或者手机等。 总的来说,编写51单片机的MQ2烟雾传感器代码涉及到初始化IO口和串口、读取传感器数据和进行相应的处理,以及输出结果到外部设备的操作。具体的实现细节根据具体的需求和硬件组成而有所差异,可根据实际情况进行相应的代码编写。 ### 回答3: 51单片机是一种常用的单片机芯片,MQ2烟雾传感器是一种用于检测环境中有害烟雾浓度的传感器。下面给出一个使用51单片机控制MQ2烟雾传感器的简单代码示例: #include <reg51.h> sbit MQ2 = P2^0; // 定义烟雾传感器接口 int main() { unsigned int ADCResult; while(1) { MQ2 = 1; // 给烟雾传感器供电 delay(100); // 延时一段时间使传感器稳定 ADCResult = GetADC(); // 获取模拟信号的AD转换结果 if(ADCResult > 500) // 当烟雾浓度高于某个阈值时 { // 执行相应的操作,比如触发警报等 } MQ2 = 0; // 关闭烟雾传感器电源 delay(1000); // 延时一段时间,以便传感器回到低功耗状态 } return 0; } 此代码首先通过P2^0引脚给烟雾传感器供电,并延时一段时间以使传感器稳定。之后,通过编写的GetADC()函数获取烟雾传感器的模拟信号的AD转换结果。最后,根据获取的结果进行判断,如果烟雾浓度高于设定的阈值,则执行相应的操作,比如触发警报等。随后,关闭烟雾传感器的电源,并延时一段时间,以便传感器回到低功耗状态。该代码通过循环不断地获取烟雾浓度,并根据需要进行相应操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值