最近正好自己在搞一个小车,经过测试了,可用,有不懂得地方再联系:
驱动用的l298n。
#include<reg52h>
#define uchar unsigned char
#define uint unsigned int
uchar rec_int_flag=0;
void delay_ms(uint x);
void motor_con(uchar angle,uchar speed ,uchar back,uchar direction);
uchar code Fan[8]={0, 0x0b, 0x09, 0x0d, 0x05, 0x07, 0x06, 0x0e};
//1010 ,1011, 1001 ,1101,0101,0111,0110, 1110
uchar code Zhen[8] ={0x0e, 0x06, 0x07, 0x05, 0x0d, 0x09, 0x0b, 0};
// 1110 ,0110 ,0111, 0101,1101,1001,1011,1010
void main()
{
while(1)
{
motor_con(1,20,0,2);
if(rec_int_flag==1)
{
while(1);
}
}
}
void delay_ms(uint x)
{
uchar i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void rev_int(void) interrupt 0
{
rec_int_flag=1;
}
/
函数说明:
direction==0时左轮动,为1时右轮动,为2时直行。
转动角度为(72度angle)。
back==1时代表后退,back==0时代表前进。
speed用于延时speed毫秒来调速。
P0为左轮电机,P1为右轮电机
/
void motor_con(uchar angle,uchar speed ,uchar back,uchar direction)
{
uchar m,n;
switch(back)
{
case 1: //判断前进后退与否 0代表前进
{
for(m=0;m<angle;m++) //前进角度
{
for(n=0;n<8;n++)
{
if(direction==0) P1=Fan[n]; //左转右转或直行。
else if(direction==1) P0=Fan[n];
else {P1=Fan[n];P0=Fan[n];}
delay_ms(speed); //调速
}
}
}break;
case 0:
{
for(m=0;m<angle;m++)
{
for(n=0;n<8;n++)
{
if(direction==0) P1=Zhen[n];
else if(direction==1) P0=Zhen[n];
else {P1=Zhen[n];P0=Zhen[n];}
delay_ms(speed);
}
}
}break;
default: break;
}
}
一样型号的当然不用换了,如果换了,由于分几种情况可,如果电机的类型没变,比如都是两相混合式电机,只要改变相应的驱动电流就可以了,如果类型都变了,比如两相的变成
五相
,三相的,那连硬件
驱动电路
都要变了
以上就是关于步进电机297 298驱动程序全部的内容,包括:步进电机297 298驱动程序、更换了步进电机,驱动程序需要改变吗、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)