单片机技术网|技术阅读
登录|注册

您现在的位置是:单片机技术网 > 技术阅读 > 基于51单片机的PM2.5+温湿度检测仪

基于51单片机的PM2.5+温湿度检测仪

.

   ADC0832GP2Y1010AU湿湿湿


   51(STC89C52/51AT89C52/51)+LCD1602+ADC0832++DHT11湿 ++GP2Y1010AUOF+

.

1LCD1602PM2.5湿

2使GP2Y1010AUOFPM2.51602

3湿

4PM2.53绿

541STC


.

1AD,

2Protues仿

3PCB

.

/************************************************** 函数名称 :void main(void)** 函数功能 :主函数** 输    入 :无** 输    出 :无** 说    明 :************************************************/void main(void){  double PM,pm1,pm2;  int PMVAL=0,HPM=200,PM_count=0,pm1_count=0;  uchar T1_data=0,R1_data=0,T2_data=0,R2_data=0;//温度、湿度变量  uchar shezhi_flag=1,Mode_flag=1,n=1;//设置变量  uchar bueezr_flag=0,count=0,buzzer_time=9;//蜂鸣器报警变量  uint Mode_count=0  uchar disp[16] ={"PM2.5:0000ug/m3 "}; uchar disp1[16]= {"T :00C RH:00%"}; uchar Tx_Buf[15];   InitUART();      //初始化串口                      LCD_Init();    WriteChar(1,0,16,disp); //在第一行显示‘内容’  WriteChar(2,0,16,disp1); //在第二行显示‘内容’  while(1)  {    T1_data=Read_TRH(0,0);//温度    disp1[3]=T1_data/10+0x30;//十位    disp1[4]=T1_data%10+0x30;//个位    R1_data=Read_TRH(1,0);//湿度    disp1[13]=R1_data/10+0x30;//十位    disp1[14]=R1_data%10+0x30;//个位    pm1+=read_data(1);    if(++PM_count>=20)    {        PM_count=0;         pm1=pm1/20;      pm2+=pm1;      pm1=0;      if(++pm1_count>=5)      {        pm1_count=0;        PM=pm2/5;        PM=PM*50/255;        PM-=4;          PM/=5;        PM*=1000;        PMVAL=PM;        PMVAL+=235;  PMVAL=PMVAL/9;        if(PMVAL>=9999)PMVAL=9999;        WriteCOMDATA(0x86,0);        if(PMVAL<0)//PMVAL=0;        {WriteCOMDATA(0+0x30,1);PMVAL=abs(PMVAL);}        else WriteCOMDATA(PMVAL/1000+0x30,1);        WriteCOMDATA(PMVAL/100%10+0x30,1);        WriteCOMDATA(PMVAL/10%10+0x30,1);        WriteCOMDATA(PMVAL%10+0x30,1);        PM=pm1=pm2=0; }      ......省略.....
    /********LCD1602显示********/                  WriteChar(1,0,16,disp); //在第一行显示‘内容’ WriteChar(2,0,16,disp1); //在第二行显示‘内容’
}
}