前几天做的小东西小型环境检测系统,能测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(dat==0xAA)
- {
- 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.0*5;
- // SBUF=cal[1];
- // while(!TI);
- // TI=0;
- //
- //
- // SBUF=cal[2];
- // while(!TI);
- // TI=0;
- }
- }
- }
- }
复制代码
所有资料下载:
小型环境检测器.zip
(88.36 KB, 下载次数: 125)
|