一.系统概述
系统内使用STM32单片机进行主控,系统内有三种控制方式,分别是蓝牙控制、手动控制、自动控制。蓝牙端直接控制开关窗帘,按键也能直接控制开关窗帘,自动模式下需要根据温度和光强来确定是否开窗和关窗。
二.仿真概述
1. 仿真开始运行在串口助手端就能接受OK响应指令,代表连接成功,网页端串口助手如下:
波特律动 串口助手https://serial.keysking.com/
2. 发送十进制1控制拉上窗帘,显示屏上显示的001代表拉窗帘
3. 发送十进制2控制打开窗帘,显示屏上显示的002代表打开窗帘
4. 按下设置按键可以对温度和光强阈值进行设定,模式按键可以切换自动/手动,手动模式下可以直接控制窗帘的打开和关闭
5. 按下模式按键显示屏上显示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();
//
}
}