一.系统概述
本系统以STM32单片机为核心控制器,集成了气压传感器和温湿度传感器,用于实时采集气象参数。采集到的数据通过显示端进行展示,并支持在软件程序中设定阈值。一旦某个参数超过设定的阈值,系统将触发语音播报模块,实时报告异常情况。
二.仿真概述
- 气压传感器模块配备滑动变阻器,用户可通过调节以模拟气压值的变化。当检测到气压超过设定的阈值时,系统将启动语音播报模块并在显示屏上显示“Voice”字样,指示语音播报的工作状态。
- 温湿度传感器模块同样配备滑动变阻器,用户可以调节以模拟温湿度值的变化。当检测到温湿度超过设定的阈值时,系统将启动语音播报模块并在显示屏上显示“Voice”字样,表示语音播报模块处于激活状态。
- 当所有气象参数均未超过设定的阈值时,语音播报模块停止播报,显示屏上不再显示“Voice”字样,保持正常工作状态。
三.程序设计
#include <main.h>
u8 t,h,adc;
u8 th=30,hh=40,adch=50;
void Init(void);
int main(void)
{
Init();
while(1)
{
adc=Get_Adc(ADC_Channel_1);
OLED_ShowNum(3,6,adc,2);OLED_ShowString(3,8,"Pa");
DHT11_Read_Data(&t,&h);
OLED_ShowNum(1,6,t,2);OLED_ShowString(1,8,"C");
OLED_ShowNum(2,6,h,2);OLED_ShowString(2,8,"%");
OLED_ShowNum(1,11,th,2);
OLED_ShowNum(2,11,hh,2);
OLED_ShowNum(3,11,adch,2);
if(t>th|h>hh|adc>adch)
{
LedC1_1;
OLED_ShowString(4,1,"voice");
delay_ms(500);
OLED_ShowString(4,1," ");
}
else
{
LedC1_0;
OLED_ShowString(4,1," ");
}
}
}
void Init(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//2:2
/* system Init */
Adc_Init();
/* HardWare Init */
OLED_Init();
while(DHT11_Init());
LedC_Init();
OLED_ShowString(1,1,"Temp:");
OLED_ShowString(2,1,"Humi:");
OLED_ShowString(3,1,"Atmo:");
}
24-32f-01