一.系统概述
智能雨刷器系统使用STM32单片机进行主控,通过显示屏显示雨量,系统有自动和手动两种模式,根据设定的阈值可以在自动模式下进行雨刷控制,手动模式下也可以通过按键进行雨刷器的控制,按键还可以进行雨量阈值的设定。

二.仿真概述
1. 默认情况下是手动模式,手动灯亮起

2. 通过按键调节雨刷器的档位,单位档位有90度和180度

3. 按下手动/自动切换按键,切换到自动模式下

4. 调节雨滴量,当雨滴量超过设定阈值就会自动启动雨刷器

三.程序设计
int main(void)
{
while(1)
{
u8 key0flag,key1flag,key2flag,key3flag;//按键标志
Rain= PCF8591_ADC_Input(0x90,0)/3;//雨滴检测
if(KEY0 == 0)
{
delay_ms(75);
if(KEY0 == 0)
{
key0flag =1;
W=~W;
}
else
{
key0flag =0;
W=W;
}
}
if(KEY1 == 0)
{
delay_ms(75);
if(KEY1 == 0)
{
key1flag =1;
M=~M;
}
}
if(KEY2 == 0) { delay_ms(100); if(KEY2 == 0) RainMax = RainMax+20; }
if(KEY3 == 0)
{
delay_ms(100);
if(KEY3 == 0)
{
i++;
if(i>3)
{
i=0;
}
}
}
//
if(W)//开
{
write_str(12,1,(u8*)"ON ");//开
write_str(6,0,(u8*)"D");//档位
write_str(0,0,(u8*)"R");//雨滴
write_str(3,0,(u8*)"H");//阈值
write_str(9,0,(u8*)"M");//模式
write_num(0,1,Rain);
write_num(3,1,RainMax);
if(M)//自动
{
write_str(9,1,(u8*)"Z");//模式
Led1_2=0;
delay_ms(100);
Led1_1=1;
if(Rain>80)
{
write_str(6,1,(u8*)"3");//档位
Motor_Rhythm_418(4,40);
delay_ms(10);
Motor_Rhythm_418(2,40);
}
else if(Rain>60)
{
write_str(6,1,(u8*)"2");//档位
Motor_Rhythm_418(4,40);
delay_ms(500);
Motor_Rhythm_418(2,40);
}
else if(Rain>40)
{
write_str(6,1,(u8*)"1");//档位
Motor_Rhythm_418(4,40);
delay_ms(1000);
Motor_Rhythm_418(2,40);
}
else if(Rain<40)
{
write_str(6,1,(u8*)"0");//档位
Motor_Rhythm_418(0,0);
}
}
else//手动
{
write_str(9,1,(u8*)"S");//模式
Led1_1=0;
delay_ms(100);
Led1_2=1;
if(i==0)
{
write_str(6,1,(u8*)"0");//档位
Motor_Rhythm_418(0,0);
}
if(i==1)
{
write_str(6,1,(u8*)"1");//档位
Motor_Rhythm_418(4,40);
delay_ms(1000);
Motor_Rhythm_418(2,40);
}
if(i==2)
{
write_str(6,1,(u8*)"2");//档位
Motor_Rhythm_418(4,40);
delay_ms(500);
Motor_Rhythm_418(2,40);
}
if(i==3)
{
write_str(6,1,(u8*)"3");//档位
Motor_Rhythm_418(4,40);
delay_ms(10);
Motor_Rhythm_418(2,40);
}
}
}
else//关
{
write_str(0,1,(u8*)" ");//状态
write_str(0,0,(u8*)" ");//状态
write_str(12,1,(u8*)"OFF");//关
write_str(12,0,(u8*)"W");//状态
Motor_Rhythm_418(0,0);
}
}
}
全部0条评论
快来发表一下你的评论吧 !