单片机源程序如下:
/*************** writer:shopping.w ******************/
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code FFW[]=
{
0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09
};
uchar code REV[]=
{
0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01
};
//sbit K1 = P3^0;
//sbit K2 = P3^1;
//sbit K3 = P3^2;
uchar N1 = 1;// 电机转动圈数
uchar N2 = 1;// 电机转动圈数
uchar N3 = 1;// 电机转动圈数
uchar N4 = 1;// 电机转动圈数
void DelayMS(uint ms);
void SETP_MOTOR1_FFW(uchar n);//left-motor1
void SETP_MOTOR1_REV(uchar n);//right-motor2
void SETP_MOTOR2_FFW(uchar n);//left-motor1
void SETP_MOTOR2_REV(uchar n);//right-motor2
void SETP_MOTOR3_FFW(uchar n);//left-motor1
void SETP_MOTOR3_REV(uchar n);//right-motor2
void SETP_MOTOR4_FFW(uchar n);//left-motor1
void SETP_MOTOR4_REV(uchar n);//right-motor2
void main()
{
int b=0;
int start=0;//电机开始标志
int flag=0;//电机停止标志
//先把电机角度归零
P1 = 0x03;
P2 = 0x03;
P3 = 0x03;
P0 = 0x03;
while(1)
{
if(flag==0)
{
if(start == 0)
{
// P0 = 0xfd; //正转1个角度
SETP_MOTOR1_FFW(N1);//qian jin
SETP_MOTOR2_FFW(N2);//qian jin
SETP_MOTOR3_FFW(N3);//qian jin
SETP_MOTOR4_FFW(N4);//qian jin
start=1;
DelayMS(1000);
}
else if(start == 1)
{
//反转1个角度
SETP_MOTOR1_REV(N1);//qian jin
SETP_MOTOR2_REV(N2);//qian jin
SETP_MOTOR3_REV(N3);//qian jin
SETP_MOTOR4_REV(N4);//qian jin
flag=2;
start=2;
DelayMS(1000);
}
}
else if(flag==0)//停止转动
{
P1 = 0x03;
P2 = 0x03;
P3 = 0x03;
P0 = 0x03;
}
}
}
void DelayMS(uint ms)
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
void SETP_MOTOR1_FFW(uchar n)//left-motor1
{
uchar i,j;
for(i=0;i<1*n;i++)
{
for(j=0;j<8;j++)
{
// if(K3 == 0) break;
P1 = FFW[j];
DelayMS(25);
}
}
}
//以下的for(i=0;i<1*n;i++)中1是代表转动角度控制,齿轮数不同,数据不同。
void SETP_MOTOR1_REV(uchar n)//right-motor2
{
uchar i,j;
for(i=0;i<1*n;i++)
{
for(j=0;j<8;j++)
{
// if(K3 == 0) break;
P1 = REV[j];
DelayMS(25);
}
}
}
void SETP_MOTOR2_FFW(uchar n)//left-motor1
{
uchar i,j;
for(i=0;i<1*n;i++)
{
for(j=0;j<8;j++)
{
// if(K3 == 0) break;
P2 = FFW[j];
DelayMS(25);
}
}
}
void SETP_MOTOR2_REV(uchar n)//right-motor2
{
uchar i,j;
for(i=0;i<1*n;i++)
{
for(j=0;j<8;j++)
{
// if(K3 == 0) break;
P2 = REV[j];
DelayMS(25);
}
}
}
void SETP_MOTOR3_FFW(uchar n)//left-motor1
{
uchar i,j;
for(i=0;i<1*n;i++)
{
for(j=0;j<8;j++)
{
// if(K3 == 0) break;
P3 = FFW[j];
DelayMS(25);
}
}
}
void SETP_MOTOR3_REV(uchar n)//right-motor2
{
uchar i,j;
for(i=0;i<1*n;i++)
{
for(j=0;j<8;j++)
{
// if(K3 == 0) break;
P3 = REV[j];
DelayMS(25);
}
}
}
void SETP_MOTOR4_FFW(uchar n)//left-motor1
{
uchar i,j;
for(i=0;i<1*n;i++)
{
for(j=0;j<8;j++)
{
// if(K3 == 0) break;
P0 = FFW[j];
DelayMS(25);
}
}
}
void SETP_MOTOR4_REV(uchar n)//right-motor2
{
uchar i,j;
for(i=0;i<1*n;i++)
{
for(j=0;j<8;j++)
{
// if(K4 == 0) break;
P0 = REV[j];
DelayMS(25);
}
}
}
全部资料51hei下载地址:
1个单片机.zip
(110.79 KB, 下载次数: 38)
|