一.系统概述
智能雨刷器系统使用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条评论
快来发表一下你的评论吧 !