单片机流水灯c语言源代码.doc
#include<reg52.h>#include<intrins.h>#define uint unsigned int #define uchar unsigned charuchar z=50,e=0x00,f=0xff;uchar code table1= 0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff;uchar code table2=0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00;uchar code table3=0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff;uchar code table4=0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff;uchar code table5=0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff;uchar code table6=0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e,0xff;void delay(uchar); void lsd1(); void lsd2(); void lsd3();void lsd4(); void lsd5();void lsd6();void lsd7(); void lsd8();void lsd9(); void lsd10(); void lsd11();void lsd12();main()while(1) lsd1(); lsd2();lsd3(); lsd4();lsd5(); lsd6(); lsd7();lsd8();lsd9();lsd10(); lsd11(); lsd12(); void delay(uchar x) /延时函数uint i,j;for(i=x;i>0;i-)for(j=250;j>0;j-); void lsd1() /lsd1 单个流水灯双程模式1uchar a,i,j,k,l,l1,k1,j1,i1;a=0xfe;P0=a;delay(z);for(i=0;i<7;i+) /仅单个灯亮从上往下流a=_crol_(a,1);P0=a;delay(z);P0=0xff;a=0xfe;P2=a;delay(z);for(j=0;j<7;j+)a=_crol_(a,1);P2=a;delay(z);P2=0xff;a=0xfe;P3=a;delay(z);for(k=0;k<7;k+)a=_crol_(a,1);P3=a;delay(z);P3=0xff;a=0xfe;P1=a;delay(z);for(l=0;l<7;l+)a=_crol_(a,1);P1=a;delay(z);a=0xbf;P1=a;delay(z);for(l1=0;l1<6;l1+)/l1=6 仅单个灯亮从下往上流a=_cror_(a,1);P1=a;delay(z);P1=0xff;a=0x7f;P3=a;delay(z);for(k1=0;k1<7;k1+)a=_cror_(a,1);P3=a;delay(z);P3=0xff;a=0x7f;P2=a;delay(z);for(j1=0;j1<7;j1+)a=_cror_(a,1);P2=a;delay(z);P2=0xff;a=0x7f;P0=a;delay(z);for(i1=0;i1<7;i1+)a=_cror_(a,1);P0=a;delay(z);P0=0xff;void lsd2() /lsd2 两个灯流水双程模式1uchar a,i,j,k,l,l1,k1,j1,i1;a=0xfe;P0=a;delay(z);a=a<<1;P0=a;delay(z);for(i=0;i<6;i+) a=_crol_(a,1);P0=a;delay(z);P0=0x7f;P2=0xfe;delay(z);P0=0xff;a=0xfc;P2=a;delay(z);for(j=0;j<6;j+)a=_crol_(a,1);P2=a;delay(z);P2=0x7f;P3=0xfe;delay(z);P2=0xff;a=0xfc;P3=a;delay(z);for(k=0;k<6;k+)a=_crol_(a,1);P3=a;delay(z);P3=0x7f;P1=0xfe;delay(z);P3=0xff;a=0xfc;P1=a;delay(z);for(l=0;l<6;l+)a=_crol_(a,1);P1=a;delay(z);P1=0x7f;delay(z);P1=0xff;delay(z);a=0x7f;P1=a;delay(z);a=a>>1;P1=a;delay(z);for(l1=0;l1<6;l1+)a=_cror_(a,1);P1=a;delay(z);P1=0xfe;P3=0x7f;delay(z);P1=0xff;a=0x3f;P3=a;delay(z);for(k1=0;k1<6;k1+)a=_cror_(a,1);P3=a;delay(z);P3=0xfe;P2=0x7f;delay(z);P3=0xff;a=0x3f;P2=a;delay(z);for(j1=0;j1<6;j1+)a=_cror_(a,1);P2=a;delay(z);P2=0xfe;P0=0x7f;delay(z);P2=0xff;a=0x3f;P0=a;delay(z);for(i1=0;i1<6;i1+)a=_cror_(a,1);P0=a;delay(z);P0=0xfe;delay(z);P0=0xff;delay(z); void lsd3()/lsd3 两个灯流水双程模式2 uchar a,i,j,k,l,l1,k1,j1,i1;a=0xfe;P0=a;delay(z);a=a<<1;P0=a;delay(z);for(i=0;i<6;i+)/_crol_与_cror_混合使用a=_crol_(a,1);P0=a;delay(z);P0=0x7f;a=0x7f;P2=a;delay(z);P0=f;a=a>>1;P2=a;delay(z);for(j=0;j<6;j+)a=_cror_(a,1);P2=a;delay(z);P2=0xfe;a=0xfe;P3=a;delay(z);P2=f; a=a<<1;P3=a;delay(z);for(k=0;k<6;k+)a=_crol_(a,1);P3=a;delay(z);P3=0x7f;a=0x7f;P1=a;delay(z);P3=f;a=a>>1;P1=a;delay(z);for(l=0;l<6;l+)a=_cror_(a,1);P1=a;delay(z);P1=0xfe;delay(z);P1=f;delay(z);a=0xfe;P1=a;delay(z);a=a<<1;P1=a;delay(z);for(l1=0;l1<6;l1+) /l1=6a=_crol_(a,1);P1=a;delay(z);P1=0x7f;a=0x7f;P3=a;delay(z);P1=f;a=a>>1;P3=a;for(k1=0;k1<6;k1+)a=_cror_(a,1);P3=a;delay(z);P3=0xfe;a=0xfe;P2=a;delay(z);P3=f;a=a<<1;P2=a;delay(z);for(j1=0;j1<6;j1+)a=_crol_(a,1);P2=a;delay(z);P2=0x7f;a=0x7f;P0=a;delay(z);P2=f;a=a>>1;P0=a;delay(z);for(i1=0;i1<6;i1+)a=_cror_(a,1);P0=a;delay(z);P0=0xfe;delay(z);P0=f;delay(z);void lsd4() /lsd4uchar a,i,j,k,l,l1,k1,j1,i1; a=0xfe;P0=a;delay(z);for(i=0;i<7;i+)a=a<<1; /单个灯依次点亮所有灯,从上往下P0=a;delay(z);a=0xfe;P2=a;delay(z);for(j=0;j<7;j+)a=a<<1;P2=a;delay(z);a=0xfe;P3=a;delay(z);for(k=0;k<7;k+)a=a<<1;P3=a;delay(z);a=0xfe;P1=a;delay(z);for(l=0;l<7;l+)a=a<<1;P1=a;delay(z);for(l1=0;l1<8;l1+) /l1=8P1=table1l1; /单个灯依次熄灭所有灯,从下往上delay(z); for(k1=0;k1<8;k1+)P3=table1k1;delay(z); for(j1=0;j1<8;j1+)P2=table1j1;delay(z); for(i1=0;i1<8;i1+)P0=table1i1;delay(z); void lsd5() /lsd5uchar a,i,j,k,l,l1,k1,j1,i1;a=0xfe;P0=a;delay(z);for(i=0;i<7;i+)a=a<<1;P0=a;delay(z);for(j=0;j<8;j+) /单个灯依次点亮所有灯,从下往上P2=table2j;delay(z);a=0xfe;P3=a;delay(z);for(k=0;k<7;k+)a=a<<1;P3=a;delay(z);for(l=0;l<8;l+)P1=table2l;delay(z);for(l1=0;l1<8;l1+) /单个灯依次熄灭所有灯,从上往下P1=table3l1;delay(z);for(k1=0;k1<8;k1+)P3=table1k1;delay(z); for(j1=0;j1<8;j1+) /单个灯依次熄灭所有灯,从上往下P2=table3j1;delay(z); for(i1=0;i1<8;i1+)P0=table1i1;delay(z); void lsd6() /每组为单位同亮同灭从左向右再向左P0=0x00;delay(z);P0=0xff;P2=0x00;delay(z);P2=0xff;P3=0x00; delay(z);P3=0xff;P1=0x00;delay(z);P3=0x00;P1=0xff;delay(z);P2=0x00;P3=0xff;delay(z);P0=0x00;P2=0xff;delay(z);P0=0xff;delay(z); void lsd7() /lsd7 全亮全灭 uchar i;for(i=0;i<2;i+) P0=0x00;P1=0x00;P2=0x00;P3=0x00;delay(z);P0=0xff;P1=0xff;P2=0xff;P3=0xff;delay(z); void lsd8() /每组仅两个灯,从中间往两边再往中间uchar i;for(i=0;i<8;i+) P0=table4i;P1=table4i; P2=table4i;P3=table4i;delay(z); void lsd9() /每组两个灯引亮所有灯再引灭,从中间带两边再到中间uchar i;for(i=0;i<8;i+) P0=table5i;P1=table5i; P2=table5i;P3=table5i;delay(z);void lsd10()uchar a,i,j;a=0xfe;P0=a;P1=a;P2=a;P3=a;delay(z);for(i=0;i<7;i+) /仅单个灯亮从上往下流a=_crol_(a,1);P0=a;P1=a; P2=a; P3=a;delay(z);for(j=0;j<7;j+) /仅单个灯亮从上往下流a=_cror_(a,1);P0=a;P1=a; P2=a; P3=a;delay(z);P0=f;P1=f;P2=f;P3=f;delay(z); void lsd11()uchar a,i,j;a=0xfe;P0=a;P1=a;P2=a;P3=a;delay(z);for(i=0;i<7;i+)a=a<<1;P0=a;P1=a;P2=a;P3=a;delay(z);for(j=0;j<8;j+)P0=table1j;P1=table1j;P2=table1j;P3=table1j;delay(z);void lsd12()uchar a,i,j,k,l;a=0xfe;P0=a;P1=a;delay(z);for(i=0;i<7;i+)a=a<<1;P0=a; P1=a;delay(z);a=0x7f;P2=a;P3=a;delay(z);for(j=0;j<7;j+)a=a>>1;P2=a; P3=a;delay(z);for(k=0;k<8;k+)P2=table3k;P3=table3k;delay(z);for(l=0;l<8;l+)P0=table1l;P1=table1l;delay(z);while(1); 15 / 15