⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ctrl.c

📁 2005年全国大学生电子设计竞赛论文集
💻 C
📖 第 1 页 / 共 2 页
字号:
}

//=========================================================================================
//按键设定状态
//=========================================================================================
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 + -