标题:
STC15F2K60S2单片机控制步进电机程序
[打印本页]
作者:
luruzhan
时间:
2019-6-11 09:29
标题:
STC15F2K60S2单片机控制步进电机程序
最近项目关键技术测试,需要用到单片机控制步进电机驱动一个机械件,因此根据硬件配置编写了一些代码,供大家参考。
硬件配置:STC15F2K60S2单片机、28BYJ-48步进电机(5V、12V兼容)、驱动器为UN2003AN。
代码在附件中。
//此代码比较抽象:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define MotorData P0
uchar phasecw[8] ={0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1,0xf9};//顺时针
void delay(uint a,b)
{
uint i,k,j;
for(i=11;i>0;i--)
{
for(k=a;k>0;k--)
{
for(j=b;j>0;j--);
}
}
}
sbit P1_0=P1^0; //气泵
sbit stop=P1^1;
main()
{
uint n,r,m;
MotorData=0xf0;
while(stop)
{
for(n=6;n>1;n--)
{
for(r=85;r>0;r--)
{
for(m=0;m<8;m++)
{
MotorData=phasecw[m];
delay(100,1);
}
}
if(!stop) delay(100,1); //关机时、电源低于10%时,电机恢复原位,可增加位置
else
{
MotorData=0xf0;
delay(2000,100); //insert power manage
P1_0=0;
delay(2000,100); //insert power manage
P1_0=1;
}
}
for(r=87;r>0;r--)
{
for(m=0;m<8;m++)
{
MotorData=phasecw[m];
delay(100,1);
}
}
MotorData=0xf0;
if(!stop) delay(100,1); //关机时,电机恢复原位 ,可增加位置
else
{
delay(2000,1000);
n=6;
}
}
}
复制代码
上述源码word:
STC15F2K60S2控制步进电机程序.docx
(12.68 KB, 下载次数: 36)
2019-6-11 09:29 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
nsush
时间:
2019-6-13 10:20
如果项目关键,最好用标准的步进电机驱动器。单片机负责脉冲方向会更好点。
作者:
luruzhan
时间:
2019-6-13 17:17
nsush 发表于 2019-6-13 10:20
如果项目关键,最好用标准的步进电机驱动器。单片机负责脉冲方向会更好点。
这个只是用来进行测试关键技术点,产品中会设计为1个整体的模块,程序会更完善。
作者:
18877865862
时间:
2020-4-21 09:03
谢谢大神的分享
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1