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依次点亮。
仿真
代码
#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;
}
}
}
上一篇: mybatis 学习笔记(一)