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

📄 znewf02.c

📁 用步进电机画图的完整原代码
💻 C
📖 第 1 页 / 共 4 页
字号:
             break;
		  }
	   case 8:
		  {
             scenes[5] =0;    /*X=B7=BD=CF=F2=D2=C6=B6=AF*/
             scenes[6] = 0;  /*Y=B7=BD=CF=F2=D2=C6=B6=AF*/
             scenes[7] = 147;    /*=CB=F5=B7=C5*/
             scenes[10] = 0;    /*=C8=C6X=D6=E1=D7=AA*/
             scenes[11] =0;    /*=C8=C6Y=D6=E1=D7=AA*/
	         scenes[12] = 0;    /*=C8=C6Z=D6=E1=D7=AA*/
             scenes[13] =0;    /* =D1=D5=C9=AB=BD=A5=B1=E4 */
             break;
		  }
	   case 9:
		  {
             scenes[5] = 0;    /*X=B7=BD=CF=F2=D2=C6=B6=AF*/
             scenes[6] = 0;  /*Y=B7=BD=CF=F2=D2=C6=B6=AF*/
             scenes[7] =201;    /*=CB=F5=B7=C5*/
             scenes[10] = 0;    /*=C8=C6X=D6=E1=D7=AA*/
             scenes[11] = 0;    /*=C8=C6Y=D6=E1=D7=AA*/
	         scenes[12] = 0;    /*=C8=C6Z=D6=E1=D7=AA*/
             scenes[13] = 0;    /* =D1=D5=C9=AB=BD=A5=B1=E4 */
             break;
		  }
	  case 10:
		  {
             scenes[5] = 0;    /*X=B7=BD=CF=F2=D2=C6=B6=AF*/
             scenes[6] = 0;  /*Y=B7=BD=CF=F2=D2=C6=B6=AF*/
             scenes[7] = 0;    /*=CB=F5=B7=C5*/
             scenes[10] = 181;    /*=C8=C6Y=D6=E1=D7=AA*/
             scenes[11] = 0;    /*=C8=C6X=D6=E1=D7=AA*/
	         scenes[12] = 0;    /*=C8=C6Z=D6=E1=D7=AA*/
             scenes[13] = 0;    /* =D1=D5=C9=AB=BD=A5=B1=E4 */
             break;
		  }
	   case 11:
		  {
             scenes[5] = 0;    /*X=B7=BD=CF=F2=D2=C6=B6=AF*/
             scenes[6] = 0;  /*Y=B7=BD=CF=F2=D2=C6=B6=AF*/
             scenes[7] = 0;    /*=CB=F5=B7=C5*/
             scenes[10] = 0;    /*=C8=C6Y=D6=E1=D7=AA*/
             scenes[11] = 181;    /*=C8=C6X=D6=E1=D7=AA*/
	         scenes[12] =0;    /*=C8=C6Z=D6=E1=D7=AA*/
             scenes[13] = 0;    /* =D1=D5=C9=AB=BD=A5=B1=E4 */
             break;
		  }
	   case 12:
		  {
             scenes[5] =0;    /*X=B7=BD=CF=F2=D2=C6=B6=AF*/
             scenes[6] =0;  /*Y=B7=BD=CF=F2=D2=C6=B6=AF*/
             scenes[7] = 0;    /*=CB=F5=B7=C5*/
             scenes[10] = 0;    /*=C8=C6X=D6=E1=D7=AA*/
             scenes[11] = 0;    /*=C8=C6Y=D6=E1=D7=AA*/
	         scenes[12] = 181;    
             scenes[13] = 0;    
             break;
		  }
           case 13:
		  {
             scenes[5] = 0;    /*X=B7=BD=CF=F2=D2=C6=B6=AF*/
             scenes[6] =0;  /*Y=B7=BD=CF=F2=D2=C6=B6=AF*/
             scenes[7] =0;    /*=CB=F5=B7=C5*/
             scenes[10] = 0;    /*=C8=C6X=D6=E1=D7=AA*/
             scenes[11] = 0;    /*=C8=C6Y=D6=E1=D7=AA*/
	         scenes[12] =218;   
             scenes[13] = 0;    /* =D1=D5=C9=AB=BD=A5=B1=E4 */
             break;
		  }
	   default: break;
	}
}
//-----------------------------------------------------------------------=
void SetSportMode2(char Mode)
{
	switch(Mode)
	{
	  case 0:
	  {
		break;
	  }
	  case 1:
		  {
             scenes[6] = 161;  /*=CF=F2=C9=CF=D2=C6=B6=AF*/
             break;
		  }
	   case 2:
		  {
             scenes[6] =191;  /*=CF=F2=CF=C2=D2=C6=B6=AF*/
             break;
		  }
	   case 3:
		  {
             scenes[6] = 221;  /*=C9=CF=CF=C2=D2=C6=B6=AF*/
             break;
		  }
	   case 4:
		  {
             scenes[5] = 161;  /*=CF=F2=D7=F3=D2=C6=B6=AF*/
             break;
		  }
	   case 5:
		  {
             scenes[5] =191;  /*=CF=F2=D3=D2=D2=C6=B6=AF*/
             break;
		  }
	   case 6:
		  {
             scenes[5] = 221;  /*=D7=F3=D3=D2=D2=C6=B6=AF*/
             break;
		  }
	   case 7:
		  {
             scenes[7] = 93;  /*=B7=C5=B4=F3*/
             break;
		  }
	   case 8:
		  {
             scenes[7] = 147;  /*=CB=F5=D0=A1*/
             break;
		  }
	   case 9:
		  {
             scenes[7] =201; /*=CB=F5=B7=C5*/
             break;
		  }
	  case 10:
		  {
             scenes[10] = 181; /*=C8=C6X=D6=E1=D7=AA*/
             break;
		  }
	   case 11:
		  {
             scenes[11] =181; /*Y=D0=FD=D7=AA*/
             break;
		  }
	   case 12:
		  {
             scenes[12] =181; /*Z=C4=E6=CA=B1=D0=FD=D7=AA*/
             break;
		  }
           case 13:
                {
             scenes[12] =218; /*Z=CB=B3=CA=B1=D0=FD=D7=AA*/
             break;
                }
	   default:
             break;
	}
}
//-----------------------------------------------------------------------=

void SetColor(uchar color)
{
     switch(color)
     {
      case 0:{Red1=1;Red2=1;Green=1;break;}
      case 1:{Red1=1;Red2=1;Green=0;break;}
      case 2:{Red1=0;Red2=0;Green=1;break;}
      case 3:{Red1=1;Red2=1;Green=0;break;}
      default: {Red1=1;Red2=1;Green=1;break;}
     }
}
////////////////////////////////////////////////////////
void SetColorGra(unsigned char colorIndex, char *colorGraFore, char *colorGraBack)
{
    switch (colorIndex)
    {
     case 0:    
          break;
     case 1:     
          *colorGraFore =-2;   
          *colorGraBack = -1;   
          break;
     case 2:  

          *colorGraFore = 0; 
          *colorGraBack =1;  
          break;
     case 3:    

          *colorGraFore =30;  
          *colorGraBack = 2; 
          break;
     case 4:    
          *colorGraFore = 2;  
          *colorGraBack = 1;  
          break;
     case 5:    
          *colorGraFore = 1;  
          *colorGraBack = 2; 
          break;
     case 6:  
          *colorGraFore = 2;  
          *colorGraBack = 0; 
          break;
     case 7:   
          *colorGraFore = 1; 
          *colorGraBack = 0;  
          break;
     case 8:  
          *colorGraFore =-2; 
          *colorGraBack = -1;  
          break;
     default:
          break;
    }
}

////////////////////////////////////////////////////////
void LaserOn(char OnFlag)
{
   if(OnFlag>=1)
   {
     SetColor(Color);
   }
   else
   {Red1=Green=Red2=0; return;}
}

void Delay(int x)
{
  while(x--);
}

uchar GetNextStep(char x,char y)
{  uchar date;
   StepMargin_X=x-x0;  StepMargin_Y=y-y0;
   if(StepMargin_X>0) {Psteps_X=(Psteps_X+1)%8; x0++;} 

   else if(StepMargin_X<0)                              
          {  if(Psteps_X<=0) Psteps_X=7;
             else Psteps_X--;
             x0--;
          }
   if(StepMargin_Y>0) {Psteps_Y=(Psteps_Y+1)%8; y0++;}
   else if(StepMargin_Y<0)
          { if(Psteps_Y<=0) Psteps_Y=7;
            else Psteps_Y--;
            y0--;
          }
   date=steps_Y[Psteps_Y];
   date=date|steps_X[Psteps_X];
   return date;
}

void WalkeToXY(char xx,char yy,uint DelayTime) 
{   while(!(x0==xx&&y0==yy))
    {  OutPort=GetNextStep(xx,yy);
       Delay(DelayTime);
    }
}
/*
void Beeline(char xx0,char yy0,char xx1,char yy1,uint DelayTime,uchar count)
{    int temp;
     while(count--)
         {  WalkeToXY(xx0,yy0,DelayTime);
            WalkeToXY(xx1,yy1,DelayTime);
         }
}
 */
char MyPow(char date)
{  char temp=1;
   bit stop=0;
   int i;
   for(i=1;i<=date/2&&stop==0;i++)
   {  temp=i*i;
      if(temp==date) return i;
      if(temp>date) stop=1; 
   }
   return (temp-date>(date-(i-1)*(i-1))?(i-1):i);
}

char GetY_Circle(char Dot_X,char xx,char radii) 
{   char yy;
    yy=radii*radii-(xx-Dot_X)*(xx-Dot_X);
    yy=MyPow(yy);
    return yy;
}

void Circle(char xx0,char yy0, char radii,uint DelayTime,uchar count)
{   char temp,yy;
    while(count--)
         {
            LaserOn(0);
            WalkeToXY(xx0+radii,yy0,DelayTime);
            LaserOn(1);
            //--------------------------------//
            if(PlayMode==0) {LaserOn(0);return;}
            if(DMX_Flag==10) {LaserOn(0);return;}
            if(OffOrOn) {LaserOn(0);return;}
            //--------------------------------//
            temp=xx0+radii;
            for(;temp>=xx0-radii;temp--) 
               { yy=GetY_Circle(xx0,temp,radii);
                 WalkeToXY(temp,yy+yy0,DelayTime);
               }
            for(temp=temp+1;temp<=xx0+radii;temp++)
               { yy=-(GetY_Circle(xx0,temp,radii));
                 WalkeToXY(temp,yy+yy0,DelayTime);
               }
         }
}

void ConfirmDot()
{
  int i;
  Green=0;
  Red1=0;
  OutPort=0;
 /*-----------y----------*/
 for(i=0;i<400;i++)
 {
   OutPort=steps_Y[i%8];
    Delay(1000);
 }
 for(i=0;i<90;i++)
 {
   OutPort=steps_Y[7-i%8];
    Delay(200);
 }
 --i;
 Psteps_Y = 7 - (i % 8);   
 /*--------x-------------*/
for(i=0;i<400;i++)
 {
    OutPort=steps_X[i%8];
    Delay(1000);
 }
for(i=0;i<94;i++)
 {
   OutPort=steps_X[7-i%8];
    Delay(200);
 }
 --i;
 Psteps_X = 7 - (i % 8);  
 x0=0;
 y0=0;

}
//-----------------------------------------------------------------------=
 void Show(char code *pPictrue,char Dx,char Dy,char ZoomX,char ZoomY,int AngleX,int AngleY,char AngleZ)
{
    uint temp = pPictrue[0];
    uint i,j;
    char  x,y;
    bit IsStartPoint;
    static unsigned char colorGraSpeed =0; 
    unsigned char colorGraSpeedValve = 0; 
    static unsigned char colorGraPointNum =1;
    unsigned char colorGraFore =0; 
    unsigned char colorGraBack =0; 
    unsigned char colorFlowSpeedValve =0; 
    LaserOn(0);
    IsStartPoint=0;
    if(PlayMode==0) {LaserOn(0);return;}
    if(WorkMode==0&&DMX_Flag==10) {LaserOn(0);return;}
    if(OffOrOn) {LaserOn(0);return;}
    if(Reset==10) return;
    //---------------------------------//
    DisPlayMode=scenes[4]/70;
    DisPlayFlag1=DisPlayFlag2=DisPlayFlag3=0;
    DisPlay2=0;
    //---------------------------------//
    if ((scenes[8] >=160) && (scenes[8] <=199)) 
    {
        colorFlowSpeedValve = 20 - ((scenes[8] - 160) / 2);
        if (((++FlowSpeed) % colorFlowSpeedValve) ==0)
        {
            Flow=(Flow+1)%3;
        }
    }
    else  
    {
      if ((FlowSpeed++)%5==0)
      {
          Flow=(Flow+1)%3;   
      }
    }
    if (scenes[13] ==0) 
    {
        gColorGraSelectMode =0;    
    }
    else if ((scenes[13] > 0) &&(scenes[13] <=100))
    {
        gColorGraSelectMode =1;   
    }
    else if ((scenes[13] >=101) &&(scenes[13] <=251))
    {
        gColorGraSelectMode =2;   
        gColorGraMode       =((scenes[13] - 100) / 19) + 1;    
        colorGraSpeedValve  =7 - (((scenes[13] - 100) % 19) / 3) ; 
    }
    else 
    {
        gColorGraSelectMode = 3; 
        colorGraSpeedValve  = 4 - (scenes[13] - 252); 
    }
    if (gColorGraSelectMode == 2 || gColorGraSelectMode == 3)
    {
        if ( ++colorGraSpeed >= colorGraSpeedValve )
        {
         colorGraPointNum = colorGraPointNum + 2;
         colorGraSpeed =0;
        }
    }


    if (gColorGraSelectMode ==2) 
    {
        SetColorGra(gColorGraMode, &colorGraFore, &colorGraBack); 
		}
        else if (gColorGraSelectMode == 3) 
        {
          gColorGraMode =ColorGraList[gColorGraIndex];  
          SetColorGra(gColorGraMode, &colorGraFore, &colorGraBack); 
    }
    else  
    {

    }

    for(i=1,j=0;i<=2*temp;i=i+2) 
	{
        //------------------------------------------------------//
        x = pPictrue[i]; y =pPictrue[i+1];
        //----------------------------------------------------------//

⌨️ 快捷键说明

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