一. 系统概述
本设计的系统以STM32单片机为核心控制器,能够控制气压传感器和温湿度传感器,实时采集气象参数。检测到的气象数据会在显示端进行展示,用户还可以通过软件设置阈值。一旦某个参数超过设定值,系统将启用语音播报模块,告知用户异常情况。
二. 仿真概述
- 在气体模块上,通过滑动变阻器可调节气压值。当气压超过设定阈值时,语音播报模块将发出提示,显示屏上会出现“Voice”字样,显示其工作状态。
- DHT11传感器处同样设有滑动变阻器,用以调整温湿度值。当温湿度超过设定阈值时,语音播报模块会启动,并在显示屏上显示“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