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

📄 main.c

📁 c语言写的哦,里面还带有整点报时音乐,音乐程序很简单
💻 C
📖 第 1 页 / 共 2 页
字号:
if(n>0)
{
 for(;n>0;n--)
            {
 meterright(1); //右电机下拉
            }

}
else if(n<0)
{
n=n*(-1);
 for(;n>0;n--)
            {
 meterlift(1);  //右电机上拉
            }

}

}
else  if(n>0&m>0)//两边向物体加绳子
{
  if(n>=m)
  {
     mn=(float)(n)/(float)(m);
     ms=0;
     mz=0;
       for(i=0;i<m;i++)
       {
         ms=ms+mn-mz;
         mz=(int)(ms+0.0001);
         meterright(( unsigned int )(mz));  //右电机线下放1CM
         meterdergeeright(1);               //左电机线下拉1CM
          *P_Watchdog_Clear=0x0001;
       }
   }     
   else  if(n<m)
   {
      mn=(float)(m)/(float)(n);
      ms=0;
      mz=0;
       for(i=0;i<n;i++)
       {
         ms=ms+mn-mz;
         mz=(int)(ms+0.0001);
         meterdergeeright(( unsigned int )(mz));  //左电机线下拉1CM
          meterright(1);                          //右电机线下放1CM
        *P_Watchdog_Clear=0x0001;
       }
    }                               
}  

//-------------------------------------------------------------------
else if(n<0&m<0)     //物体两边都减绳子
{
n=-1*n;
m=-1*m; 
  if(n>=m)
  {
     mn=(float)(n)/(float)(m);
     ms=0;
     mz=0;
       for(i=0;i<m;i++)
       {
         ms=ms+mn-mz;
         mz=(int)(ms+0.0001);
         meterlift(( unsigned int )(mz));  //右电机线下放1CM
        meterdergeelift(1);                //右电机线上拉1CM
          *P_Watchdog_Clear=0x0001;
       }
   }     
   else  if(n<m)
   {
      mn=(float)(m)/(float)(n);
      ms=0;
      mz=0;
       for(i=0;i<n;i++)
       {
         ms=ms+mn-mz;
         mz=(int)(ms+0.0001);
        meterdergeelift(( unsigned int )(mz)); //左电机线下拉1CM
          meterlift(1);                        //右电机线下放1CM
        *P_Watchdog_Clear=0x0001;
       }
    }            
}
//----------------------------------------------------------------------         
else if(n>0&m<0)
{
m=-1*m;
  if(n>=m)
  {
     mn=(float)(n)/(float)(m);
     ms=0;
     mz=0;
       for(i=0;i<m;i++)
       {
         ms=ms+mn-mz;
         mz=(int)(ms+0.0001);
         meterright(( unsigned int )(mz));  //右电机线下放1CM
        meterdergeelift(1);                 //左电机线下拉1CM
          *P_Watchdog_Clear=0x0001;
       }
   }     
   else  if(n<m)
   {
      mn=(float)(m)/(float)(n);
      ms=0;
      mz=0;
       for(i=0;i<n;i++)
       {
         ms=ms+mn-mz;
         mz=(int)(ms+0.0001);
         meterdergeelift(( unsigned int )(mz));  //左电机线下拉1CM
          meterright(1);                         //右电机线下放1CM
        *P_Watchdog_Clear=0x0001;
       }
    } 
}
else if(n<0&m>0)
{
n=-1*n;   
 if(n>=m)
  {
     mn=(float)(n)/(float)(m);
     ms=0;
     mz=0;
       for(i=0;i<m;i++)
       {
         ms=ms+mn-mz;
         mz=(int)(ms+0.0001);
         meterlift(( unsigned int )(mz));   //右电机线下放1CM
         meterdergeeright(1);               //左电机线下拉1CM
          *P_Watchdog_Clear=0x0001;
       }
   }     
   else  if(n<m)
   {
      mn=(float)(m)/(float)(n);
      ms=0;
      mz=0;
       for(i=0;i<n;i++)
       {
         ms=ms+mn-mz;
         mz=(int)(ms+0.0001);
         meterdergeeright(( unsigned int )(mz));     //左电机线下拉1CM
          meterlift(1);                             //右电机线下放1CM
        *P_Watchdog_Clear=0x0001;
       }
       }
//----------------------------------------------------------------------  
}
}


void delay(int i)          //延时程序,i是参数 当i=1时 延时1ms   
    { int j;
      for(;i>0;i--)
      for(j=0;j<32;j++)
         {              
           *P_Watchdog_Clear=0x0001;
         }
    } 
void  first()
{
    __asm("int off"); 
	UART_Init();
	*P_INT_Ctrl=C_IRQ5_2Hz; 
	*P_TimeBase_Clear=0x0000;
	*P_INT_Clear = 0xffff;     //先清一下中断标志
    __asm("int irq");
}  	
int main()
{	

    SP_Init_IOA(0xfff0,0x00f0,0xfff0); 
    SP_Init_IOB(0xf40f,0xf48f,0xf40f);      //IOB7输入,IOB10输出 初始化为高电平
    
    *P_SystemClock=0x000b;                  //24.576   /8  强振 
             
    initlcm();                              //初始化液晶
    SendCMD(0x0001);                        //清屏
    SendCMD(0x81);   display("悬挂运动控制");
    SendCMD(0x92);   display("控制台");
    
    __asm("int off"); 
	UART_Init(); 
    __asm("int irq");
    
    n=0;
    m=0;  
    KeyFlag = NoKey;                  	  
    while(1)
      {                             
        if(round==1)
        {  
            round=0;            
                                          //无线控制画园
        }
        F_Key_Scan();    
        *P_Watchdog_Clear=C_WDTCLR;       
        while(KeyFlag == HaveKey)
		 {			  		
		   KeyVal=F_Get_Key();		  
		   KeyFlag = NoKey;	 

            ////////////////////////////////////////////////////////////////////////////////////
		   if(KeyVal==15)              //100cm确认键
		    {
		      SendCMD(0x0001);                   //清屏
		      SendCMD(0x82);   display("起点坐标值");
		      SendCMD(0x90);   display("X: ");  dis_12232num(xb); 		      		      
		      SendCMD(0x94);   display("Y: ");  dis_12232num(yb); 
                         	 
              cot=cot+1;
              if(cot==2)
               {
                cot=0;
                
                 SendCMD(0x0001);                   //清屏
		         SendCMD(0x82);   display("走曲线!");
                 first();    //开 2Hz中断计时     
                 
                 hunderd();
                 
                __asm("int off"); 
                alltime=alltime/2;
                PlayRespond(12);
                Playsoundnum(alltime);
                PlayRespond(13);
                                                
               }                    
              delay(400);            
		      keyadd=0;
		      KeyVal=0;
		      
		      SendCMD(0x0001);                   //清屏
		      SendCMD(0x82);   display("曲线走完!");
		    } 
            ////////////////////////////////////////////////////////////////////////////////////		    
		    if(KeyVal==14)       //画园
		     {
		      SendCMD(0x0001);                   //清屏
		      SendCMD(0x81);   display("圆心坐标值");
		      SendCMD(0x90);   display("X: ");  dis_12232num(xb); 		      		      
		      SendCMD(0x94);   display("Y: ");  dis_12232num(yb); 
		      
             // sendsixteenbit(xb);              //串口发送数据
             // delay(100);                   
             // dis_12232num(yb);  
                         	 
              cot=cot+1;
              if(cot==2)
               {
                cot=0;  
                circlex=xb;
                circley=yb;
                
                first();    //开 2Hz中断计时     
                 
                roundcycle(); 
                __asm("int off"); 
                alltime=alltime/2;
                PlayRespond(12);
                Playsoundnum(alltime);
                PlayRespond(13);
                SendCMD(0x0001);                   //清屏
                 while(1)
                 {
                 *P_Watchdog_Clear=C_WDTCLR;        //清看门狗
		         SendCMD(0x80);   display("表演完毕 ***");
		         SendCMD(0x93);   display("谢谢观看!");  
		         }
                }
    
              delay(400);            
		      keyadd=0;
		      KeyVal=0;
		     

		     /*	for(j=0;j<20;j++)  
                  {
                     m=roundx[j];	
                     n=roundy[j];	
                     go();
                   }*/
		     }
		      ////////////////////////////////////////////////////////////////////////////////////
		    if(KeyVal==13) //黑线
		     {
		     
		       while(1)
	            {
	              *P_Watchdog_Clear=C_WDTCLR;   
	              System_ServiceLoop();  
	              if(keyadd==1)             	                                            
                  meterdergeelift(1);  //右电机上拉
                  else
                   meterlift(1);        //左电机上拉
	             }     
		     }
              ////////////////////////////////////////////////////////////////////////////////////	
              
              if(KeyVal==10)              //按数组走黑白线
		    {
		     SendCMD(0x0001);                   //清屏
		    SendCMD(0x82);   display("GO。。。");
		    severdata=severdata-1;
		    black();	
		     SendCMD(0x0001);                   //清屏
		    SendCMD(0x82);   display("STOP。。。");	    
		    }   
             ///////////////////////////////////////// 
            if(KeyVal==11)             //设定数组
		    {
		      SendCMD(0x0001);                   //清屏
		      SendCMD(0x80); 
		       dis_12232num(starx[0]);
		       display(",");
		       dis_12232num(stary[0]);
		       display("  ");
		       dis_12232num(starx[1]);
		       display(",");
		       dis_12232num(stary[1]);
		       display("  ");
		       dis_12232num(starx[2]);
		       display(",");
		       dis_12232num(stary[2]);		       	      		      
		      if(cot==0)
		         {
		           SendCMD(0x0001);                   //清屏
                   SendCMD(0x80);   display("输入坐标数");
                   SendCMD(0x90);   dis_12232num(keyadd); 
                   severdata=keyadd;
                 }          	 
              else
              {
                if(shuzuchang==0)
                {
                shuzuchang=1;
                starx[adxnu]=keyadd;  
                adxnu=adxnu+1; 
                } 
                else
                {
                 shuzuchang=0;
                 stary[adynu]=keyadd;  
                 adynu=adynu+1;
                }            
              }                    
               cot=cot+1;
                                       
              delay(400);           
		      keyadd=0;
		      KeyVal=0;
		    }  
		  	     
          //////////////////////////////////////////////////////////////////////      
		    if(KeyVal==12) //从原点到设定值坐标
		     {
		        SendCMD(0x0001);                   //清屏
		      SendCMD(0x81);   display("终点坐标值");
		      SendCMD(0x90);   display("X: ");  dis_12232num(xb); 		      		      
		      SendCMD(0x94);   display("Y: ");  dis_12232num(yb); 
		      
             // sendsixteenbit(xb);              //串口发送数据
             // delay(100);                   
             // dis_12232num(yb);  
                         	 
              cot=cot+1;
              if(cot==2)
               {
                cot=0;  
                setx=xb;
                sety=yb;
                
                                        
                
                first();    //开 2Hz中断计时     
                 
                ooo(); 
                __asm("int off"); 
                alltime=alltime/2;
                PlayRespond(12);
                Playsoundnum(alltime);
                PlayRespond(13);
                
                SendCMD(0x0001);                   //清屏
		        SendCMD(0x81);   display("已达设定点");
		        SendCMD(0x95);   display("谢谢!");
                 }
                    
              delay(400);            
		      keyadd=0;
		      KeyVal=0;
		     }
             ////////////////////////////////////////////////////////////////////////////////////
		  else
		  {  		  
		        keyadd=(keyadd*10+KeyVal);  
                if(cot==0)
		         {
		           SendCMD(0x0001);                   //清屏
                   SendCMD(0x80);   display("请输入X: ");
                   SendCMD(0x90);   dis_12232num(keyadd); 
                   xb=keyadd;
                 }
               if(cot==1)
		         {
		           SendCMD(0x0001);                   //清屏
                   SendCMD(0x80);   display("请输入Y: ");
                   SendCMD(0x90);   dis_12232num(keyadd); 
                   yb=keyadd;
                 }
                 else
                 {
                  SendCMD(0x0001);                   //清屏
                  SendCMD(0x80);   dis_12232num(shuzuchang); 
                   SendCMD(0x90);   dis_12232num(keyadd); 
                   delay(200);
                 }
               delay(400);                              //消除连续按键
		  }	
		  			      
	    }	 
	    
   	 }
   	 
}

⌨️ 快捷键说明

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