历史上的今天
今天是:2024年12月28日(星期六)
2021年12月28日 | 项目实战:51单片机控制的小型PM2.5环境检测系统
2021-12-28 来源:eefocus





程序参考主程序如下:
#include #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 #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(i6) { 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; } } } }
史海拾趣
|
据有关市场调研公司公布的报告指出,从1998年到2002年,半导体行业的年复合增长率低于3%。而相对而言,电源管理产品的增长率却远远高于全行业平均水平,IGBT、功率MOSFET和电压调节器分别增长了4.4%、10%和18%。据iSuppli预计,从2002年到2007年,I ...… 查看全部问答> |
|
我用89C51访问24C02无反应. 24C02时钟接P1.7,数据接P1.6,A0 A1 A2接地 执行函数:I2C_Write(0xA0,0x01,0);I2C_Read(0xA1,0x01,&c);都直接返回0 24C02.H #ifndef __24C02_H__ #define __24C02_H__ #ifndef uchar #define uchar unsigned char #e ...… 查看全部问答> |
|
PB 上好像有个功能,可以直接运行开发板上的程序(如MediaPlay), 请问在PB什么菜单下? 请问,在WinCE 上如何注册组件(DLL)?(另一个程序要调用这个组件,不注册, 没法调用) PB 上好像有个功能,可以直接运行开发板上的程序(如MediaPlay), 请问在PB什么菜单下?… 查看全部问答> |
|
大连某大型企业招WinCE驱动与应用软件开发人员,采用x86硬件平台. 要求:有搭建WinCE 6.0 x86联机开发环境&系统订制&驱动开发&应用程序开发经历, 熟炼常握C语言和VS2005开发环境. 2008.5.1日以前有效. 另招Linux开发工程师,要求有RTLinux+2410开发 ...… 查看全部问答> |
|
有几款仿真器可以支持LM3S6432处理,我需要支持IAR和KEIL两种开发环境,需要选用什么仿真器。仿真接口如何设计。TI给的demo板只有厂家自己的仿真器接口,没有通用的仿真器接口。… 查看全部问答> |




