STM32单片机步进电机控制系统设计案例

控制/MCU

1814人已加入

描述

一、功能简介

本项目使用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();

}

}

三、实验现象

LCD1602

LCD1602

LCD1602

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分