专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

单片机控制LED流水灯从中间向两边,从两边向中间

作者:佚名   来源:本站原创   点击数:  更新时间:2008年09月20日   【字体:

  这个就是把 先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;不过这个程序实现的 应该是这样的  先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动;再从中间往两边流动;

#include< reg52.h>
#include< intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delay();
void main()
{ uchar temp,temp1,temp2,a,b;
   P3=0xff; 
  while(1)
{   for(b=3;b>0;b--) 
 { temp=0xaa;
   P1=temp; 
   delay();
   temp=0x55; 
   P1=temp;
   delay();
  }
  for(a=3;a>0;a--) 
    { temp=0xfe;
     for(b=7;b>0;b--)
     {  P1=temp;
        temp=_crol_(temp,1);
        delay();
        P1=temp;
        delay();
     }
          } 
       temp1=0xfe; 
    temp2=0x7f;
   for(a=8;a>0;a--)
   {  
    temp=temp1&temp2;
    P1=temp;
    delay();
   temp1=_crol_(temp1,1);
   temp2=_cror_(temp2,1);
   }
 
}
}
void delay()
{ uint a,b;
 for(a=100;a>0;a--)
 for(b=600;b>0;b--);
}

   程序实现的第2种方法:下面是http://www.51hei.com单片机12群里的朋友木信大侠提出的,实现单片机led流水灯从中间向两边,从两边向中间的效果,下面的程序就是实现思路,这个是直接调用,应该明白吧,数组那其实也可以改一下,如采用一维数组,在多次调用;也可以采用二维数组。主要看个人喜好.
-----------------------------------------------------
#include< reg52.h>
unsigned char code TABLE[]={
0xFF,0xE7,0xC3,0x81,0x00,     //从中间向两侧点亮
0xFF,0xE7,0xC3,0x81,0x00, 
0xFF,0xE7,0xC3,0x81,0x00,
0xFF,0x7E,0x3C,0x18,0x00,     //从两侧向中间点亮
0xFF,0x7E,0x3C,0x18,0x00,
0xFF,0x7E,0x3C,0x18,0x00
}; 
unsigned char i; 

DELAY()
{
     unsigned int s;  
for(s=0;s<30000;s++); 
}

main()
{
     while(1)
{
if(TABLE[i]!=0x01) 
{
   P1=TABLE[i];     
   i++;
   DELAY();
  }

  else
  {
   i=0; 
  }
}
}

关闭窗口