IC解密STM32单片机的PM2.5环境监测系统设计
- IC解密#include "Task.h"
- uint8_t Prime_Mode = 0;
- uint8_t Start_Mode = 0;
- uint8_t Threshold_Mode = 0;//温度调节模式
- bool isCollecting = false;
- int Humidity = 0,Temperature = 0;
- float Dust_Concentration = 0;
- uint8_t TemperatureMax = 30;
- uint8_t TemperatureMin = 10;
- uint8_t DataRead_Count = 0;//数据采集计次
- uint8_t Blink_Count = 0;//闪烁
- uint16_t Timer_2000ms = 0;//数据采集间隔
- uint16_t Timer_Blink = 0;//
- void Task_Test(void)
- {
- //LCD_Test();
- //Key_Test();
- }
- void Device_Init(void)
- {
- LCD_Init();
- Buzzer_Init();
- DHT11_Init();
- GP2Y10_Init();
- Key_Init();
- }
- void Task_Key(void)
- {
- uint8_t Key_Number = Key_Scan();
-
- if(Prime_Mode == 2)
- {
- if(Key_Number == 1)
- {
- LCD_Clear();
- Start_Mode = 1;
- Prime_Mode = 0;
- isCollecting = false;
- }
- }
- else
- {
- if(Key_Number == 1)
- {
- LCD_Clear();
- Start_Mode ^= 1;
- Prime_Mode = 0;
- isCollecting = false;
- }
- }
- if(Prime_Mode == 2)
- {
- if(Key_Number == 2)
- {
- LCD_Clear();
- Threshold_Mode ^= 1;
- }
-
- }
- else
- {
- if(Key_Number == 2)
- {
- LCD_Clear();
- Prime_Mode = 1;
- isCollecting = false;
- }
- }
-
- //设置报警阈值
- if(Key_Number == 3)
- {
- LCD_Clear();
- Prime_Mode = 2;
- isCollecting = false;
-
- if(Threshold_Mode == 0)//高温阈值++
- {
- ++TemperatureMax;
- }
- if(Threshold_Mode == 1)//低温阈值++
- {
- ++TemperatureMin;
- }
- }
- if(Key_Number == 4)
- {
- LCD_Clear();
- Prime_Mode = 2;
- isCollecting = false;
-
- if(Threshold_Mode == 0)//高温阈值++
- {
- --TemperatureMax;
- }
- if(Threshold_Mode == 1)//低温阈值++
- {
- --TemperatureMin;
- }
- }
- }
- void filter_and_smooth(float *data, int size, float *smoothed_data) {
- // 滤除0
- int count = 0;
- for (int i = 0; i < size; i++) {
- if (data[i] != 0) {
- smoothed_data[count++] = data[i];
- }
- }
- // 平滑曲线
- for (int i = 0; i < count - 2; i++) {
- smoothed_data[i] = (smoothed_data[i] + smoothed_data[i + 1] + smoothed_data[i + 2]) / 3.0;
- }
- }

芯片解密