步进电机正反转

程序一:(二相励磁法)
#include
#define uchar unsigned char
#define uint unsigned int
sbit d1=P1^0;
sbit d2=P1^1;
sbit d3=P1^2;
sbit d4=P1^3;
#define A  {d1=1,d2=0,d3=0,d4=0;}
#define B  {d1=0,d2=1,d3=0,d4=0;}
#define C  {d1=0,d2=0,d3=1,d4=0;}
#define D  {d1=0,d2=0,d3=0,d4=1;}
#define E  {d1=0,d2=0,d3=0,d4=0;}
#define AB {d1=1,d2=1,d3=0,d4=0;}
#define BC {d1=0,d2=1,d3=1,d4=0;}
#define CD {d1=0,d2=0,d3=1,d4=1;}
#define DA {d1=1,d2=0,d3=0,d4=1;}
void delay(uchar t)
{
	while(--t);
}
void delayMS(uchar t)
{
	while(t--)
	{
		delay(245);
		delay(245);
	}
}
uchar speed;
void main()
{
	uint i=512;
	speed=8;
	E
	while(i--)
	{
		AB
		delayMS(speed);
		BC
		delayMS(speed);
		CD
		delayMS(speed);
		DA
		delayMS(speed);
	}
	i=512;
	E
	while(i--)
	{
		DA
		delayMS(speed);
		CD
		delayMS(speed);
		BC
		delayMS(speed);
		AB
		delayMS(speed);
	}
}

程序二:(一相励磁法)
#include
#define uchar unsigned char
#define uint unsigned int
sbit d1=P1^0;
sbit d2=P1^1;
sbit d3=P1^2;
sbit d4=P1^3;
#define A {d1=1,d2=0,d3=0,d4=0;}
#define B {d1=0,d2=1,d3=0,d4=0;}
#define C {d1=0,d2=0,d3=1,d4=0;}
#define D {d1=0,d2=0,d3=0,d4=1;}
#define E {d1=0,d2=0,d3=0,d4=0;}
void delay(uchar t)
{
	while(--t);
}
void delayMS(uchar t)
{
	while(t--)
	{
		delay(245);
		delay(245);
	}
}
uchar speed;
void main()
{
	uint i=512;
	speed=8;
	E
	while(i--)
	{
		A
		delayMS(speed);
		B
		delayMS(speed);
		C
		delayMS(speed);
		D
		delayMS(speed);
	}
	i=512;
	E
	while(i--)
	{
		D
		delayMS(speed);
		C
		delayMS(speed);
		B
		delayMS(speed);
		A
		delayMS(speed);
	}
}

  

转载于:https://www.cnblogs.com/fengyepiaolei/archive/2011/11/18/2254586.html

你可能感兴趣的:(步进电机正反转)