51单片机流水灯程序
程序一(用C语言编的最基础的程序) #include
sbit D0=P1^0;//位定义,把P1口的第一个管脚定义为D0 sbit D1=P1^1;// 位定义,把P1口的第二个管脚定义为D1 sbit D2=P1^2;// 位定义,把P1口的第3个管脚定义为D2 sbit D3=P1^3;// 位定义,把P1口的第4个管脚定义为D3 sbit D4=P1^4;// 位定义,把P1口的第5个管脚定义为D4 sbit D5=P1^5;// 位定义,把P1口的第6个管脚定义为D5 sbit D6=P1^6;// 位定义,把P1口的第7个管脚定义为D6 sbit D7=P1^7;// 位定义,把P1口的第8个管脚定义为D7 void main() {
while(1)//建立大的死循环。 {
unsigned int i,j;
D0=0,D7=1;//亮灯1,关灯8 for(i=50;i>0;i--)
for(j=200;j>0;j--);//两个FOR组成的延时
D0=1,D1=0;// 亮灯2,关灯1 for(i=50;i>0;i--) for(j=200;j>0;j--); D1=1,D2=0;
for(i=50;i>0;i--) for(j=200;j>0;j--); D2=1,D3=0; for(i=50;i>0;i--) for(j=200;j>0;j--); D3=1,D4=0; for(i=50;i>0;i--) for(j=200;j>0;j--); D4=1,D5=0; for(i=50;i>0;i--) for(j=200;j>0;j--); D5=1,D6=0; for(i=50;i>0;i--) for(j=200;j>0;j--); D6=1,D7=0; for(i=50;i>0;i--) for(j=200;j>0;j--); }
}
程序二(用swich case语句编的)
#include
unsigned int i=1,a,b; while(1)//大循环 {
for(i=1;i<15;i++) {
for(a=0;a<80;a++)//延时。 for(b=0;b<200;b++); switch(i) {
case 1:
d2=1,d1=0,d8=1; break; case 2: d1=1,d2=0; break; case 3: d2=1,d3=0; break; case 4: d3=1,d4=0; break; case 5: d4=1,d5=0; break; case 6: d5=1,d6=0; break;
case 7: d6=1,d7=0; break; case 8: d7=1,d8=0; break; case 9: d8=1,d7=0; break; case 10: d7=1,d6=0; break; case 11: d6=1,d5=0; break; case 12: d5=1,d4=0; break; case 13: d4=1,d3=0; break; case 14: d3=1,d2=0; break; } }; } }
程序三(最简洁的): #include
#include
unsigned int i,j; for(i=0;i void main() { unsigned char d; d=0xfe; while(1)// { for(;d>0x7f;) { P1=d; delay(100);//调用延时子函数延时。 d=_crol_(d,1);//循环左移。 } for(;d<0xfe;) { P1=d; delay(100); d=_cror_(d,1);//循环右移,让灯倒回去。 } } } 数码管流水灯: #include void delay(unsigned int a) { unsigned int b; b=a; while(b>0) b--; } void main() { unsigned int i,j; unsigned code A[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0x3f:为0,即数码管亮“0”。 P2=0;//打开数码管的第一个, P0=j;//对数码管进行赋值 while(1) { i=0; for(j=0;j<16;j++) { P2=i; P0=A[j]; delay(50000); i++; } } } 数码管程序二: #include void delay(unsigned int a) { unsigned int b; b=a; while(b>0) b--; } void main() { int i,j; unsigned code A[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; P2=0; P0=j; while(1) { j=0; for(i=0;i<8;i++) { P2=i; P0=A[j]; delay(50000); j++; } for(i=7;i>=0;i--) { P2=i; P0=A[j]; delay(50000); j++; } } }