欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
STM32F103C8 GP2Y1010AU0F PM2.5空氣質量檢測
[打印本頁]
作者:
radcat
時間:
2018-7-22 17:14
標題:
STM32F103C8 GP2Y1010AU0F PM2.5空氣質量檢測
PM2.5空氣質量檢測程序源碼,測試通過
單片機源程序如下:
//=============================================================================
//文件名稱:main.h
//功能概要:STM32F103C8核心檢測
//調試方式:J-Link OB ARM SW方式 5MHz
//=============================================================================
//頭文件
#include "stm32f10x.h"
#include "GPIOLIKE51.h"
#include "USART.h"
#include "DHT11.h"
#include "ADC_DMA.h"
#include "systick.h"
#include <stdio.h>
//=============================================================================
//全局變量定義
//=============================================================================
float gp2y1010auof[100];
//=============================================================================
//函數定義
//=============================================================================
void LED_Init(void);//初始呼吸燈
void TIME_Init(void);//初始初始計時器中斷
u32 PM25_Val(void);//pm2.5濃度計算
//=============================================================================
//文件名稱:main
//功能概要:主函數
//參數說明:無
//函數返回:int
//=============================================================================
int main(void)
{
u16 RxData = 0x00;
uchar temp[]={"00.00"};
uchar humi[]={"00.00"};
char szbuffer[32];
delay_init();//延時函數初始化
LED_Init();//初始呼吸燈
TIME_Init();//初始計時器中斷
USART_Configuration();//USART通迅端口初始化
DHT11_Init();//初始化DHT11
ADC_DMA_Init();//初始化ADC_DMA
while (1)
{
RxData = USART_RECV();
if(RxData == 0x00)
{
USART_SEND("測試連接成功\n");
}
else if(RxData == 0x01)
{
DHT11_GET_CALCULATE(temp, humi);
sprintf(szbuffer, "溫度:%s 濕度:%s\n", temp, humi);
USART_SEND(szbuffer);
}
else if(RxData == 0x02)
{
sprintf(szbuffer, "空氣質量:%4.2f\n", ADC_DMA_GET_MQ135());
USART_SEND(szbuffer);
}
else if(RxData == 0x03)
{
sprintf(szbuffer, "粉塵濃度:%d\n", PM25_Val());
USART_SEND(szbuffer);
}
}
}
//初始呼吸燈
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
//初始計時器中斷
void TIME_Init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 , ENABLE);
//((1+TIM_Prescaler )/72M)*(1+TIM_Period )=((1+7199)/72M)*(1+9999)=1秒
TIM_TimeBaseStructure.TIM_Period = 89;//10ms
TIM_TimeBaseStructure.TIM_Prescaler = 7199;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3 , &TIM_TimeBaseStructure);
TIM_ARRPreloadConfig(TIM3, ENABLE);
TIM_ClearFlag(TIM3, TIM_FLAG_Update);
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM3 , ENABLE);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void TIM3_IRQHandler(void)
{
static u16 sum = 0;
if(TIM_GetITStatus(TIM3,TIM_IT_Update) != RESET)
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
if(sum >= 100)//1秒
{
sum = 0;
PBout(0) = !PBin(0);
}
gp2y1010auof[sum] = ADC_DMA_GET_GP2Y1010AU0F();
sum++;
}
u32 PM25_Val(void)
{
u16 index = 0;
u32 hex_val = 0;
u32 hex_val_old = 0.0f;
for(index = 0; index < 100; index++)
hex_val += (gp2y1010auof[index] / 5) * 500;
hex_val /= 100;
hex_val_old = hex_val;
hex_val = (hex_val + hex_val_old) / 2;
return hex_val;
}
復制代碼
全部資料51hei下載地址:
air.rar
(1016.48 KB, 下載次數: 145)
2018-7-22 17:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
usb123
時間:
2018-8-2 16:17
麻煩管理員看一下,,這個為什么下載的時候會提示資源錯誤呢
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1