51单片机ULN2003控制步进电机,正转10秒停止3秒反转5秒停止3秒,循环。就是往返。50---100分 谢谢。

4相6线步进电机的
2024-12-23 05:35:33
推荐回答(4个)
回答1:

#include
sbit up1=P2^0;
sbit down1=P2^1;
sbit up2=P2^2;
sbit down2=P2^3;
sbit s1=P1^0;

int h;

void delay(int t) //误差 0us
{
unsigned char a,b,c;
for (c=0;c {
for(b=173;b>0;b--)
for(a=143;a>0;a--);
}
}

void motor(int i)
{ if(i==0)
{up1=0;down1=0;up2=0;down2=0;}//停止
if (i==1)
{up1=1;down1=0;up2=1;down2=0;} //正转
if(i==2)
{up1=0;down1=1;up2=0;down2=1;} //反转
}

void R()
{motor(1);
delay(20);
motor(0);
delay(4);
motor(2);
delay(10);
motor(0);
delay(4);
}

void main()
{
R();
h=s1;
if(h==1)
{R();}
else if(h==0)
{motor(0);}
}
额···我是新手,你看看这个烧到单片机里小车行驶是否有正确。还有控制小车停转的时间t,也就是delay的时间我随便设的,到时候你要转10秒还5秒的自己调整下t的值就好了。

回答2:

用系统的定时器也可以做,或者软件编程延时,很 简单啊,你只要找准了两根正反转的线

回答3:

ULN2003是个驱动电路,你只在在单怎机里编程就好了啊,

回答4:

程序已经在你别的问题中给你了,呵呵