專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

LED彩色護欄管程序---1個IO口搞定!

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2012年04月30日   【字體:
/*************************************
MCU:STC12C56      晶振:12MHZ
*************************************/
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint  unsigned int

#define RGB_count  20
#define RGB_speed  30

sbit DIN=P1^2;
/*************0碼*******************/
void DIN_bit_0()
{
 uchar i;
 DIN=1;
 for(i=1;i>0;i--);    //低速模式   1+3+4*3+1
 _nop_();
 DIN=0;        //1+3+4*7
 for(i=3;i>0;i--); 
}
/*************1碼*******************/
void DIN_bit_1()
{
 uchar i;
 DIN=1;       //1+3+4*7+1
 for(i=3;i>0;i--);
 _nop_();
 DIN=0;
 for(i=1;i>0;i--);   //1+3+4*3
  
}
/*************reset碼*******************/
void reset()
{
 uint i;
 DIN=0;
 for(i=250;i>0;i--);   
}
/*************數(shù)據(jù)傳輸******************/
void send_dat(uchar dat)  //高位先傳
{
    uchar i;
    for(i=8;i>0;i--)
    {
        if(dat & 0x80)  DIN_bit_1();
            else        DIN_bit_0();
        dat <<=1;
    }
}
/***************延時******************/
void delay(uchar t)
{
 unsigned long j;
    while(t--)   for(j=0;j<1000;j++);
}
/*************主程序******************/
void main()
{
 uchar i,n,num,t;
 while(1)
 {
 /*************R漸亮*******************/
  for(i=0;i<255;i++)
  {
   for(n=RGB_count;n>0;n--)
   {
    send_dat(i);
    send_dat(0);
    send_dat(0);
   }
   reset();
   delay(1);
  }
  /*************R漸滅*******************/
  for(i=255;i>0;i++)
  {
   for(n=RGB_count;n>0;n--)
   {
    send_dat(i);
    send_dat(0);
    send_dat(0);
   }
   reset();
   delay(1);
  }
  /*************G漸亮*******************/
  for(i=0;i<255;i++)
  {
   for(n=RGB_count;n>0;n--)
   {
    send_dat(0);
    send_dat(i);
    send_dat(0);
   }
   reset();
   delay(1);
  }
  /*************G漸滅*******************/
  for(i=255;i>0;i++)
  {
   for(n=RGB_count;n>0;n--)
   {
    send_dat(0);
    send_dat(i);
    send_dat(0);
   }
   reset();
   delay(1);
  }
  /*************B漸亮*******************/
  for(i=0;i<255;i++)
  {
   for(n=RGB_count;n>0;n--)
   {
    send_dat(0);
    send_dat(0);
    send_dat(i);
   }
   reset();
   delay(1);
  }
  /*************B漸滅*******************/
  for(i=255;i>0;i++)
  {
   for(n=RGB_count;n>0;n--)
   {
    send_dat(0);
    send_dat(0);
    send_dat(i);
   }
   reset();
   delay(1);
  }
  /*************RG漸亮*******************/
  for(i=0;i<255;i++)
  {
   for(n=RGB_count;n>0;n--)
   {
    send_dat(i);
    send_dat(i);
    send_dat(0);
   }
   reset();
   delay(1);
  }
  /*************RG漸滅*******************/
  for(i=255;i>0;i++)
  {
   for(n=RGB_count;n>0;n--)
   {
    send_dat(i);
    send_dat(i);
    send_dat(0);
   }
   reset();
   delay(1);
  }
  /*************GB漸亮*******************/
  for(i=0;i<255;i++)
  {
   for(n=RGB_count;n>0;n--)
   {
    send_dat(0);
    send_dat(i);
    send_dat(i);
   }
   reset();
   delay(1);
  }
  /*************GB漸滅*******************/
  for(i=255;i>0;i++)
  {
   for(n=RGB_count;n>0;n--)
   {
    send_dat(0);
    send_dat(i);
    send_dat(i);
   }
   reset();
   delay(1);
  }
  /*************RB漸亮*******************/
  for(i=0;i<255;i++)
  {
   for(n=RGB_count;n>0;n--)
   {
    send_dat(i);
    send_dat(0);
    send_dat(i);
   }
   reset();
   delay(1);
  }
  /*************RB漸滅*******************/
  for(i=255;i>0;i++)
  {
   for(n=RGB_count;n>0;n--)
   {
    send_dat(i);
    send_dat(0);
    send_dat(i);
   }
   reset();
   delay(1);
  }
  /*************RGB全滅*******************/
  for(num=RGB_count;num>0;num--)
        {
            send_dat(0);
            send_dat(0);
            send_dat(0);
        }
        reset();
  /*************B跑馬燈增加*******************/
  for(i=0;i<RGB_count;i++) 
        {
            for(num=0;num<i;num++)
            {
                send_dat(0);
                send_dat(0);
                send_dat(255);
            }
            reset();
            for(t=RGB_speed;t>0;t--)  delay(1);
        }
  /*************B跑馬燈減少*******************/
        for(i=RGB_count;i>0;i--) 
        {
            for(num=0;num<i;num++)
            {
                send_dat(0);
                send_dat(0);
                send_dat(255);
            }
            reset();
            for(t=RGB_speed;t>0;t--)  delay(1);
   /*************RGB全滅*******************/
   for(num=RGB_count;num>0;num--)
            {
                send_dat(0);
                send_dat(0);
                send_dat(0);
            }
            reset();
  }
  /*************G跑馬燈增加*******************/
  for(i=0;i<RGB_count;i++)
        {     
            for(num=0;num<i;num++)
            {
                send_dat(0);
                send_dat(255);
                send_dat(0);
            }
            reset();
            for(t=RGB_speed;t>0;t--)  delay(1);
        }
        /*************G跑馬燈減少*******************/           
        for(i=RGB_count;i>0;i--) 
        {
            for(num=0;num<i;num++)
            {
                send_dat(0);
                send_dat(255);
                send_dat(0);
            }
            reset();
            for(t=RGB_speed;t>0;t--)  delay(1);
   /*************RGB全滅*******************/
   for(num=RGB_count;num>0;num--)
            {
                send_dat(0);
                send_dat(0);
                send_dat(0);
            }
            reset();
  }
  /*************R跑馬燈增加*******************/
  for(i=0;i<RGB_count;i++)
        {
            for(num=0;num<i;num++)
            {
                send_dat(255);
                send_dat(0);
                send_dat(0);
            }
            reset();
            for(t=RGB_speed;t>0;t--)  delay(1);
        }
  /*************R跑馬燈減少*******************/
        for(i=RGB_count;i>0;i--)
        {
            for(num=0;num<i;num++)
            {
                send_dat(255);
                send_dat(0);
                send_dat(0);
            }
            reset();
            for(t=RGB_speed;t>0;t--)  delay(1);
    /*************RGB全滅*******************/
            for(num=RGB_count;num>0;num--)
            {
                send_dat(0);
                send_dat(0);
                send_dat(0);
            }
            reset();
        }
  /*************RG跑馬燈增加*******************/
  for(i=0;i<RGB_count;i++)
        {     
            for(num=0;num<i;num++)
            {
                send_dat(255);
                send_dat(255);
                send_dat(0);
            }
            reset();
            for(t=RGB_speed;t>0;t--)  delay(1);
        }
        /*************RG跑馬燈減少*******************/           
        for(i=RGB_count;i>0;i--) 
        {
            for(num=0;num<i;num++)
            {
                send_dat(255);
                send_dat(255);
                send_dat(0);
            }
            reset();
            for(t=RGB_speed;t>0;t--)  delay(1);
   /*************RGB全滅*******************/
   for(num=RGB_count;num>0;num--)
            {
                send_dat(0);
                send_dat(0);
                send_dat(0);
            }
            reset();
  }
  /*************GB跑馬燈增加*******************/
  for(i=0;i<RGB_count;i++)
        {     
            for(num=0;num<i;num++)
            {
                send_dat(0);
                send_dat(255);
                send_dat(255);
            }
            reset();
            for(t=RGB_speed;t>0;t--)  delay(1);
        }
        /*************GB跑馬燈減少*******************/           
        for(i=RGB_count;i>0;i--) 
        {
            for(num=0;num<i;num++)
            {
                send_dat(0);
                send_dat(255);
                send_dat(255);
            }
            reset();
            for(t=RGB_speed;t>0;t--)  delay(1);
   /*************RGB全滅*******************/
   for(num=RGB_count;num>0;num--)
            {
                send_dat(0);
                send_dat(0);
                send_dat(0);
            }
            reset();
  }
  /*************RB跑馬燈增加*******************/
  for(i=0;i<RGB_count;i++)
        {     
            for(num=0;num<i;num++)
            {
                send_dat(255);
                send_dat(0);
                send_dat(255);
            }
            reset();
            for(t=RGB_speed;t>0;t--)  delay(1);
        }
        /*************RB跑馬燈減少*******************/           
        for(i=RGB_count;i>0;i--) 
        {
            for(num=0;num<i;num++)
            {
                send_dat(255);
                send_dat(0);
                send_dat(255);
            }
            reset();
            for(t=RGB_speed;t>0;t--)  delay(1);
   /*************RGB全滅*******************/
   for(num=RGB_count;num>0;num--)
            {
                send_dat(0);
                send_dat(0);
                send_dat(0);
            }
            reset();
  }
     /*************RGB跑馬燈增加*******************/
  for(i=0;i<RGB_count;i++)
        {
            for(num=0;num<i;num++)
            {
                send_dat(255);
                send_dat(255);
                send_dat(255);
            }
            reset();
            for(t=RGB_speed;t>0;t--)  delay(1);
        }
  /*************RGB跑馬燈減少*******************/
        for(i=RGB_count;i>0;i--)
        {
            for(num=0;num<i;num++)
            {
                send_dat(255);
                send_dat(255);
                send_dat(255);
            }
            reset();
            for(t=RGB_speed;t>0;t--)  delay(1);
   /*************RGB全滅*******************/
            for(num=RGB_count;num>0;num--)
            {
                send_dat(0);
                send_dat(0);
                send_dat(0);
            }
            reset();
        }  
 }
}
關(guān)閉窗口

相關(guān)文章