欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3489|回復: 1
打印 上一主題 下一主題
收起左側

STM32F103C8 GP2Y1010AU0F PM2.5空氣質量檢測

[復制鏈接]
跳轉到指定樓層
樓主
ID:377443 發表于 2018-7-22 17:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
PM2.5空氣質量檢測程序源碼,測試通過

單片機源程序如下:
  1. //=============================================================================
  2. //文件名稱:main.h
  3. //功能概要:STM32F103C8核心檢測
  4. //調試方式:J-Link OB ARM SW方式 5MHz
  5. //=============================================================================

  6. //頭文件
  7. #include "stm32f10x.h"
  8. #include "GPIOLIKE51.h"
  9. #include "USART.h"
  10. #include "DHT11.h"
  11. #include "ADC_DMA.h"
  12. #include "systick.h"
  13. #include <stdio.h>

  14. //=============================================================================
  15. //全局變量定義
  16. //=============================================================================
  17. float gp2y1010auof[100];

  18. //=============================================================================
  19. //函數定義
  20. //=============================================================================
  21. void LED_Init(void);//初始呼吸燈
  22. void TIME_Init(void);//初始初始計時器中斷
  23. u32 PM25_Val(void);//pm2.5濃度計算
  24. //=============================================================================
  25. //文件名稱:main
  26. //功能概要:主函數
  27. //參數說明:無
  28. //函數返回:int
  29. //=============================================================================
  30. int main(void)
  31. {
  32.         u16 RxData = 0x00;       
  33.         uchar temp[]={"00.00"};  
  34.         uchar humi[]={"00.00"};
  35.         char szbuffer[32];

  36.         delay_init();//延時函數初始化
  37.         LED_Init();//初始呼吸燈
  38.         TIME_Init();//初始計時器中斷
  39.         USART_Configuration();//USART通迅端口初始化  
  40.         DHT11_Init();//初始化DHT11       
  41.         ADC_DMA_Init();//初始化ADC_DMA
  42.        
  43.         while (1)
  44.         {               
  45.                 RxData = USART_RECV();
  46.                 if(RxData == 0x00)
  47.                 {
  48.                         USART_SEND("測試連接成功\n");
  49.                 }
  50.                 else if(RxData == 0x01)
  51.                 {
  52.                         DHT11_GET_CALCULATE(temp, humi);
  53.                         sprintf(szbuffer, "溫度:%s 濕度:%s\n", temp, humi);
  54.                         USART_SEND(szbuffer);
  55.                 }
  56.                 else if(RxData == 0x02)
  57.                 {
  58.                         sprintf(szbuffer, "空氣質量:%4.2f\n", ADC_DMA_GET_MQ135());
  59.                         USART_SEND(szbuffer);
  60.                 }
  61.                 else if(RxData == 0x03)
  62.                 {
  63.                         sprintf(szbuffer, "粉塵濃度:%d\n", PM25_Val());
  64.                         USART_SEND(szbuffer);
  65.                 }
  66.         }
  67. }

  68. //初始呼吸燈
  69. void LED_Init(void)
  70. {
  71.   GPIO_InitTypeDef GPIO_InitStructure;  
  72.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);
  73.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  74.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  75.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  76.   GPIO_Init(GPIOB, &GPIO_InitStructure);
  77. }

  78. //初始計時器中斷
  79. void TIME_Init(void)
  80. {
  81.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  82.         NVIC_InitTypeDef NVIC_InitStructure;        
  83.        
  84.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 , ENABLE);
  85.        
  86.         //((1+TIM_Prescaler )/72M)*(1+TIM_Period )=((1+7199)/72M)*(1+9999)=1秒
  87.         TIM_TimeBaseStructure.TIM_Period = 89;//10ms
  88.         TIM_TimeBaseStructure.TIM_Prescaler =  7199;
  89.         TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  90.         TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;       
  91.         TIM_TimeBaseInit(TIM3 , &TIM_TimeBaseStructure);       
  92.         TIM_ARRPreloadConfig(TIM3, ENABLE);
  93.         TIM_ClearFlag(TIM3, TIM_FLAG_Update);
  94.   TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
  95.         TIM_Cmd(TIM3 , ENABLE);       

  96.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);                                                                                                         
  97.   NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;          
  98.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  99.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;       
  100.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  101.   NVIC_Init(&NVIC_InitStructure);
  102. }

  103. void TIM3_IRQHandler(void)
  104. {
  105.         static u16 sum = 0;
  106.         if(TIM_GetITStatus(TIM3,TIM_IT_Update) != RESET)
  107.     TIM_ClearITPendingBit(TIM3,TIM_IT_Update);               
  108.        
  109.         if(sum >= 100)//1秒
  110.         {
  111.                 sum = 0;
  112.                 PBout(0) = !PBin(0);
  113.         }
  114.         gp2y1010auof[sum] = ADC_DMA_GET_GP2Y1010AU0F();
  115.         sum++;
  116. }

  117. u32 PM25_Val(void)
  118. {
  119.         u16 index = 0;       
  120.         u32 hex_val = 0;
  121.         u32 hex_val_old = 0.0f;
  122.        
  123.         for(index = 0; index < 100; index++)
  124.                 hex_val += (gp2y1010auof[index] / 5) * 500;
  125.         hex_val /= 100;
  126.         hex_val_old = hex_val;
  127.         hex_val = (hex_val + hex_val_old) / 2;
  128.        
  129.         return hex_val;
  130. }
復制代碼

全部資料51hei下載地址:
air.rar (1016.48 KB, 下載次數: 145)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:166645 發表于 2018-8-2 16:17 | 只看該作者
麻煩管理員看一下,,這個為什么下載的時候會提示資源錯誤呢
回復

使用道具 舉報

無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表