中国领先的单片机及嵌入式资讯、教程、开发工具提供者!
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

51单片机LED流星雨拖尾灯程序+视频

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

流星雨就是几个亮度不同的灯一起滚动,亮度依次更暗,像流星雨拖着尾巴。
控制全彩(三色)led也可以用同样的概念编程。
用的是51的单片机pwm实现的拖尾效果


程序的解说以及视频演示请打开http://www.51hei.com/bbs/dpj-22524-1.html 里面有详细的说明.
程序源码:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char

uchar abit=16; //流到哪位
uchar atimer0_n;
uchar code abit8[9]={1,2,4,8,16,32,64,128,0};
uchar nn;
char a,b,c,d;

main()
{ TMOD = 0x11; 
 TL0 = 0x00;  //2.5ms
 TH0 = 0xF7; 
 TF0 = 0;  
 TR0 = 1; 
 EA=1;ET0=1;
 while(1)
 {
  a=abit;
  if(a>7||a<0)
  a=8;
  b=abit-1;
  if(b>7||b<0)
   b=8;
  c=abit-2;
  if(c>7||c<0)
   c=8;
   d=abit-3;
  if(d>7||d<0)
   d=8;
 
  
 atimer0_n++;
 if(atimer0_n==255)
 atimer0_n=0;
 if(atimer0_n<5)
  P1=0xff-abit8[a];
 if(atimer0_n<40)
  P1=0xff-abit8[b];
 if(atimer0_n<150)
  P1=0xff-abit8[c]; 
 if(atimer0_n<255)
  P1=0xff-abit8[d]; 
 }
}

atimer0 () interrupt 1

 TL0 = 0x00;  //50ms
 TH0 = 0x4C;
 nn++;
 if(nn==2)
 {
  nn=0;abit--;
   if(abit==0)
   abit=16;
 }

  
}

发表评论】【告诉好友】【收藏此文】【关闭窗口

文章评论

相关文章