找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4060|回复: 3
打印 上一主题 下一主题
收起左侧

小型PM2.5环境检测系统,不说话上图 附单片机源码

[复制链接]
跳转到指定楼层
#
前几天做的小东西小型环境检测系统,能测pm2.5,代码附上,有需要的自取


主程序:
  1. #include<reg52.h>
  2. #include "delay.h"
  3. #include "LCD12864.h"
  4. #include "PM2_5.h"
  5. #include "BMP180.h"
  6. #include "DHT11.h"
  7. #define uint unsigned int
  8. #define uchar unsigned char

  9. sbit waring=P1^3;
  10. void main()
  11. {
  12.         lcd_init();
  13.         Init_BMP085();
  14.         Init_PM2_5();

  15.         while(1)
  16.         {
  17.         bmp085Convert();
  18.         RH();
  19.         
  20.         lcd_pos(0,0);
  21.         display_string("pm2.5:");
  22.         if(read_pm()>5)
  23.         display_num(read_pm());
  24.         else
  25.         display_num(5);
  26.         display_string("ug/m3");
  27.         display_string("    ");

  28.         lcd_pos(1,0);
  29.         display_string("T:");
  30.         display_num(temperature/10);
  31.         display_string(".");
  32.         display_num(temperature%10);
  33.         display_string("'C");
  34.         display_string("  ");
  35.          
  36.         display_string("H:");
  37.         display_num(RHdataH);
  38.         display_string("%");

  39.         lcd_pos(2,0);
  40.         display_string("pre:");
  41.         display_num(pressure/1000);
  42.     display_string(".");
  43.         display_num(pressure%1000);
  44.         display_string("kpa");

  45.         lcd_pos(3,0);
  46.         display_string("smo:");
  47.         if(read_pm()>200)
  48.         {
  49.                 display_string("High");        
  50.                 waring=0;
  51.         }
  52.         else
  53.         {
  54.                 display_string("low");
  55.                 display_string(" ");
  56.                 waring=1;
  57.         }
  58.         display_string("Al:");        
  59.         display_num(Altitude);
  60.         display_string("m");
  61.         display_string(" ");
  62.         delay_ms(200);
  63.         }

  64.                
  65. }
复制代码


单片机PM2.5检测程序:
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. #define K_PM  820
  5. void senddata(uchar dat);
  6. uint read_pm();
  7. uchar cal[7]={0};
  8. //            cal[0]:起始位 0xAA
  9. //            cal[1]:Vout(H)
  10. //            cal[2]:Vout(L)
  11. //            cal[3]:Vref(H)
  12. //            cal[4]:Vref(L)
  13. //            cal[5]:校验位
  14. //            cal[6]:结束位0xFF


  15. uchar buf;
  16. uchar sum;
  17. int i=0;
  18. float Vo;
  19. void Init_PM2_5()
  20. {
  21.         SCON=0x50;
  22.         PCON=0x00;

  23.         TMOD=0x20;
  24.         EA=1;
  25.         ES=1;
  26.         TL1=0xF4;
  27.         TH1=0xF4;
  28.         TR1=1;        
  29. }

  30. uint read_pm()
  31. {
  32.         return (uint)(K_PM*Vo);
  33. }


  34. void serial() interrupt 4
  35. {
  36.         ES=0;
  37.         RI=0;
  38.         buf=SBUF;
  39.         senddata(buf);
  40.         ES=1;
  41. }


  42. void senddata(uchar dat)
  43. {
  44.         
  45.         if(dat==0xAA)
  46.         {
  47.                 i=0;
  48.                 cal[i]=dat;
  49.         }
  50.         else
  51.         {
  52.                 i=i+1;
  53.                 cal[i]=dat;
  54.                 if(i==6)
  55.                 {
  56.                         sum=cal[1]+cal[2]+cal[3]+cal[4];
  57.                         if(sum==cal[5]&&cal[6]==0xFF)
  58.                         {         
  59.                         
  60.                            
  61. //                                for(i=0;i<=6;i++)
  62. //                                {
  63. //                                        SBUF=cal[i];
  64. //                                        while(!TI);
  65. //                                        TI=0;
  66. //                                }
  67.                                 Vo=(cal[1]*256+cal[2])/1024.0*5;
  68. //                                        SBUF=cal[1];
  69. //                                        while(!TI);
  70. //                                        TI=0;
  71. //
  72. //
  73. //                                        SBUF=cal[2];
  74. //                                        while(!TI);
  75. //                                        TI=0;

  76.                         }
  77.                 }
  78.         }
  79. }


复制代码



所有资料下载:
小型环境检测器.zip (88.36 KB, 下载次数: 124)

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

板凳
ID:225681 发表于 2019-5-17 13:54 | 只看该作者
没有电路图啊,谁给一份电路图
回复

使用道具 举报

沙发
ID:13282 发表于 2019-5-4 11:00 | 只看该作者
不错的分享!
回复

使用道具 举报

楼主
ID:63317 发表于 2019-1-8 16:56 | 只看该作者
谢谢分享资料
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表