问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于单片机的Wi-Fi无线气体检测报警系统设计

创作时间:
作者:
@小白创作中心

基于单片机的Wi-Fi无线气体检测报警系统设计

引用
CSDN
1.
https://blog.csdn.net/weixin_42341109/article/details/140938568

本文介绍了一种基于单片机的Wi-Fi无线气体检测报警系统设计,该系统能够监测烟雾、一氧化碳和氧气的浓度,并通过LCD1602显示屏实时显示。系统还支持阈值调节、声光报警以及上位机数据传输等功能。文章提供了详细的源代码和工程文件,适合从事单片机开发和嵌入式系统设计的读者参考。

功能描述

使用单片机实现烟雾浓度、一氧化碳浓度、氧气浓度的监测,可以实时监测当前系统中的气体浓度。可以通过按键手动的设置烟雾、一氧化碳、氧气浓度的报警阈值,当超过阈值会进行声学与光学报警。使用上位机传输模拟WIFI无线传输的功能。

  1. 烟雾浓度监测
  2. 一氧化碳浓度监测
  3. 氧气浓度监测
  4. 人机交互阈值调节
  5. 声学与光学报警
  6. LCD1602浓度实时监测
  7. 上位机数据传输,模拟WIFI传输的功能

提供的资料

  1. 源代码(KEIL4)
  2. 仿真工程文件
  3. 原理图工程文件
  4. 虚拟串口软件
  5. 串口助手(上位机软件)
  6. 软件安装使用教程



以下是部分源代码示例:

#include <reg52.h>
#include "ds18b20.h"
#include <I2C.H>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
#define	PCF8591	0x90 
sbit rs = P2^0;
sbit rw = P2^1;
sbit e = P2^2;
sbit k1=P3^2;
sbit k2=P3^3;
sbit k3=P3^4;
sbit beep=P2^6;
sbit led1=P2^3;
sbit led2=P2^5;
sbit led3=P2^4;
uchar ad,mos;
uchar code xianshi1[]=" Íß˹Ũ¶È:";
uchar code xianshi2[]=" Ò»Ñõ»¯Ì¼Å¨¶È:";
uchar code xianshi3[]=" ÑõÆøÅ¨¶È:";
uchar  xianshi4[20];
uchar code xianshi5[]=" ÈÝÁ¿";
uchar code xianshi6[]="%";
uchar code xianshi7[]="********* WIFI ´«ÊäÒÑ¿ªÆô£¡*********\r\n";
uchar code xianshi8[]="  \r\n";
uchar Dat_rxd;
uint aa;
uint  DV,DL,DN,power;
uint  DN_s = 50,DV_s=50,DL_s=50;
bit bb,temp_b,dv_b,dl_b;
void delay(uchar ms)
{       // ÑÓʱ×Ó³ÌÐò
     uchar i ;
     while(ms--)
     {
      	for(i = 0 ; i<250;i++) ;
     }
}
void wr_com(unsigned char com)
{       
      // дÈëÖ¸ÁîÊý¾Ýµ½LCD
     rs = 0 ;
      rw = 0 ;
      e = 0 ;
      P0 = com ;
    delay(1);
      e = 1 ;
    delay(1);
      e = 0 ; 
}
void wr_dat(unsigned char dat)
{      
      //дÈë×Ö·ûÏÔʾÊý¾Ýµ½LCD
     rs = 1 ;
      rw = 0 ;
      e = 0 ;
      P0 = dat ;
    delay(1);
      e = 1 ;
    delay(1);
      e = 0 ; 
}
void LCD_write_string(uchar x,uchar y,uchar *s)
{
    if (y == 0)
    {
        wr_com(0x80 + x);     //±íʾµÚÒ»ÐÐ
    }
    else
    {
        wr_com(0xC0 + x);      //±íʾµÚ¶þÐÐ
    }
    while (*s) 			//ÅжÏÊÇ·ñ×Ö·û´®µÄ½áβ
    {
        wr_dat( *s);    //ÏÔʾµ±Ç°×Ö·û
        s ++;     			//×Ö·û´®µØÖ·¼Ó1
    }
}
void LCD_write_char(uchar x,uchar y,uchar Data)
     {
        if (y == 0)
         {
          wr_com(0x80 + x);
         }
        else
         {
          wr_com(0xC0 + x);
        }
       wr_dat(Data);
     }
/*******************************************************************
ADC·¢ËÍ×Ö½Ú[ÃüÁî]Êý¾Ýº¯Êý               
*******************************************************************/
bit ISendByte(unsigned char sla,unsigned char c)
{
   Start_I2c();              //Æô¶¯×ÜÏß
   SendByte(sla);            //·¢ËÍÆ÷¼þµØÖ·
   if(ack==0)return(0);
   SendByte(c);              //·¢ËÍÊý¾Ý
   if(ack==0)return(0);
   Stop_I2c();               //½áÊø×ÜÏß
   return(1);
}
/*******************************************************************
ADC¶Á×Ö½ÚÊý¾Ýº¯Êý               
*******************************************************************/
unsigned char IRcvByte(unsigned char sla)
{  unsigned char c;
   Start_I2c();          //Æô¶¯×ÜÏß
   SendByte(sla+1);      //·¢ËÍÆ÷¼þµØÖ·
   if(ack==0)return(0);
   c=RcvByte();          //¶ÁÈ¡Êý¾Ý0
   Ack_I2c(1);           //·¢ËͷǾʹðλ
   Stop_I2c();           //½áÊø×ÜÏß
   return(c);
}
void key()
     {
     if(k1==0)
        {
         delay(5);
         if(k1==0)
           {
            delay(5);
            while(!k1);
            mos++;
            if(mos==4) mos=0;
           } 
        }
    if(k2==0)
         {
           delay(5);
           if(k2==0)
            {
              while(!k2);
              if(mos==1){if(DV_s<100)DV_s=DV_s+1;}
              if(mos==2){if(DL_s<100)DL_s=DL_s+1;}
              if(mos==3){if(DN_s<100)DN_s=DN_s+1;}
            }
         }
      	if(k3==0)
         {
           delay(5);
           if(k3==0)
            {
              while(!k3);
              if(mos==1){if(DV_s>0)DV_s=DV_s-1;}
              if(mos==2){if(DL_s>0)DL_s=DL_s-1;}
              if(mos==3){if(DN_s>0)DN_s=DN_s-1;}
            }
         }
     }
    void send_string(uchar *p)
{
    while(*p!= '\0')
    {
      SBUF=*p;
      p++;
      while(TI==0);
      TI=0;
    }
} 
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号