【毕业设计】_基于STM32单片机的智能窗帘控制(原理图+源码)
一. 系统概述
该系统以STM32单片机为核心控制单元,提供三种不同的窗帘控制模式:蓝牙控制、手动控制和自动控制。用户可以通过蓝牙或按键直接控制窗帘的开关。在自动模式下,系统会根据实时的温度和光照强度来决定窗帘的开合状态。
二. 仿真概述
- 在仿真启动后,串口助手会显示OK响应,表明连接成功。以下为网页端串口助手的界面:
- 发送十进制值1以拉上窗帘,显示屏上会显示001,表示窗帘已被拉上。
- 发送十进制值2以打开窗帘,显示屏上将显示002,表示窗帘已被打开。
- 按下设置按键可以设定温度和光强的阈值,模式按键则用来切换自动控制和手动控制模式。在手动模式下,用户可以直接控制窗帘的开关状态。
- 按下模式按键时,显示屏将显示“Au”,表示系统处于自动模式。在此模式下,系统会根据设定的温度和光照阈值自动调整窗帘的开关状态。如果温度或光强超出设定阈值,则窗帘会拉上;如果低于阈值,则窗帘会打开。
三.程序设计
#include <main.h>
//
u8 Rxdat;
u8 adc,t,h,m=0,c=0,set=0,th=30,tl=15,hh=30,hl=20;
//
//
void UserDispiayControl(void);
void SetDisplay(void);
void Set(void);
//
int main(void)
{
//Init Star
Usart1_Init(9600);//pa9-10
Lcd1602_Init();//pc0-7 pb0-2
Key_Init();//pa12-15
PCF8591_Init();//pb10-11
Motor_Init();//pb12-15
DHT11_Init();//pa0
//Init End
//display star
Usart1_TxString("ok");
//display end
while(1)
{
//get dat
DHT11_Read_Data(&t,&h);
adc=PCF8591_ADC_Input(0x90,1);
//串口收数据
if(Usart1_GetRxFlag() ==1) //判断是否收到数据
{
Rxdat=Usart1_GetRxDat(); //存数据
Usart1_TxByte(Rxdat); //回传显示
Lcd1602_Write_Num8(0xc0,Rxdat); //显示屏显示
}
//get dat
//key
if(Key4==0)
{
m=~m;
while(Key4 != 0);
}
if(Key3==0)
{
Lcd1602_Write_CD(CMD,0X01);
set++;
if(set==5) set=0;
}
//key
//user+set
Set();
//
}
}
24-32f-35
作者:硬件设计辅导猿