在key模块中,主要靠()与()函数实现控制,其中()用来进行按键处理,若检测到按键KEY1或KEY2,则赋值与 。
在led模块中,使用函数,通过()与()对控制数码管各部分亮灭的每个引脚进行初始化 。
在motor.c模块中,通过()函数对控制A、B、C、D四个线圈的PF0、PF1、PF2、PF3进行初始化 。
在main.c模块中,采用1-2相励磁法驱动步进电机,1相和2相交替导通 。在本系统中分别由PF0、PF1、PF2和PF3分别来控制线圈A、B、C、D的通电,因此采用如下方法通过对四个引脚的状态的控制,分别按A→AB→B→BC→C→CD→D→DA的顺序对线圈进行充放电从而产生电流驱动步进电机 。通过()进行对电机转机转速的控制,针对不同档位采用大小不同的参数speed,档位越低speed值越大,从而在每一轮次对线圈进行充放电的过程中延迟更长的时间 。通过open和level两个参数来控制步进电机的是否工作与其工作档位 。当按下KEY1键时,响应,此时先判断open的值,若open为1则置0;若open为0则置1且level默认为1 。当按下KEY2键时,响应,此时先判断level的值,再使其加一,当level为4时将其置为1,再通过()函数控制引脚从而控制数码管各部分的亮灭,使得数码管能够显示对应档位的数字 。
5、软件开发环境 5.1软件开发环境安装和配置
开发工具为RT-。
访问官网,在官网下载最新的 RT-软件安装包 。
使用工具配合开发板上的下载电路可实现串口下载,此外还需下载CH340驱动 。
文章插图
5.2工程文件的目录结构和文件
本工程文件共分为4个模块,包括对应的按键模块key.h与key.c用来读取是否进行按键操作,还有数码管对应的模块led.h与led.c来处理按键后的数码管,与最后的步进电机的模块motor.h与motor.c来处理步进电机的转动速度,然后还有main.c文件,以进入主函数 。
首先打开RT-,导入我们建好的裸板模板工程,之后将工程文件中的.h头文件与.cpp文件复制,粘贴到创建的工程下的文件夹内,点击按下图进行配置,使编译生成.hex 文件 。
然后点击构建按钮完成编译构建,之后打开下载到电路板上,在电路板上进行测试 。
6、运行和测试
项目总体的接线情况如下:
上电后,首先数码管显示为0,步进电机尚未工作 。
首先按下KEY1按键,此时系统以默认的最低档位1档开始工作,数码管数字显示为1,步进电机开始工作,旋转速度为1档,较慢 。
再按下KEY2按键,此时数码管数字显示为2,步进电机旋转速度提升至2档 。
此时,连续两次按下KEY2按键,此时数码管数字显示先升到3再升到4,步进电机旋转速度提升至4档,为最高档 。
再次按下KEY2按键后,数码管数字显示变为1,步进电机旋转速度降至1档 。
最后按下KEY1按键,数码管数字显示变为0,步进电机停止工作 。
- ORIN/征程5/骁龙/ARM 盘一盘现有主流车规级芯片
- 丝杆电机选型计算公式,请问丝杠的选型怎么计算
- 通过RS485串口对力川A6伺服电机的调试
- 350w电机能用60v电池吗
- uln2003a是什么芯片
- 电源芯片工作温度的计算
- STM32通过读取芯片唯一ID号来实现程序的保护,防止被抄袭
- 【风力发电机模型】风力涡轮机模型包括叶片、机舱、变桨和偏航驱动、发电机和控制系统
- 如何自己更换汽车发电机皮带
- 拖拉机、联合收割机、旋耕机、播种机、覆膜机、插秧机的发电机能不能通用?