一.系统概述
本次设计的系统是以STM32F103单片机作为核心控制器,可以通过光照传感器对书房内的光照强度进行采集,可以通过温度传感器完成对温湿度的采集,并且可以将采集到的光照强度和温湿度在显示屏上进行显示,同时可以通过按键对各个参数的阈值进行设定,可以通过红外传感器完成对是否有人进行书房的监测,当有人且光照强度低于设定阈值后会控制LED灯亮,当温度或者湿度超过网值后会控制空调启动,进行环境调节。

二.仿真概述
1. 系统内通过DHT11进行温湿度检测,光敏电阻模块进行光强检测,红外检测来检测是否有人,通过OLED显示屏显示检测到的温湿度、光强以及是否有人,还可以显示设定的阈值。

2. 通过调节DHT11红色按钮进行温湿度调节,当检测到温湿度超过阈值后就会控制空调进行调节,空调的开关闭合且指示灯亮。

3. 通过调节光敏电阻模块的滑动变阻器进行光强调节,当检测到光强低于阈值且红外检测模块检测到人就会控制照明灯亮起。

4. 通过按键可以设置温湿度和光强阈值,调节哪个参数阈值就会在显示屏上显示“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&spm=1001.2101.3001.5002&articleId=139822155&d=1&t=3&u=4761df6bf9c14e6bb4b0f6e0f4a44f68)
6734

被折叠的 条评论
为什么被折叠?



