代码
#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制图
|