#include <reg52.h>
//4相8拍
unsigned char code tableCCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; //逆时针旋转相序表
unsigned char code tableCW[8]={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; //顺时针旋转相序表
unsigned char code ZZ[8]={0xd5,0xf5,0x75,0x7d,0x5d,0x5f,0x57,0xd7};//28BYJ-48正时钟旋转相序表
void BGdelay(unsigned int n)//步进延时
{
unsigned int i;
for(n;n>0;n--)
for(i=96;i>0;i--);
}
void motorTurn_ccw() //转1圈,逆时针
{
int i,j;
for(j=0;j<8;j++) //电机内部的转子旋转一周
{
for(i=0;i<8;i++) //旋转45度, 8*5.625°=45°
{
// P2=tableCW[i];
P2=ZZ[i];
BGdelay(2); //调节转速
}
}
}
void interrupt_0() interrupt 0
{ int r;
int N=64;
for(r=0;r<N;r++)
{
motorTurn_ccw(); //电机逆时针转
}
}
void main()
{
//减速步进电机,减速比1/64,所以N=64时,步进电机外主轴转一圈
// P2=0xff;
EA=1;
EX0 =1;
IT0=0;
while(1);
}
|