📄 step.c
字号:
Back_line(); //回零
}
else if(KEY==3)
{
FLAG1=1; //显示切换标志位1(显示速度)
Led1[0]=SpeedX%10;Led1[1]=(SpeedX%100)/10;Led1[2]=SpeedX/100;Led1[3]=10;//显示当前速度
Led1[4]=SpeedY%10;Led1[5]=(SpeedY%100)/10;Led1[6]=SpeedY/100;Led1[7]=10;
while(1)
{
KEY=0; //清键值
FLAG=1; //数码管闪烁标志位1(第1位闪烁)
if(KEY==5)
{
KEY=0; //清键值
Led1[0]+=1;
while(Led1[0]>9)
Led1[0]=0;
}
else if(KEY==3)
break;
}
while(1)
{
KEY=0; //清键值
FLAG=2; //数码管闪烁标志位2(第2位闪烁)
if(KEY==5)
{
KEY=0; //清键值
Led1[1]+=1;
while(Led1[1]>9)
Led1[1]=0;
}
else if(KEY==3)
break;
}
while(1)
{
KEY=0; //清键值
FLAG=3; //数码管闪烁标志位3(第3位闪烁)
if(KEY==5)
{
KEY=0; //清键值
Led1[2]+=1;
while(Led1[2]>9)
Led1[2]=0;
}
else if(KEY==3)
break;
}
while(1)
{
KEY=0; //清键值
FLAG=5; //数码管闪烁标志位5(第5位闪烁)
if(KEY==5)
{
KEY=0; //清键值
Led1[4]+=1;
while(Led1[4]>9)
Led1[4]=0;
}
else if(KEY==3)
break;
}
while(1)
{
KEY=0; //清键值
FLAG=6; //数码管闪烁标志位6(第6位闪烁)
if(KEY==5)
{
KEY=0; //清键值
Led1[5]+=1;
while(Led1[5]>9)
Led1[5]=0;
}
else if(KEY==3)
break;
}
while(1)
{
KEY=0; //清键值
FLAG=7; //数码管闪烁标志位7(第7位闪烁)
if(KEY==5)
{
KEY=0; //清键值
Led1[6]+=1;
while(Led1[6]>9)
Led1[6]=0;
}
else if(KEY==3)
break;
}
KEY=0; //清键值
FLAG=0; //数码管闪烁标志位0(无闪烁)
SpeedX=Led1[0]+Led1[1]*10+Led1[2]*100;//计算并存储所设速度
SpeedY=Led1[4]+Led1[5]*10+Led1[6]*100;
}
else if(KEY==4)
{
Led2[0]=Xe%10;Led2[1]=Xe/10;Led2[2]=11;Led2[3]=11;//显示当前坐标
Led2[4]=Ye%10;Led2[5]=Ye/10;Led2[6]=11;Led2[7]=11;
FLAG1=0; //显示切换标志位0(显示坐标)
while(1)
{
KEY=0; //清键值
FLAG=1; //数码管闪烁标志位1(第1位闪烁)
if(KEY==6)
{
KEY=0; //清键值
Led2[0]+=1;
while(Led2[0]>9)
Led2[0]=0;
}
else if(KEY==4)
break;
}
while(1)
{
KEY=0; //清键值
FLAG=2; //数码管闪烁标志位2(第2位闪烁)
if(KEY==6)
{
KEY=0; //清键值
Led2[1]+=1;
while(Led2[1]>9)
Led2[1]=0;
}
else if(KEY==4)
break;
}
while(1)
{
KEY=0; //清键值
FLAG=5; //数码管闪烁标志位5(第5位闪烁)
if(KEY==6)
{
KEY=0; //清键值
Led2[4]+=1;
while(Led2[4]>9)
Led2[4]=0;
}
else if(KEY==4)
break;
}
while(1)
{
KEY=0; //清键值
FLAG=6; //数码管闪烁标志位6(第6位闪烁)
if(KEY==6)
{
KEY=0; //清键值
Led2[5]+=1;
while(Led2[5]>9)
Led2[5]=0;
}
else if(KEY==4)
break;
}
KEY=0; //清键值
FLAG=0; //数码管闪烁标志位0(无闪烁)
Xe=Led2[1]*10+Led2[0];//Led2[3]*1000+Led2[2]*100+Led2[1]*10+Led2[0];//计算并存储所设坐标
Ye=Led2[5]*10+Led2[4];//Led2[7]*1000+Led2[6]*100+Led2[5]*10+Led2[4];
}
while(KEY==7) //电机X单独运行
{
FLAG1=1; //显示切换标志位1(显示速度)
time0_tmp=0x4000; //改变定时显示初值
Led1[4]=0;Led1[5]=0;Led1[6]=0;Led1[7]=0;
Led1[0]=SpeedX%10;Led1[1]=(SpeedX%100)/10;Led1[2]=SpeedX/100;Led1[3]=10;//显示X电机速度
for(i=0;i<8;i++)
{
P1=StepX1[i];
// time1_int(Tx);
delay10ms(6000/SpeedX);
}
}
while(KEY==8) //电机Y单独运行
{
FLAG1=1; //显示切换标志位1(显示速度)
time0_tmp=0x4000; //改变定时显示初值
Led1[0]=0;Led1[1]=0;Led1[2]=0;Led1[3]=0;
Led1[4]=SpeedY%10;Led1[5]=(SpeedY%100)/10;Led1[6]=SpeedY/100;Led1[7]=10;//显示Y电机速度
for(i=0;i<8;i++)
{
P1=StepY1[i];
// time1_int(Tx);
delay10ms(6000/SpeedY);
}
}
}
//------------------------------------------------------------------------------------
// 函数名称:Go_line()
// 函数功能:直线差补算法---前进
//------------------------------------------------------------------------------------
void Go_line(void)
{
unsigned int i,j;
time0_tmp=0x4000; //改变定时显示初值
Nxy=Xe+Ye; //计算总步数
if(FLAG2==1) //电机正反转切换标志位1(让电机仅正转1次)
return;
while(Nxy!=0) //差补算法
{
if(Fm>=0)
{
for(j=0;j<circle;j++)
{
for(i=0;i<8;i++)
{
P1=StepX1[i];
delay10ms(6000/SpeedX);
// time1_int(Tx);
}
}
Xi+=1;
Fm-=Ye;
}
else
{
for(j=0;j<circle;j++)
{
for(i=0;i<8;i++)
{
P1=StepY1[i];
delay10ms(6000/SpeedY);
// time1_int(Ty);
}
}
Yi+=1;
Fm+=Xe;
}
Nxy--;
FLAG2=1; //电机正反转切换标志位1(正转)
Led2[3]=Xi/1000;Led2[2]=(Xi%1000)/100;Led2[1]=(Xi%100)/10;Led2[0]=Xi%10;//显示当前坐标
Led2[7]=Yi/1000;Led2[6]=(Yi%1000)/100;Led2[5]=(Yi%100)/10;Led2[4]=Yi%10;
}
}
//------------------------------------------------------------------------------------
// 函数名称:Back_line()
// 函数功能:直线差补算法---回零
//------------------------------------------------------------------------------------
void Back_line(void)
{
unsigned int i,j;
time0_tmp=0x4000; //改变定时显示初值
Nxy=Xe+Ye; //计算总步数
Fm=0; //加工点偏差置0
if(FLAG2==0) //电机正反转切换标志位0(让电机仅反转1次)
return;
while(Nxy!=0)
{
if(Fm>=0)
{
for(j=0;j<circle;j++)
{
for(i=0;i<8;i++)
{
P1=StepX2[i];
// time1_int(Tx);
delay10ms(6000/SpeedX);
}
}
Xi-=1;
Fm-=Ye;
}
else
{
for(j=0;j<circle;j++)
{
for(i=0;i<8;i++)
{
P1=StepY2[i];
// time1_int(Ty);
delay10ms(6000/SpeedY);
}
}
Yi-=1;
Fm+=Xe;
}
Nxy--;
FLAG2=0; //电机正反转切换标志位0(反转)
Led2[3]=Xi/1000;Led2[2]=(Xi%1000)/100;Led2[1]=(Xi%100)/10;Led2[0]=Xi%10;//显示当前坐标
Led2[7]=Yi/1000;Led2[6]=(Yi%1000)/100;Led2[5]=(Yi%100)/10;Led2[4]=Yi%10;
}
}
//------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -