一. 系统概述
本系统采用 STM32F103 单片机作为核心控制单元,能够通过光照传感器监测书房内的光照强度,并通过温度传感器收集温湿度数据。这些数据会在显示屏上显示,用户可以通过按键设置各参数的阈值。系统还配备了红外传感器,用于监测书房内是否有人。当检测到有人的情况下,若光照强度低于设定阈值,系统将自动开启 LED 灯。同时,若温度或湿度超过预设值,系统将启动空调进行环境调节。
二. 仿真概述
- 系统通过 DHT11 传感器检测温度和湿度,通过光敏电阻模块检测光强,并利用红外传感器判断书房内是否有人。这些信息将通过 OLED 显示屏显示,包括温湿度、光照强度及是否有人状态,同时显示当前设定的阈值。
- 温湿度调节通过 DHT11 上的红色按钮进行,当温湿度超出设定阈值时,系统会自动控制空调进行调节,并通过指示灯显示空调的开关状态。
- 光强的调节通过光敏电阻模块上的滑动变阻器进行。当检测到光照强度低于设定阈值且红外传感器探测到有人的情况下,系统会自动点亮照明灯。
- 用户可以通过按键设置温湿度和光照强度的阈值,调节过程中显示屏将显示“set”字样,提示当前正在调整的参数。
三.程序设计
#include <stm32f10x.h>
#include <delay.h>
#include <ADC_x.h>
#include <Lcd1602.h>
#include <Led.h>
/*==================================*
*======>>>>>> 【ZW】 <<<<<<======*
*==================================*/
#include "OLED.h"
#include "dht11.h"
#include <Key.h>
u8 t,h,l;
u8 set;
u8 th=30,hh=50,ll=20;
u8 key;
int main(void)
{
Adc1_Init();
Led1_Init();
Key_Init();
OLED_Init();
DHT11_Init();
OLED_ShowString(1,1,"temp:");
OLED_ShowString(2,1,"humi:");
OLED_ShowString(3,1,"light:");
OLED_ShowString(4,1,"people:");//OLED_ShowString(3,1,"in");OLED_ShowString(3,1,"absent");
// Led1_High;
// relay_High;
while(1)
{
Key_Scan(&key);//OLED_ShowNum(1,14,key,1);
if(key==3) { set++; if(set>3) set=0; key=0;}
if(set==0) OLED_ShowString(3,13," ");
else OLED_ShowString(3,13,"set");
if(set==1){ if(key==1&&set==1) th++;if(key==2&&set==1) th--; key=0;}
if(set==2){ if(key==1&&set==2) hh++;if(key==2&&set==2) hh--; key=0;}
if(set==3){ if(key==1&&set==3) ll++;if(key==2&&set==3) ll--; key=0;}
DHT11_Read_Data(&t,&h);OLED_ShowNum(1,10,th,2);OLED_ShowNum(2,10,hh,2);
OLED_ShowNum(1,7,t,2);
OLED_ShowNum(2,7,h,2);
l = Get_Adc1();
OLED_ShowNum(3,7,l,2);OLED_ShowNum(3,10,ll,2);
if(Key4==0){ OLED_ShowString(4,8,"in ");}
else { OLED_ShowString(4,8,"absent"); }
if(t>=th|| h>=hh) { relay_High;}
else relay_Low;
if(l<=ll && Key4==0) Led1_High;
else Led1_Low;
}
}
24-32f-03