项目实战:51单片机控制的小型PM2.5环境检测系统,附技术文件和源码

前几天做的小东西小型环境检测系统,能测pm2.5,代码附上,欢迎大家下载和学习,

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
程序参考主程序如下:

#include<reg52.h>
#include “delay.h”
#include “LCD12864.h”
#include “PM2_5.h”
#include “BMP180.h”
#include “DHT11.h”
#define uint unsigned int
#define uchar unsigned char

sbit waring=P1^3;
void main()
{
lcd_init();
Init_BMP085();
Init_PM2_5();

while(1)
{
bmp085Convert();
RH();

lcd_pos(0,0);
display_string(“pm2.5:”);
if(read_pm()>5)
display_num(read_pm());
else
display_num(5);
display_string(“ug/m3”);
display_string(" ");

lcd_pos(1,0);
display_string(“T:”);
display_num(temperature/10);
display_string(".");
display_num(temperature%10);
display_string("'C");
display_string(" ");

display_string(“H:”);
display_num(RHdataH);
display_string("%");

lcd_pos(2,0);
display_string(“pre:”);
display_num(pressure/1000);
display_string(".");
display_num(pressure%1000);
display_string(“kpa”);

lcd_pos(3,0);
display_string(“smo:”);
if(read_pm()>200)
{
display_string(“High”);
waring=0;
}
else
{
display_string(“low”);
display_string(" “);
waring=1;
}
display_string(“Al:”);
display_num(Altitude);
display_string(“m”);
display_string(” ");
delay_ms(200);
}
}

单片机PM2.5检测程序:

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define K_PM 820
void senddata(uchar dat);
uint read_pm();
uchar cal[7]={0};
// cal[0]:起始位 0xAA
// cal[1]:Vout(H)
// cal[2]:Vout(L)
// cal[3]:Vref(H)
// cal[4]:Vref(L)
// cal[5]:校验位
// cal[6]:结束位0xFF

uchar buf;
uchar sum;
int i=0;
float Vo;
void Init_PM2_5()
{
SCON=0x50;
PCON=0x00;

TMOD=0x20;
EA=1;
ES=1;
TL1=0xF4;
TH1=0xF4;
TR1=1;
}

uint read_pm()
{
return (uint)(K_PM*Vo);
}

void serial() interrupt 4
{
ES=0;
RI=0;
buf=SBUF;
senddata(buf);
ES=1;
}

void senddata(uchar dat)
{

if(dat0xAA)
{
i=0;
cal[i]=dat;
}
else
{
i=i+1;
cal[i]=dat;
if(i
6)
{
sum=cal[1]+cal[2]+cal[3]+cal[4];
if(sum==cal[5]&&cal[6]==0xFF)
{

// for(i=0;i<=6;i++)
// {
// SBUF=cal[i];
// while(!TI);
// TI=0;
// }
Vo=(cal[1]256+cal[2])/1024.05;
// SBUF=cal[1];
// while(!TI);
// TI=0;
//
//
// SBUF=cal[2];
// while(!TI);
// TI=0;

}
}
}
}

最后,如果有什么意见或者建议欢迎您留言给我,让我们共同学习一起进步,
如果需要 程序完整源代码和 设计文件,请在下方留言或者私信我,看到后会第一时间回复。

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值