找回密码
 立即注册

QQ登录

只需一步,快速开始

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

基于STM32RCT6的MP503空气质量检测实现并显示 源程序

[复制链接]
跳转到指定楼层
楼主
ID:474080 发表于 2022-2-9 15:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
设计做有关空气质量检测的都可以选择mp503这个传感器哦~

本压缩包里包含基础的mp403 ADC采集和4脚OLED的显示
首先mp403使用前请先预热5min左右才能正常工作
A:0V B:0V ---- 质量优
A:0V B:5V ---- 轻度污染
A:5V B:0V ---- 中度污染
A:5V B:5V ---- 重度污染

mp503检测方式为adc电压采集

我用的是
A--PA0
B--PA1
VCC--VCC
GND--GND

具体空气质量等级的评级可搜索mp503手册查看

单片机源程序如下:
  1. #include "delay.h"
  2. #include "sys.h"
  3. #include "oled.h"
  4. #include "pid.h"
  5. #include "adc.h"

  6. int main(void)
  7. {
  8.     float temp0,temp1,mp503A,mp503B;
  9.           u16 adcx0,adcx1;
  10.                 delay_init();                //延时函数初始化
  11.                 OLED_Init();                            //初始化OLED  
  12.           OLED_Clear();
  13.           Adc_Init();                                    //ADC初始化            
  14.     OLED_XianShi();


  15.                 while(1)
  16.                 {
  17.                         adcx0=Get_Adc_Average(ADC_Channel_0,20);
  18.                         temp0=(float)adcx0*(3.3/4096);
  19.                         mp503A=adcx0=temp0;
  20.                         OLED_ShowNum(38,0,temp0,1,16);
  21.                         temp0-=adcx0;
  22.                         temp0*=1000;
  23.                         OLED_ShowNum(54,0,temp0,3,16);
  24.                         delay_ms(250);              //显示A0电压输出(A0=A)
  25.                        
  26.                         adcx1=Get_Adc_Average(ADC_Channel_1,20);
  27.                         temp1=(float)adcx1*(3.3/4096);
  28.                         mp503B=adcx1=temp1;
  29.                         OLED_ShowNum(38,3,temp1,1,16);
  30.                         temp1-=adcx1;
  31.                         temp1*=1000;
  32.                         OLED_ShowNum(54,3,temp1,3,16);
  33.                         delay_ms(250);              //显示A1电压输出(A1=B)
  34.                         if(mp503A<1)
  35.                         {
  36.                                 if(mp503B<1)                               
  37.                                         OLED_ShowCHinese(72,5,0);  //空气质量优                               
  38.                                 else
  39.            {
  40.                                                    OLED_ShowCHinese(72,5,1);          
  41.                //OLED_ShowCHinese(70,5,2);
  42.                //OLED_ShowCHinese(70,5,3);
  43.                                        //OLED_ShowCHinese(70,5,4);        //轻度污染
  44.                                          }                       
  45.                         }
  46.                         if(mp503A>=2)
  47.                         {
  48.                                 if(mp503B<1)
  49.                                 {
  50.                                         OLED_ShowCHinese(72,5,2);          
  51.           //OLED_ShowCHinese(70,5,0);
  52.           //OLED_ShowCHinese(70,5,0);
  53.                                   //OLED_ShowCHinese(70,5,0);       
  54.                                 }                                       
  55.                                 else
  56.                                 {
  57.                                         OLED_ShowCHinese(72,5,3);          
  58.           //OLED_ShowCHinese(70,5,0);
  59.           //OLED_ShowCHinese(70,5,0);
  60.                                   //OLED_ShowCHinese(70,5,0);       
  61.                                 }                                       
  62.                         }
  63.                 }
  64.        
  65. }
复制代码

Keil代码下载:
MP503.7z (252.59 KB, 下载次数: 35)

评分

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

查看全部评分

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

使用道具 举报

沙发
ID:1036413 发表于 2022-6-27 15:51 | 只看该作者
怎样转换成质量指数哦?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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