欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

1.流水灯

程序员文章站 2022-07-12 22:36:47
...

1.流水灯

题目:使用独立按键切换流水灯的不同模式,AT89S51单片机的P0.0-P0.7接八个发光二极管L1-L8,P1.4-P1.7接了四个开关K1-K4,编程按下K1,流水灯自上而下,按下K2,流水灯自下而上,按下K3,流水灯的L1、L3、L5、L7依次点亮,按下K4,流水灯的L2、L4、L6、L8依次点亮。

仿真
1.流水灯

代码
#include <reg52.h>
#define uint unsigned int //定义单元的无符号整数
#define uchar unsigned char//表示之后代码中的“uchar”全部代表“unsigned char”
void delay(uint ms)
{
uint t;
while(ms–)
{
for(t=0;t<112;t++)
{
}
}
}
sbit k=P1^4;
void main()
{
while(1)
{
switch(P1)
{

	 case 0xef:
	P0=0xfe;
	delay(200);	 //点亮第一个灯
	P0=0xfd;
	delay(200);	 //点亮第二个灯
	P0=0xfb;
	delay(200);	 //点亮第三个灯
	P0=0xf7;
	delay(200);	 //点亮第四个灯
	P0=0xef;
	delay(200);	 //点亮第五个灯
	P0=0xdf;
	delay(200);	 //点亮第六个灯
	P0=0xbf;
	delay(200);	 //点亮第七个灯
	P0=0x7f;
	delay(200);	 //点亮第八个灯
	break; 
	 case 0xdf:
	P0=0x7f;
	delay(200);	 //点亮第八个灯
	P0=0xbf;
	delay(200);	 //点亮第七个灯
	P0=0xdf;
	delay(200);	 //点亮第六个灯
	P0=0xef;
	delay(200);	 //点亮第五个灯
	P0=0xf7;
	delay(200);	 //点亮第四个灯
	P0=0xfb;
	delay(200);	 //点亮第三个灯
	P0=0xfd;
	delay(200);	 //点亮第二个灯
	P0=0xfe;
	delay(200);	 //点亮第一个灯
	break;
	case 0xbf:
	P0=0xfe;
	delay(200);	 //点亮第一个灯
	P0=0xfb;
	delay(200);	 //点亮第三个灯
	P0=0xef;
	delay(200);	 //点亮第五个灯
	P0=0xbf;
	delay(200);	 //点亮第七个灯
	break;
	case 0x7f:
	P0=0xfd;
	delay(200);	 //点亮第二个灯
	P0=0xf7;
	delay(200);	 //点亮第四个灯
	P0=0xdf;
	delay(200);	 //点亮第六个灯
	P0=0x7f;
	delay(200);	 //点亮第八个灯
	break; 

}
}
}

相关标签: 单片机 流水灯