一、功能简介
本项目使用Proteus8.12仿真STM32单片机控制器,使用ULN2003电机模块、LCD1602模块、按键模块等。
主要功能:
系统运行后,LCD1602显示电机当前运行档位、方向、状态。可通过按键K4启动与停止,按键K1加速、按键K2减速,按键K3换向;档位可在1-5档。
主要功能如下:
(1)按键功能:具有加速、减速、正转、反转、启动和停止;
(2)显示功能:LCD1602显示档位、方向、运行状态;
(3)电机驱动:ULN2003驱动步进电机;
二、软件设计
//系统参数设定
void sys_parm_set(void)
{
u8 key=0;
key=KEY_Scan(0);
//启动/停止
if(key==KEY4_PRESS)
{
sys_ctrl.run=!sys_ctrl.run;
if(sys_ctrl.run)
lcd1602_show_string(4,1,'RUN ');
else
lcd1602_show_string(4,1,'STOP');
}
//运行中
if(sys_ctrl.run)
{
//方向切换
if(key==KEY3_PRESS)
{
sys_ctrl.dir=!sys_ctrl.dir;
}
//加速
else if(key==KEY1_PRESS)
{
sys_ctrl.gear++;
if(sys_ctrl.gear>5)sys_ctrl.gear=1;
}
//减速
else if(key==KEY2_PRESS)
{
sys_ctrl.gear--;
if(sys_ctrl.gear<1)sys_ctrl.gear=5;
}
step_motor_28BYJ48_send_pulse(4,sys_ctrl.dir,gspeed[sys_ctrl.gear-1],1,sys_ctrl.run);
}
}
//系统参数显示
void sys_parm_show(void)
{
//运行状态
if(sys_ctrl.run)
{
if(sys_ctrl.dir)lcd1602_show_string(14,0,'ZZ');
else lcd1602_show_string(14,0,'FZ');
//档位显示
lcd1602_show_num(5,0,sys_ctrl.gear,1);
}
}
//应用控制系统
void appdemo_show(void)
{
sys_parm_init();//系统参数初始化
step_motor_gpio_init();
KEY_Init();
lcd1602_init();//LCD1602初始化
sys_open_show();//系统初始界面显示
while(1)
{
sys_parm_set();
sys_parm_show();
}
}
三、实验现象