0x1C,0x81,0x0E,0xC0,0x04,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //\
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };
unit disp1,disp2,key1,key2; unit a,w,ii,jj,kk; void Delay(unit ms) {
while(--ms); }
void display_HZ(void) {
gate11=key1;gate12=key2;
for(ii=0;ii<5;ii++){
for(jj=0;jj<16;jj++){
P2=~GB_16[jj*2+ii*32+kk*2];P1=~GB_16[1+jj*2+ii*32+kk*2];
Delay(120);
P1=0xff;P2=0xff; }
P1=0xff;P2=0xff; } }
void intersvr0(void) interrupt 0 {
key1=!key1; key2=!key2; w=1;
if(kk<240) kk++; else kk=0; }
void main(void) {
EA=1;IT0=1;EX0=1; key1=0;key2=1; for(;;){ w=0;
Delay(40);
if(w==1) display_HZ(); } }
LED旋转屏原理浅说 2008-01-22 11:16
如果你在网上用google搜索“POV led”一词(POV即persistancd of vision),会找到世界各地的各种LED 旋转屏的制作介绍。那些摇晃出的空中图案,漂浮在车轮上的动画,以及形态各异的时钟,一定给你留下深刻印象。看到这些千奇百怪、创意无限的电子作品,除了羡慕、敬佩、感叹外,你是否想过自己亲自动手也做一个,做一个属于你自己的LED旋转屏呢?其实,无论你看到的LED旋转屏如何神奇,如何复杂,其原理都一样,也很简单,说白了就是一个晃动的流水灯。
在51单片机最简系统的其中的一个端口P0接上8个LED,就是一个典型的流水灯实验电路。由于没有几个元件,说干就干,把所有元件焊在万能板上,不需花费多长时间,就可完成整个制作。
下面是随便找一个流水灯的C51程序 #include
void main(void) {
unsigned int i,ch; ch=0x01; while(1) {
for(i=500;i>0;i--);
if(ch==0x00) ch=0x01; else ch=ch<<1; P0=~ch; } }
将这程序编译下载到系统的单片机上,待LED灯光开始正常开跑后,我们拿着它在手上来回晃动,你发现这光已经不是一条竖直线了,它已经变成了一条条斜线。你可以适当修改程序中的延时,让这一连串的斜线更漂亮些(宽和高基本一致),怎么样,我们的最简LED旋转屏就这样做成了。
高兴之余,发现这与我们的目标好象还有点遥远,我们并不需要这些斜线,怎样才能做出网上的那些大虾那样显示的各种各样的文字图案呢?接下来,我们还得想其它办法,换一下思路,将需要的图案数据一串存在数组中,运行时又将数据一串串读出来,驱动LED,这样就能看到我们想看到的图案了。
这是用此思路编的流水灯C51程序 #include
code unsigned char led[]={0x01,0x02, 0x04,0x08,0x10,0x20,0x40,0x80}; void main(void) {
unsigned int i,j; while(1) {
for(j=0;j<8;j++){ P0=~led[j];
for(i=3000;i>0;i--); } } }
运行看一下, 结果与我们的第一个程序效果是一样的,但这个程序的优势在