仿真版本:Proteus8.6及以上版本
程序编译:Keil5 C51
编程语言:C语言
设计编号:【U02】
1.? 简介
? 本文提出了一种基于51单片机的PM2.5空气质量检测系统。单片机实时通过ADC0832转换芯片采集粉尘传感器的粉尘的浓度,通过单片机的数据转换处理后在液晶屏上显示空气中的质量,当测量空气中的粉尘浓度大于设置粉尘浓度时,蜂鸣器和发光二极管发出声光报警,粉尘的浓度报警值可以通过按键进行设置。
2.? 主要功能
a.通过LCD1602显示当前PM2.5浓度和报警阈值。
b.通过按键设置粉尘浓度报警阈值。
3.? 源程序(Keil5)
本设计采用keil5 C51软件(内附安装包)实现程序设计。如需用keil4打开程序,可自行通过.c和.h文件新建工程即可。
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char //宏定义
sbit RS=P1^6;//液晶接口
sbit EN=P1^7;
sbit LED = P2^0;//粉尘传感器控制接口
sbit ADCS = P3^7;//AD0832接口
sbit ADCLK =P3^5;
sbit ADDI = P3^6;
sbit ADDO = P3^6;		  
sbit SET= P1^1;//按键接口
sbit ADD= P1^2;
sbit DEC= P1^3;
sbit BEEP=P2^1;//蜂鸣器接口
uchar set_st;
uchar tab[5];
uint DUST_SET=150; //固体颗粒的阈值
//bit shanshuo_st; //闪烁间隔标志
bit beep_st; //蜂鸣器间隔标志
uchar x=4; //计数器
//定义标识
uchar FlagStart = 0;
float DUST_Value;
uint DUST;
uchar num=0;
uchar mm;
uchar abc;
uchar ADC_Get[10]={0}; //定义AD采样数组
uchar str[5]={0};
/*****初始化定时器0*****/
void InitTimer(void)
{
	TMOD = 0x01;
	TL0 = (65536-10000)/256; //定时10ms
	TH0 = (65536-10000)%256;
	TR0 = 1;
	ET0 = 1;
	EA = 1;
}
/*************************lcd1602程序**************************/
void delay1ms(uint ms)//延时1毫秒
{ 
    uint i,j;
	for(i=0;i<ms;i++)
	for(j=0;j<100;j++);
}
void wr_com(uchar com)//写指令//
{ 
    delay1ms(1);
	RS=0;
//	RW=0;
	EN=0;
	P0=com;
	delay1ms(1);
	EN=1;
	delay1ms(1);
	EN=0;
}
void wr_dat(uchar dat)//写数据//
{ 
    delay1ms(1);;
	RS=1;
//	RW=0;
	EN=0;
	P0=dat;
	delay1ms(1);
	EN=1;
	delay1ms(1);
	EN=0;
}
4.? 仿真proteus8.6
? 本设计采用proteus8.6软件(内附安装包)实现仿真设计,如下图所示。proteus软件一般存在高低版本兼容问题,该仿真是通过proteus8.6导出的,所以请尽量使用proteus8.6打开文件,低于proteus8.6的版本不能够正常使用,高于proteus8.6的版本除了proteus8.8/8.9理论上可以正常使用。
初始界面:
超限报警:
5.? 设计报告
设计报告主要包括硬件电路、软件设计、仿真调试等等,仅供参考。
6.? 资料清单
设计资料主要包括C程序+仿真+设计报告+使用说明+元件清单+操作视频等。
7.? 资料获取链接
百度网盘下载链接:【U02】百度网盘下载链接
更多单片机仿真设计合集:单片机仿真设计合集
								
								
								
963