• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于51单片机的PM2.5空气质量检测(一)!!!

04/25 08:54
1418
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

单片机仿真设计合集资料获取.pdf

共1个文件

资料清单:C程序+仿真+设计报告+使用说明+元件清单+操作视频

仿真版本:Proteus8.6及以上版本

程序编译:Keil5 C51

编程语言:C语言

设计编号:【U01】

1.? 简介

? 本文提出了一种基于51单片机的PM2.5空气质量检测系统。单片机实时通过ADC0832转换芯片采集粉尘传感器的粉尘的浓度,通过单片机的数据转换处理后在液晶屏上显示空气中的质量,当测量空气中的粉尘浓度大于设置粉尘浓度时,蜂鸣器发光二极管发出声光报警。粉尘的浓度报警值可以通过按键进行设置。

2.? 主要功能

a.通过LCD1602显示当前PM2.5浓度和报警阈值。

b.通过按键设置粉尘浓度报警阈值。

3.? 源程序(Keil5)

本设计采用keil5 C51软件(内附安装包)实现程序设计。如需用keil4打开程序,可自行通过.c和.h文件新建工程即可。

#include"reg51.h"
#include"intrins.h"
#include"absacc.h"
//设定adc0832的引脚
sbit RS=P1^4;
sbit RW=P1^5;
sbit E=P1^6;
//设定三个按钮的引脚
sbit jian=P3^1;
sbit jia=P3^0;
//sbit fuwei=P3^1;
//设定adc0832的引脚
sbit baojing=P1^3;
sbit cs=P1^2;
sbit di=P1^0;
sbit clk=P1^1;
//定义(方便写程序)
#define busy 0x80
#define uchar unsigned char
#define uint unsigned int
//把要用的字符串写出来
uchar code table[]="PM2.5:";
uchar code table1[]="ALARM:";
uchar code table2[]="ug/m3";
uchar code table3[]="0123456789ABCDEF";
uchar num, set, now, a, b;
//延时函数
void delay(uint i)
{ uint j;
  for(j=0;j<i;j++);
}
//查询adc0832是否在忙
void test_1602busy()
{ uchar P0DATA;
  RW=1;
  RS=0;
  loop: P0=0xff;
  E=1;
  P0DATA=P0;
  E=0;
  if(P0DATA&busy)
  { goto loop;
  }
}
//写命令
void writecom(uchar co)
{ test_1602busy();
  RS=0;
  RW=0;
  E=0;
  P0=co;
  E=1;
  E=0;
}
//写数据
void writedata(uchar Data)
{ test_1602busy();
  RS=1;
  RW=0;
  E=0;
  P0=Data;
  E=1;
  E=0;
}
void init()
{ writecom(0x38);   //设置16X2显示,5X7点阵,8位数据接口
  writecom(0x0c);   //设置开显示,不显示光标
  writecom(0x06);   //写一个字符后地址指针加1
  writecom(0x01);   //显示清零,数据指针清零
}
void sound()
{  uchar z=100;  
   while(z--)
  {  baojing=~baojing;
     delay(500);
  }
}
//从adc0832获取数据
uchar get()
{  uchar Dat1=0,Dat2=0;
   clk=0; di=1; cs=0;
   clk=1; clk=0; di=1; //第一脉冲,开始位
   clk=1; clk=0; di=1; //第二脉冲,模式选择
   clk=1; clk=0; di=1; //第三脉冲,通道选择
   for(b=0;b<8;b++)         //从高到低取一次数
   {clk=1;
    clk=0;
        if(di) Dat1|=0x80>>b;
        }
   for(b=0;b<8;b++)          //从诋到高取一次数
   {if(di) Dat2|=0x80<<b;
    clk=1;
    clk=0;
        }
        cs=1; di=1; clk=1;
        if(Dat1==Dat2) return Dat1;         //校验两次读数
}

4.? 仿真proteus8.6

? 本设计采用proteus8.6软件(内附安装包)实现仿真设计,如下图所示。proteus软件一般存在高低版本兼容问题,该仿真是通过proteus8.6导出的,所以请尽量使用proteus8.6打开文件,低于proteus8.6的版本不能够正常使用,高于proteus8.6的版本除了proteus8.8/8.9理论上可以正常使用。

初始界面:

超限报警:

5.? 设计报告

设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考

6.? 资料清单

设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等。

7.? 资料获取链接

百度网盘下载链接:【U01】百度网盘下载链接

更多单片机仿真设计合集:单片机仿真设计合集

  • 单片机仿真设计合集资料获取.pdf
    下载

相关推荐