一. 系统概述
本设计系统以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