代码
#include "reg51.h"
sbit D0 = P2^0;//定义led灯的键值
sbit D1 = P2^1;
sbit D2 = P2^2;
sbit D3 = P2^3;
sbit D4 = P2^4;
sbit D5 = P2^5;
sbit D6 = P2^6;
sbit D7 = P2^7;
sbit k0 = P0^0;
sbit k1 = P0^1;
sbit k2 = P0^2;
sbit k3 = P0^3;
unsigned char led[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//LED灯数据
void delay(unsigned char time){//延时函数
unsigned int j=15000;
for(;time>0;time--)
for(;j>0;j--);
}
void main(){
char i;
if (k0==0){
while(1){ //1~4,5~8交替点亮
D0 = 0;
D1 = 0;
D2 = 0;
D3 = 0;
D4 = 1;
D5 = 1;
D6 = 1;
D7 = 1;
delay(1500);
D0 = 1;
D1 = 1;
D2 = 1;
D3 = 1;
D4 = 0;
D5 = 0;
D6 = 0;
D7 = 0;
delay(1500);
}
}
if(k1==0){
while(1){ //依次交替点亮
D0 = 0;
D1 = 1;
D2 = 0;
D3 = 1;
D4 = 0;
D5 = 1;
D6 = 0;
D7 = 1;
delay(1500);
D0 = 1;
D1 = 0;
D2 = 1;
D3 = 0;
D4 = 1;
D5 = 0;
D6 = 1;
D7 = 0;
delay(1500);
}
}
if(k2==0){
while(1){ //由上至下
for(i=7;i>=0;i--){
P2=led[i];
delay(1500);
}
}
}
if(k3==0){
while(1){ //由下至上
for(i=0;i<=7;i++){
P2=led[i];
delay(1500);
}
}
}
}
Proteus制图
将代码在Keil uVision4中编译生成hex文件导入isis制图