一. 系统概述
系统采用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