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

📄 main.c

📁 本源码程序采用用51单片机AT89C55分控采用软件模拟的方式输出SPI信号! 控制16段LED护栏管的单色跳变
💻 C
📖 第 1 页 / 共 3 页
字号:
        if(Temp1==1) 
		{ 
			b=b<<1; 
			b=b|0x01; 
		} 
        else 
            b=b<<1; 
    } 
    return b; 
} 
*/
//------------
/*
描述:从I2C总线读n个字节 
入口参数:*buffer-读取值存放缓冲的地址,n-读取个数
返回值:成功标志
*/
/*
static bit Read_N_Bytes(unsigned char n,unsigned char *buffer) 
{ 
    //从I2C总线读n个字节 
    unsigned char i; 	
    for(i=0;i<n;i++) 
	{ 
		buffer[i]=IIC_Byte_R(); 
		if(i!=n) 
			SEND_0();    //发送应答 
		else 
			SEND_1();    //发送非应答 
	} 
    IIC_Stop(); 
    return TRUE; 
	
}

*/
/*********
延时子程序
入口参数:时间,一个单位4.88us
返回值:无
********/ 
/*
void Delay(unsigned int time)//4.88us, 6个周期
{	
	do{time--; }
    while(time>0);	
} 

*/
//************看门狗涵数********
void REST_WDT(void)
{
   WDREST=0x1e;
   WDREST=0xe1;	
}



/*********
延时子程序
入口参数:时间,一个单位4.88us
返回值:无
********/ 
void Delay1(unsigned int time)//4.88us, 6个周期
{	uint temp,i;
    temp=time*250;

    //if()
	do
	{temp--;
	  for(i=0;i<200;i++)
	 {	 
	 } 
     if(((uchar)time)!=LightData[0]){return;}
     //REST_WDT();
    }
    while(temp>0);	
  
}
/*
void Delay2()//通讯专用延时
{	uint temp,i,temp2;
    temp=LightData[1];
	temp2=temp;
	do
	{temp--;
	  for(i=0;i<20;i++)
	 {	 
	 } 
     REST_WDT();}
    while(temp>0);	
  
}
*/

void Delay2(unsigned int time)//跑动间隔延时
{	uint temp,i;
    temp=time*25;
	do
	{temp--;
	  for(i=0;i<50;i++)
	       {	 
	       } 
     if(((uchar)time)!=LightData[0])
         {  
         return;
         }
     //REST_WDT();
      }
    while(temp>0);	
  
}

void Delay3(unsigned int time)//七彩追逐间隔延时 
{	uint temp,i;
    temp=time*25;
	do
	{temp--;
	  for(i=0;i<50;i++)
	       {	 
	       }
     /* 
     if(((uchar)time)!=LightData[0])
         {  
         return;
         }
     */
     //REST_WDT();
      }
    while(temp>0);	
  
}


void tb_red()//红色整体跳变亮
{
      uint i;
     // clr();
      SLATCH595=0; 
    for(i=0;i<=JUMP_NUMBER_MAX;i++)
	 {
     SCLK595=0;        //bit 24 shift-out 
     SDATA595=OFF; 
	 SCLK595=1;

 
     SCLK595=0;        //bit 24 shift-out 
     SDATA595=ON; 
	 SCLK595=1;
	


     SCLK595=0;        //bit 24 shift-out 
     SDATA595=OFF; 
	 SCLK595=1;
	     
	  }
	SCLK595=0;
     SLATCH595=1; 
	SLATCH595=0; 
 // Delay1(LightData[0]);	


}

void tb_blue()//蓝色整体跳变亮
{
      uint i;
     // clr();
      SLATCH595=0; 
    for(i=0;i<=JUMP_NUMBER_MAX;i++)
	 {
     SCLK595=0;        //bit 24 shift-out 
     SDATA595=ON; 
	 SCLK595=1;

 
     SCLK595=0;        //bit 24 shift-out 
     SDATA595=OFF; 
	 SCLK595=1;
	


     SCLK595=0;        //bit 24 shift-out 
     SDATA595=OFF; 
	 SCLK595=1;
	     
	  }
	SCLK595=0;
     SLATCH595=1; 
	SLATCH595=0; 
  //Delay1(LightData[0]);	
	


}


void tb_green()//绿色整体跳变亮
{
   uint i;
    //  clr();
      SLATCH595=0; 
    for(i=0;i<=JUMP_NUMBER_MAX;i++)
	 {
     SCLK595=0;        //bit 24 shift-out 
     SDATA595=OFF; 
	 SCLK595=1;

 
     SCLK595=0;        //bit 24 shift-out 
     SDATA595=OFF; 
	 SCLK595=1;
	


     SCLK595=0;        //bit 24 shift-out 
     SDATA595=ON; 
	 SCLK595=1;
	     
	  }
	SCLK595=0;
     SLATCH595=1; 
	SLATCH595=0; 
	 // Delay1(LightData[0]);	
}


void tb_red_green()//跳变红绿整体亮
{
   uint i;
    //  clr();
      SLATCH595=0; 
    for(i=0;i<=JUMP_NUMBER_MAX;i++)
	 {
     SCLK595=0;        //bit 24 shift-out 
     SDATA595=OFF; 
	 SCLK595=1;

 
     SCLK595=0;        //bit 24 shift-out 
     SDATA595=ON; 
	 SCLK595=1;
	


     SCLK595=0;        //bit 24 shift-out 
     SDATA595=ON; 
	 SCLK595=1;
	     
	  }
	SCLK595=0;
     SLATCH595=1; 
	SLATCH595=0; 
	 // Delay1(LightData[0]);	
}


void  tb_red_blue()//跳变红蓝整体亮
 {
  uint i;
    //  clr();
      SLATCH595=0; 
    for(i=0;i<=JUMP_NUMBER_MAX;i++)
	 {
     SCLK595=0;        //蓝色
     SDATA595=ON; 
	 SCLK595=1;

 
     SCLK595=0;        //红色
     SDATA595=ON; 
	 SCLK595=1;
	


     SCLK595=0;        //绿色 
     SDATA595=OFF; 
	 SCLK595=1;
	     
	  }
	SCLK595=0;
     SLATCH595=1; 
	SLATCH595=0; 
	 // Delay1(LightData[0]);
 }

void  tb_green_blue()//绿蓝跳变整体亮
 {
  uint i;
    //  clr();
      SLATCH595=0; 
    for(i=0;i<=JUMP_NUMBER_MAX;i++)
	 {
     SCLK595=0;        //蓝色
     SDATA595=ON; 
	 SCLK595=1;

 
     SCLK595=0;        //红色
     SDATA595=OFF; 
	 SCLK595=1;
	


     SCLK595=0;        //绿色 
     SDATA595=ON; 
	 SCLK595=1;
	     
	  }
	SCLK595=0;
     SLATCH595=1; 
	SLATCH595=0; 
	 // Delay1(LightData[0]);
 }

//*****************************************跑动效果控制函数*********************////////
////////////////////////////////////////////////////////////////////////////////////////
void  pd_red()//红色跑动效果
 {
  uint i;
    //  clr();
      SLATCH595=0; 
    for(i=0;i<=JUMP_NUMBER_MAX;i++)
	 {
     SCLK595=0;        //蓝色
     SDATA595=OFF; 
	 SCLK595=1;

 
     SCLK595=0;        //红色
     SDATA595=ON; 
	 SCLK595=1;
	


     SCLK595=0;        //绿色 
     SDATA595=OFF; 
	 SCLK595=1;



     SCLK595=0;
     SLATCH595=1; 
	 SLATCH595=0;
     
	 Delay2(LightData[0]);
	     
	  }

 }


void  pd_green()//绿色跑动效果
 {
  uint i;
    //  clr();
      SLATCH595=0; 
    for(i=0;i<=JUMP_NUMBER_MAX;i++)
	 {
     SCLK595=0;        //蓝色
     SDATA595=OFF; 
	 SCLK595=1;

 
     SCLK595=0;        //红色
     SDATA595=OFF; 
	 SCLK595=1;
	


     SCLK595=0;        //绿色 
     SDATA595=ON; 
	 SCLK595=1;



     SCLK595=0;
     SLATCH595=1; 
	 SLATCH595=0;
     
	 Delay2(LightData[0]);
	     
	  }

 }

void  pd_blue()//蓝色跑动效果
 {
  uint i;
    //  clr();
      SLATCH595=0; 
    for(i=0;i<=JUMP_NUMBER_MAX;i++)
	 {
     SCLK595=0;        //蓝色
     SDATA595=ON; 
	 SCLK595=1;

 
     SCLK595=0;        //红色
     SDATA595=OFF; 
	 SCLK595=1;
	


     SCLK595=0;        //绿色 
     SDATA595=OFF; 
	 SCLK595=1;



     SCLK595=0;
     SLATCH595=1; 
	 SLATCH595=0;
     
	 Delay2(LightData[0]);
	     
	  }

 }

void  pd_red_green()//红绿跑动效果
 {
  uint i;
    //  clr();
      SLATCH595=0; 
    for(i=0;i<=JUMP_NUMBER_MAX;i++)
	 {
     SCLK595=0;        //蓝色
     SDATA595=OFF; 
	 SCLK595=1;

 
     SCLK595=0;        //红色
     SDATA595=ON; 
	 SCLK595=1;
	


     SCLK595=0;        //绿色 
     SDATA595=ON; 
	 SCLK595=1;



     SCLK595=0;
     SLATCH595=1; 
	 SLATCH595=0;
     
	 Delay2(LightData[0]);
	     
	  }

 }



void  pd_red_blue()//红蓝跑动效果
 {
  uint i;
    //  clr();
      SLATCH595=0; 
    for(i=0;i<=JUMP_NUMBER_MAX;i++)
	 {
     SCLK595=0;        //蓝色
     SDATA595=ON; 
	 SCLK595=1;

 
     SCLK595=0;        //红色
     SDATA595=ON; 
	 SCLK595=1;
	


     SCLK595=0;        //绿色 
     SDATA595=OFF; 
	 SCLK595=1;



     SCLK595=0;
     SLATCH595=1; 
	 SLATCH595=0;
     
	 Delay2(LightData[0]);
	     
	  }

 }

void  pd_green_blue()//绿蓝跑动效果
 {
  uint i;
    //  clr();
      SLATCH595=0; 
    for(i=0;i<=JUMP_NUMBER_MAX;i++)
	 {
     SCLK595=0;        //蓝色
     SDATA595=ON; 
	 SCLK595=1;

 
     SCLK595=0;        //红色
     SDATA595=OFF; 
	 SCLK595=1;
	


     SCLK595=0;        //绿色 
     SDATA595=ON; 
	 SCLK595=1;



     SCLK595=0;
     SLATCH595=1; 
	 SLATCH595=0;
     
	 Delay2(LightData[0]);
	     
	  }

 }

/////////*****************以上是单色混色跑动效果********************
///////////////////////////***************************************************




//*****************************以下是全彩跑动效果********************
//*************************///////////////////*******************************
void  seven_color_full()//全彩跑动效果
  {
     uint m;
    for(m=0;m<150;m++)// 循环发送的数据个数
   {	 
	 SLATCH595=0;
     SCLK595=0;        SDATA595=OFF;       SCLK595=1;//蓝
     SCLK595=0;        SDATA595=ON;      SCLK595=1;//红
	 SCLK595=0;        SDATA595=OFF;      SCLK595=1;//绿
   	 SLATCH595=1;      SLATCH595=0;       SCLK595=0;     Delay3(10);//1

	 SLATCH595=0;
     SCLK595=0;        SDATA595=OFF;      SCLK595=1;//蓝
	 SCLK595=0;        SDATA595=OFF;       SCLK595=1;//红
	 SCLK595=0;        SDATA595=ON;      SCLK595=1;//绿
     SLATCH595=1;      SLATCH595=0;       SCLK595=0;      Delay3(10);//2
                 
     SLATCH595=0;	
     SCLK595=0;        SDATA595=ON;	  SCLK595=1;//蓝
	 SCLK595=0;        SDATA595=OFF;      SCLK595=1;//红
     SCLK595=0;        SDATA595=OFF;       SCLK595=1;//绿
	 SLATCH595=1;      SLATCH595=0;       SCLK595=0;      Delay3(10);//3
	
     SLATCH595=0;
     SCLK595=0;        SDATA595=OFF;      SCLK595=1;//蓝
	 SCLK595=0;        SDATA595=ON;       SCLK595=1;//红
     SCLK595=0;        SDATA595=ON;      SCLK595=1;//绿
	 SLATCH595=1;      SLATCH595=0;       SCLK595=0;      Delay3(10);//4
                
	 SLATCH595=0;
     SCLK595=0;        SDATA595=ON;	      SCLK595=1;//蓝
	 SCLK595=0;        SDATA595=ON;      SCLK595=1;//红
     SCLK595=0;        SDATA595=OFF;      SCLK595=1;//绿
	 SLATCH595=1;      SLATCH595=0;       SCLK595=0;      Delay3(10); //5                   
      
	 SLATCH595=0;
     SCLK595=0;        SDATA595=ON;       SCLK595=1;//蓝
     SCLK595=0;        SDATA595=OFF;      SCLK595=1;//红
	 SCLK595=0;        SDATA595=ON;      SCLK595=1;//绿
   	 SLATCH595=1;      SLATCH595=0;       SCLK595=0;      Delay3(10);//6

	 SLATCH595=0;
     SCLK595=0;        SDATA595=OFF;      SCLK595=1;//蓝
	 SCLK595=0;        SDATA595=ON;       SCLK595=1;//红
	 SCLK595=0;        SDATA595=OFF;      SCLK595=1;//绿
     SLATCH595=1;      SLATCH595=0;       SCLK595=0;      Delay3(10);//7
                 
     SLATCH595=0;	
     SCLK595=0;        SDATA595=OFF;	  SCLK595=1;//蓝
	 SCLK595=0;        SDATA595=OFF;      SCLK595=1;//红
     SCLK595=0;        SDATA595=ON;       SCLK595=1;//绿
	 SLATCH595=1;      SLATCH595=0;       SCLK595=0;      Delay3(10);//8
	
     SLATCH595=0;
     SCLK595=0;        SDATA595=ON;      SCLK595=1;//蓝
	 SCLK595=0;        SDATA595=OFF;       SCLK595=1;//红
     SCLK595=0;        SDATA595=OFF;      SCLK595=1;//绿
	 SLATCH595=1;      SLATCH595=0;       SCLK595=0;      Delay3(10);//9
                
	 SLATCH595=0;
     SCLK595=0;        SDATA595=ON;	      SCLK595=1;//蓝
	 SCLK595=0;        SDATA595=ON;      SCLK595=1;//红
     SCLK595=0;        SDATA595=OFF;      SCLK595=1;//绿
	 SLATCH595=1;      SLATCH595=0;       SCLK595=0;      Delay3(10);//10                    
      
	 SLATCH595=0;
     SCLK595=0;        SDATA595=ON;       SCLK595=1;//蓝
     SCLK595=0;        SDATA595=OFF;      SCLK595=1;//红
	 SCLK595=0;        SDATA595=ON;      SCLK595=1;//绿
   	 SLATCH595=1;      SLATCH595=0;       SCLK595=0;      Delay3(10);//11

	 SLATCH595=0;
     SCLK595=0;        SDATA595=OFF;      SCLK595=1;//蓝
	 SCLK595=0;        SDATA595=ON;       SCLK595=1;//红
	 SCLK595=0;        SDATA595=OFF;      SCLK595=1;//绿
     SLATCH595=1;      SLATCH595=0;       SCLK595=0;      Delay3(10);//12
                 
     SLATCH595=0;	
     SCLK595=0;        SDATA595=OFF;	  SCLK595=1;//蓝
	 SCLK595=0;        SDATA595=OFF;      SCLK595=1;//红
     SCLK595=0;        SDATA595=ON;       SCLK595=1;//绿
	 SLATCH595=1;      SLATCH595=0;       SCLK595=0;      Delay3(10);//13
	
     SLATCH595=0;
     SCLK595=0;        SDATA595=ON;      SCLK595=1;//蓝
	 SCLK595=0;        SDATA595=OFF;       SCLK595=1;//红
     SCLK595=0;        SDATA595=OFF;      SCLK595=1;//绿
	 SLATCH595=1;      SLATCH595=0;       SCLK595=0;      Delay3(10);//14
                
	 SLATCH595=0;
     SCLK595=0;        SDATA595=ON;	      SCLK595=1;//蓝
	 SCLK595=0;        SDATA595=ON;      SCLK595=1;//红
     SCLK595=0;        SDATA595=OFF;      SCLK595=1;//绿
	 SLATCH595=1;      SLATCH595=0;       SCLK595=0;      Delay3(10); //15                   
       
	 SLATCH595=0;
     SCLK595=0;        SDATA595=ON;	      SCLK595=1;//蓝
	 SCLK595=0;        SDATA595=OFF;      SCLK595=1;//红
     SCLK595=0;        SDATA595=ON;      SCLK595=1;//绿
	 SLATCH595=1;      SLATCH595=0;       SCLK595=0;      Delay3(10);//16
     
	 
	

	   }


  }

void clr()//清零函数
 {
	uint i;
    SLATCH595=0; 
    for(i=0;i<=JUMP_NUMBER_MAX;i++)
	   {
         SCLK595=0;        //bit 24 shift-out 
         SDATA595=OFF; 
	     SCLK595=1;

 
         SCLK595=0;        //bit 24 shift-out 
         SDATA595=OFF; 
	     SCLK595=1;
	


         SCLK595=0;        //bit 24 shift-out 
         SDATA595=OFF; 
	     SCLK595=1;
	   }
	     SCLK595=0; 
         SLATCH595=1; 
         SLATCH595=0; 

   //Delay1(LightData[0]);
  
	      
 }


 

⌨️ 快捷键说明

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