📄 ctrl.c
字号:
}
//=========================================================================================
//按键设定状态
//=========================================================================================
void Key_Scan( )
{
unsigned int key,i;
key=*P_IOB_Data|0xff0c;
Delay(5000);
if(key==*P_IOB_Data|0xff0c)
{
switch(key)
{
case 0xfffe:{
if(Mode==4)
{
Mode=0;
LCD_Display(0,'E');
LCD_Display(1,'N');
LCD_Display(2,'D');
for(i=4;i<12;i++)
LCD_Display(i,' ');
Play(2);
}
else if(Mode==0)
{
Mode=1;
LCD_Display(0,'L');
LCD_Display(1,'N');
LCD_Display(2,'E');
Display_Line( );//可通过参数选择线性
Play(1);
}
else if(Mode==1)
{
Mode=2;
LCD_Display(0,'C');
LCD_Display(1,'i');
LCD_Display(2,'r');
Display0( );
Play(3);
}
else if(Mode==2)
{
Mode=3;
LCD_Display(0,'D');
LCD_Display(1,'o');
LCD_Display(2,'t');
Display0( );
Play(19);
}
else if(Mode==3)
{
Mode=4;
if(Change1=0)
{
Change1=1;
LCD_Display(15,'$');
}
LCD_Display(0,'T');
LCD_Display(1,'C');
LCD_Display(2,'K');
X_Locate[0]=0;
Y_Locate[0]=0;
LCD_Display(24,'0');
LCD_Display(30,'0');
for(i=4;i<12;i++) for(i=4;i<12;i++)
LCD_Display(i,' ');
Play(4);
}
break;
}
case 0xfffd:{
if(Change==4)
{
Change=0;
LCD_Display(13,'X');
LCD_Display(14,'1');
}
else if(Change==0)
{
Change=1;
LCD_Display(13,'X');
LCD_Display(14,'0');
}
else if(Change==1)
{
Change=2;
LCD_Display(13,'Y');
LCD_Display(14,'2');
}
else if(Change==2)
{
Change=3;
LCD_Display(13,'Y');
LCD_Display(14,'1');
}
else if(Change==3)
{
Change=4;
LCD_Display(13,'Y');
LCD_Display(14,'0');
}
break;
}
case 0xffef:{
if(Change==0)
{
if(Change1)
{
if(X_Locate[2]==9)
X_Locate[2]=0;
else
X_Locate[2]++;
LCD_Display(21,X_Locate[2]+0x0030);
}
else
{
if(X_Lable[1]==9)
X_Lable[1]=0;
else
X_Lable[1]++;
LCD_Display(5,X_Lable[1]+0x0030);
}
}
else if(Change==1)
{
if(Change1)
{
if(X_Locate[1]==9)
X_Locate[1]=0;
else
X_Locate[1]++;
LCD_Display(22,X_Locate[1]+0x0030);
}
else
{
if(X_Lable[0]==9)
X_Lable[0]=0;
else
X_Lable[0]++;
LCD_Display(6,X_Lable[0]+0x0030);
}
}
else if(Change==2)
{
if(Change1)
{
if(Y_Locate[3]==9)
Y_Locate[3]=0;
else
Y_Locate[3]++;
LCD_Display(26,Y_Locate[3]+0x0030);
}
else
{
if(Y_Lable[2]==9)
Y_Lable[2]=0;
else
Y_Lable[2]++;
LCD_Display(8,Y_Lable[2]+0x0030);
}
}
else if(Change==3)
{
if(Change1)
{
if(Y_Locate[2]==9)
Y_Locate[2]=0;
else
Y_Locate[2]++;
LCD_Display(27,Y_Locate[2]+0x0030);
}
else
{
if(Y_Lable[1]==9)
Y_Lable[1]=0;
else
Y_Lable[1]++;
LCD_Display(9,Y_Lable[1]+0x0030);
}
}
else if(Change==4)
{
if(Change1)
{
if(Y_Locate[1]==9)
Y_Locate[1]=0;
else
Y_Locate[1]++;
LCD_Display(28,Y_Locate[1]+0x0030);
}
else
{
if(Y_Lable[0]==9)
Y_Lable[0]=0;
else
Y_Lable[0]++;
LCD_Display(10,Y_Lable[0]+0x0030);
}
}
break;
}
case 0xffdf:{
if(Change==0)
{
if(Change1)
{
if(X_Locate[2]==0)
X_Locate[2]=9;
else
X_Locate[2]--;
LCD_Display(21,X_Locate[2]+0x0030);
}
else
{
if(X_Lable[1]==0)
X_Lable[1]=9;
else
X_Lable[1]--;
LCD_Display(5,X_Lable[1]+0x0030);
}
}
else if(Change==1)
{
if(Change1)
{
if(X_Locate[1]==0)
X_Locate[1]=9;
else
X_Locate[1]--;
LCD_Display(22,X_Locate[1]+0x0030);
}
else
{
if(X_Lable[0]==0)
X_Lable[0]=9;
else
X_Lable[0]--;
LCD_Display(6,X_Lable[0]+0x0030);
}
}
else if(Change==2)
{
if(Change1)
{
if(Y_Locate[3]==0)
Y_Locate[3]=9;
else
Y_Locate[3]--;
LCD_Display(26,Y_Locate[3]+0x0030);
}
else
{
if(Y_Lable[2]==0)
Y_Lable[2]=9;
else
Y_Lable[2]--;
LCD_Display(8,Y_Lable[2]+0x0030);
}
}
else if(Change==3)
{
if(Change1)
{
if(Y_Locate[2]==0)
Y_Locate[2]=9;
else
Y_Locate[2]--;
LCD_Display(27,Y_Locate[2]+0x0030);
}
else
{
if(Y_Lable[1]==0)
Y_Lable[1]=9;
else
Y_Lable[1]--;
LCD_Display(9,Y_Lable[1]+0x0030);
}
}
else if(Change==4)
{
if(Change1)
{
if(Y_Locate[1]==0)
Y_Locate[1]=9;
else
Y_Locate[1]--;
LCD_Display(28,Y_Locate[1]+0x0030);
}
else
{
if(Y_Lable[0]==0)
Y_Lable[0]=9;
else
Y_Lable[0]--;
LCD_Display(10,Y_Lable[0]+0x0030);
}
}
break;
}
case 0xffbf:{
Setting=0;
LCD_Display(13,' ');
LCD_Display(14,' ');
LCD_Display(15,' ');
Change=4;
Change1=1;
break;
}
case 0xff7f:{
if(Change1==0)
{
Change1=1;
LCD_Display(15,'$');
}
else
{
Change1=0;
LCD_Display(15,' ');
}
break;
}
default: break;
}
}
}
//=========================================================================================
//沿轨迹定位
//=========================================================================================
void Orientation( )
{
float x_temp,y_temp;
unsigned int IOA;
unsigned int up;
IOA=*P_IOA_Data;
if(IOA&NO3||IOA&NO6)
up=1;
else if(IOA&NO1||IOA&NO8)
up=0;
//
if((IOA&0x00ff)==0)
{
Stop=1;
}
else if(IOA&NO3&&IOA&NO6) //斜向上45度
{
x_temp=X+Step1;
y_temp=Y+Step1;
}
else if(IOA&NO4&&IOA&NO5&&IOA&NO7)
{
x_temp=X+Step1;
y_temp=Y-Step1;
}
else if(IOA&NO4&&IOA&NO5) //向前
{
x_temp=X+Step1;
y_temp=Y;
}
else if(IOA&NO1&&IOA&NO8) //斜向下45度
{
x_temp=X+Step1;
y_temp=Y-Step1;
}
else if(IOA&NO2&&IOA&NO7)
{
if(up==1) //向上
{
x_temp=X;
y_temp=Y+Step1;
}
else if(up==0) //向下
{
x_temp=X;
y_temp=Y-Step1;
}
}
else if(IOA&0x00ff==NO7)
{
x_temp=X;
y_temp=Y+Step1;
}
else if(IOA&0x00ff==NO6)
{
x_temp=X+Step1;
y_temp=Y+Step1;
}
else if(IOA&0x00ff==NO4)
{
x_temp=X+Step1;
y_temp=Y;
}
//
else if(IOA&NO2&&IOA&NO4)//斜向上75度
{
x_temp=X+Step1;
y_temp=Y+Step2;
}
else if(IOA&NO3&&IOA&NO4)
{
x_temp=X+Step1; //斜向上45度
y_temp=Y+Step1;
}
else if(IOA&NO4&&IOA&NO6)
{
if(up==1) //向上
{
x_temp=X;
y_temp=Y+Step1;
}
else if(up==0) //向下
{
x_temp=X;
y_temp=Y-Step1;
}
}
else if(IOA&NO1&&IOA&NO6)
{
x_temp=X;
y_temp=Y+Step1;
}
else if(IOA&NO4&&IOA&NO1)
{
x_temp=X;
y_temp=Y+Step1;
}
else if(IOA&NO5&&IOA&NO7)
{
if(up==1) //斜向上25
{
x_temp=X+Step2;
y_temp=Y+Step1;
}
else if(up==0) //斜向下25
{
x_temp=X+Step1;
y_temp=Y-Step2;
}
}
else if(IOA&NO2&&IOA&NO5)
{
x_temp=X+Step2; //斜向下25
y_temp=Y-Step1;
}
else if(IOA&NO1&&IOA&NO2&&IOA&NO3)
{
x_temp=X; //向下
y_temp=Y-Step1;
}
else if(IOA&NO6&&IOA&NO7&&IOA&NO8)
{
x_temp=X; //向上
y_temp=Y+Step1;
}
else //直走
{
x_temp=X+Step1;
y_temp=Y;
}
Motor(x_temp,y_temp);
}
/*void Orientatation( )
{
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -