当前位置:首页 > 基于AT89C51的篮球比赛计分器设计
基于AT89C51的篮球比赛计分器
0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段选 unsigned char dispbit[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};
//位选
main()
{ a=0;b=0;m=0; while (1) {
unsigned key; LED(); // 显示数码管
key=keyscan();//调用键盘扫描, switch (key)
{ case 0x7e: a=a+1;LED(); break;
//a队加1 case 0x7d: a=a+2;LED(); break; /a队加2 case 0x7b: a=a+3;LED(); break;
//a队加3
case 0x77: a=0;b=0;kaishi(); break;
// 复位
case 0xbe: ajian(1);LED(); break;
//a队减1 case 0xbd: ajian(2);LED(); break; //a队减2 case 0xbb: ajian(3);LED(); break;
//a队减3
case 0xb7: jixu(); break; 暂停,继续
case 0xde : b=b+1;LED(); break; //b队加1 case 0xdd: b=b+2;LED(); break; //b队加2
case 0xdb: b=b+3;LED(); break;
//b队加3
case 0xd7: exchange();LED(); break;
//交换比分
2
//
基于AT89C51的篮球比赛计分器
case 0xee: bjian(1);LED(); break;
case 0xed: bjian(2);LED(); break; case 0xeb: bjian(3);LED(); break;
//b队减1
//b队减2 //b队减3
case 0xe7:guan(); break; //关
}
} }
void kaishi() {
m=1;
LED(); }
void ajian(int t) {
if(a>=t) {a=a-t; } }
void bjian(int t) {
if(b>=t) {b=b-t; } } void jixu() {
3
闭基于AT89C51的篮球比赛计分器
m=!m;
LED(); }
void guan() { m=0; }
void exchange () { } void LED() {
unsigned int i,d,LedNumVal=1 ; unsigned int LedOut[10]; unsigned int DelayCNT=0; for(d=0;d<30;d++) {
if(++DelayCNT>=20) {
DelayCNT=0;
//20个扫描周期清零一次
//控制数字变化速度
//变量定义
unsigned int i; i=a; a=b; b=i; LED();
//变量定义
}
4
基于AT89C51的篮球比赛计分器
if(m==1)
{ LedOut[2]=Disp_Tab[a/100];
LedOut[1]=Disp_Tab[a0/10]; LedOut[0]=Disp_Tab[a]; LedOut[3]=0x40;
LedOut[4]=0x40;
LedOut[7]=Disp_Tab[b/100]; LedOut[6]=Disp_Tab[b0/10];
LedOut[5]=Disp_Tab[b]; }
if(m==0) {
LedOut[0]=0x40;
LedOut[1]=0x40; LedOut[2]=0x40; LedOut[3]=0x40;
LedOut[4]=0x40;
LedOut[5]=0x40; LedOut[6]=0x40; LedOut[7]=0x40;
}
for( i=0; i<9; i++) {
P0 = LedOut[i]; switch(i)
//P0控制段选
//使用switch 语句控制位选
5
共分享92篇相关文档