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

📄 悬挂控制最终程序20050910.c

📁 悬挂控制最终程序 热rgrghththtnt
💻 C
📖 第 1 页 / 共 2 页
字号:
  { if(key_value==2)//按DEL键退出键盘程序
      {for(timer0_counter=0;timer0_counter<20;);
	   key_value=0;
	   EA=0;
       HD7279_Initial();
       HD7279_ShowData(3,0x00,0);
	   EA=1;
	   break;
	  }

    if(key_value==8)//功能选择
	  {for(timer0_counter=0;timer0_counter<20;);
	   key_value=0;
	   key_fun_counter+=1;
	   if(key_fun_counter>7) key_fun_counter=0;
	   EA=0;
	   HD7279_ShowData(3,key_fun_counter,1);
	   EA=1;
	  }

	if(key_value==4)//功能确认
	  {for(timer0_counter=0;timer0_counter<20;);
	   key_value=0;
	   switch(key_fun_counter)
	   {case 1:{data_x = 0;
		        data_y = 0;
			    HD7279_Initial();
		        for(i=0;i<=5;i++) //数码管测试
                  {EA=0;
				   HD7279_ShowData(3,0x0f,0);
                   delay(10000);
				   HD7279_ShowData(3,0x00,0);
                   delay(10000);
				   EA=1;
                  }
			   }break; //复位

		case 2:{xy_select=0;
		        EA=0;
			    HD7279_ShowData(0,0x0c,0);//显示H表示设置参数
			    HD7279_ShowData(4,0x0f,0);//显示H表示设置参数
				EA=1;
		        while(1)
		        {
			    if(key_value==2)//如果按DEL键则退出
				  {for(timer0_counter=0;timer0_counter<20;);
	               key_value=0;
				   EA=0;
				   HD7279_Initial();
				   key_fun_counter=2;
				   HD7279_ShowData(3,key_fun_counter,0);
				   EA=1;
			       break;
				  }

		        if(key_value==8) //如果按FUN键上下切换H
	              {for(timer0_counter=0;timer0_counter<20;);
	               key_value=0;
				   xy_select=~xy_select;
				   if(xy_select==0)
				     {EA=0;
					  HD7279_ShowData(0,0x0c,0);//显示H表示设置参数
				      HD7279_ShowData(4,0x0f,0);//显示H表示设置参数
					  EA=1;
					 }
                   if(xy_select==1)
				     {EA=0;
					  HD7279_ShowData(0,0x0f,0);//显示H表示设置参数
				      HD7279_ShowData(4,0x0c,0);//显示H表示设置参数
					  EA=1;
					 }
				  }

				if(key_value==4)//如果按ENTER键,设置XY数值
				  {for(timer0_counter=0;timer0_counter<20;);
	               key_value=0;
                   if(xy_select==0)//设置X轴坐标
				     {EA=0;
					  HD7279_ShowData(0,0x0a,0);//显示H表示设置参数
				      HD7279_ShowData(4,0x0f,0);//显示H表示设置参?
					  EA=1;
					  while(1)
				       {if(key_value==4)//如果按ENTER键则确认该数值退出
				          {for(timer0_counter=0;timer0_counter<20;);
						   key_value=0;
						   EA=0;
						   HD7279_ShowData(0,0x0c,0);//显示H表示设置参数
				           HD7279_ShowData(4,0x0f,0);//显示H表示设置参?
						   EA=1;
			               break;
				          }
                        if(key_value==1)
					      {for(timer0_counter=0;timer0_counter<15;);
	                       key_value=0;
				           data_x+=1;
						   if(data_x>80) data_x=0;
                          }
				        if(key_value==7)
						  {for(timer0_counter=0;timer0_counter<15;);
	                       key_value=0;
						   data_x-=1;
						   if(data_x>80) data_x=80;
                          }
						EA=0;
						show_led(data_x,0,0);
						EA=1;
					   }
				     }	
                  else//设置Y轴坐标
				    {while(1)
				       {EA=0;
					    HD7279_ShowData(0,0x0f,0);//显示H表示设置参数
				        HD7279_ShowData(4,0x0a,0);//显示H表示设置参?
						EA=1;
					    if(key_value==4)//如果按ENTER键则确认该数值退出
				          {for(timer0_counter=0;timer0_counter<20;);
	                       key_value=0;
						   EA=0;
						   HD7279_ShowData(0,0x0f,0);//显示H表示设置参数
				           HD7279_ShowData(4,0x0c,0);//显示H表示设置参?
						   EA=1;
			               break;
				          }
                        if(key_value==1)
					      {for(timer0_counter=0;timer0_counter<15;);
	                       key_value=0;
				           data_y+=1;
						   if(data_y>100) data_y=0;
						  }
				        if(key_value==7)
						  {for(timer0_counter=0;timer0_counter<15;);
	                       key_value=0;
				           data_y-=1;
						   if(data_y>100) data_y=100;
						  }
						EA=0;
						show_led(data_y,1,0);
						EA=1;
				       }
                    }


                  }//end if(key_value==4)

			    }//end while(1)

			  }break;


		case 3:{//从原点出发画一条直线
		        draw_line(data_x,data_y);
				for(i=0;i<9;i++)
				  {EA=0;
				   HD7279_ShowData(0,0x0d,0);
                   delay(50000);
				   HD7279_ShowData(0,0x0f,0);
                   delay(50000);
				   EA=1;
				  }
			   }break;

		case 4:{//画圆
				draw_cir(data_x,data_y);
				for(i=0;i<9;i++)
				  {EA=0;
				   HD7279_ShowData(0,0x0d,0);
                   delay(50000);
				   HD7279_ShowData(0,0x0f,0);
                   delay(50000);
				   EA=1;
				  }
		       }break;

		case 5:{//移动
				move_point(data_x,data_y);
				for(i=0;i<9;i++)
				  {EA=0;
				   HD7279_ShowData(0,0x0d,0);
                   delay(50000);
				   HD7279_ShowData(0,0x0f,0);
                   delay(50000);
				   EA=1;
				  }
		       }break;

		case 6:{//发挥(收线)
			    while(1)
		        {
				EA=0;
				HD7279_ShowData(0,0x0b,0);
				EA=1;
			    if(key_value==2)//如果按DEL键则退出
				  {for(timer0_counter=0;timer0_counter<20;);
	               key_value=0;
				   EA=0;
				   HD7279_Initial();
				   key_fun_counter=2;
				   HD7279_ShowData(3,key_fun_counter,0);
				   EA=1;
			       break;
				  }
				if(key_value == 7)
				   {control_motor1_z();
				    PCON=1;
		 			PCON=1;
		 			PCON=1;
				    PCON=1;
		 			PCON=1;
				    while(!HD7279_KEY);
					control_motor1_close();
					PCON=1;
		 			PCON=1;
		 			PCON=1;
				    PCON=1;
		 			PCON=1;
				   }
		  		if(key_value == 3)
				   {control_motor2_z();
				    PCON=1;
		 			PCON=1;
		 			PCON=1;
				    PCON=1;
		 			PCON=1;
				    while(!HD7279_KEY);
					control_motor2_close();
					PCON=1;
		 			PCON=1;
		 			PCON=1;
				    PCON=1;
		 			PCON=1;
				   }
				if(key_value == 5)
				   {control_motor2_f();
				    PCON=1;
		 			PCON=1;
		 			PCON=1;
				    PCON=1;
		 			PCON=1;
				    while(!HD7279_KEY);
					control_motor2_close();
					PCON=1;
		 			PCON=1;
		 			PCON=1;
				    PCON=1;
		 			PCON=1;
				   }
				if(key_value ==	1)
				   {control_motor1_f();
				    PCON=1;
		 			PCON=1;
		 			PCON=1;
				    PCON=1;
		 			PCON=1;
				    while(!HD7279_KEY);
					control_motor1_close();
					PCON=1;
		 			PCON=1;
		 			PCON=1;
				    PCON=1;
		 			PCON=1;
				   }
			    if(key_value ==	4)
				   {control_motor1_close();
				    control_motor2_close();
					PCON=1;
		 			PCON=1;
		 			PCON=1;
				    PCON=1;
		 			PCON=1;
				   }
			    }
			}break;

		case 7:{  EA=0;
				  HD7279_ShowData(0,0x0A,0);//显示H表示设置参数
				  EA=1;
				  while(1)
				     {if(key_value==4)//如果按ENTER键则确认该数值退出
				         {for(timer0_counter=0;timer0_counter<30;);
						   key_value=0;
						   EA=0;
						   HD7279_ShowData(0,0x0C,0);//显示H表示设置参数
						   EA=1;
			               break;
				         }
                      if(key_value==1)
					     {for(timer0_counter=0;timer0_counter<15;);
	                      key_value=0;
				          cir_bj+=1;
                         }
				      if(key_value==7)
					    {for(timer0_counter=0;timer0_counter<15;);
	                     key_value=0;
					     cir_bj-=1;
					     if(cir_bj<0) cir_bj=25;
                        }
					  EA=0;
					  show_led(cir_bj,0,0);
					  EA=1;
					 }
		       }break;
	  }
	 }//end if(key_value==5)
 }
}
//--------------------------------------------
//--------------------------------------------
//--------------------------------------------
void main()
{  
	uchar i;

    TMOD=0x01;  //T1工作于方式1
    EA=1;       //CPU中断开放
	ET0=1;		//定时器T0溢出中断允许
	TH0=0xd8;	//12M晶振10MS溢出初值
	TL0=0xf0;

	L_guang = 1;
	R_guang = 1;
	L_length = L_start;
	R_length = R_start;

    HD7279_Initial();
	delay(20000);
    for(i=0;i<=9;i++) //数码管测试
      {HD7279_ShowData(0,i,0);
       HD7279_ShowData(1,i,0);
       HD7279_ShowData(2,i,0);
       HD7279_ShowData(3,i,0);
       HD7279_ShowData(4,i,0);
       HD7279_ShowData(5,i,0);
       //HD7279_ShowData(6,i,0);
       //HD7279_ShowData(7,i,0);
       delay(10000);
      }
	TR0=1;

	while(1)   key_chose();

}//main end

//--------------------------------------------
//          以下是定时器中断程序           |
//--------------------------------------------

void timer_t0(void) interrupt 1    //50MS
{
    TH0=0xd8;
    TL0=0xf0;

   	timer0_counter+=1;
    
	key_value=HD7279_GetKey();//获得按键代码

    if(L_sign==1)motor1_sign++;
	if(R_sign==1)motor2_sign++;
}


   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -