本设计由STC89C52单片机电路+L298N电机驱动电路+震动传感器模块电路+按键电路+LCD1602液晶显示电路+电源电路组成。
1、按键1按下,电机1启动,同时液晶显示:Importing。当震动传感器检测到震动后,电机1停止转动,同时,液晶显示:End of feed。
2、通过按键2可以设置电机2转动的时间,即5秒或10秒。按下按键3后,电机2启动,同时液晶显示:Exporting,时间到后,电机停止转动,液晶显示:End of material。
3、液晶显示电机2转动倒计时时间。
4、系统上电后,液晶显示:Charger system。
完整版 电路图和程序代码 下载地址
https://pan.baidu.com/s/1SBBDTfg5sNNkMKxkh9LmkQ?pwd=8888
部分代码展示
unsigned char pwmRigh=1; //pwm调整
unsigned char pwmLeft=1;
bit timeFlag = 0;
static bit rekey =0;//防止重复按下
unsigned int timeLater =0;//延时
void Init_Timer0(void);
void main (void)
{
ENA = 0;
ENB = 0;
Init_Timer0(); //定时器0初始化
DelayMs(10); //延时有助于稳定
LCD_Init(); //初始化液晶
DelayMs(20); //延时有助于稳定
LCD_Clear();
IN1 = 1; //控制方向
IN2 = 0;
IN3 = 1; //控制方向
IN4 = 0;
pwmRigh=1; //pwm调整
pwmLeft=1;
if(timeFlag == 0)
{
LCD_Write_String(0,0,"Charger system 1");//显示第一行
}
else
{
LCD_Write_String(0,0,"Charger system 2");//显示第一行
}
LCD_Write_String(0,1,"JinOK ");//显示
LCD_Write_String(8,1,"ChuOK ");//显示
while (1) //主循环
{
if(zhenD == 0) //震动
{
pwmRigh=1; //pwm调整
LCD_Write_String(0,1,"JinOK ");//显示
}
if(timeLater > 0 )timeLater--; //延时处理
else
{
pwmLeft=1; //pwm调整
LCD_Write_String(8,1,"ChuOK ");//显示
}
if(timeFlag == 0) //时间选择显示
{
LCD_Write_String(0,0,"Charger system 1");//显示
}
else
{
LCD_Write_String(0,0,"Charger system 2");//显示
}
if((key1==0)||(key2==0)||(key3==0)) //检测到按键按下
{
if(rekey == 0)//防止重复按下
{
DelayMs(20);
if(key3==0)//确认按键按下
{
rekey =1;
pwmRigh=6; //pwm调整
LCD_Write_String(0,1,"JinLiao ");//显示
}
else if (key2==0)
{
rekey =1;
if(timeFlag == 0) timeFlag = 1; //时间切换
else timeFlag = 0 ;
}
else if (key1==0)
{
rekey =1;
pwmLeft=6; //pwm调整
LCD_Write_String(8,1,"ChuLiao ");//显示
if(timeFlag == 0) timeLater = 175;
if(timeFlag == 1) timeLater = 350;
}
}
}
else
{rekey =0 ;} //防止重复按下
DelayMs(20);
}
}
完整版 电路图和程序代码 下载地址