- UID
- 195693
- 阅读权限
- 30
- 推广
-
- 幽默
-
- 注册时间
- 2011-5-10
- 最后登录
- 1970-1-1
|
注册家电维修技术论坛,与同行畅聊维修技术,享更多技术论坛功能。
您需要 登录 才可以下载或查看,没有帐号?快速注册
x
篮球记分器的设计
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit k1=P3^0; //A队加分
sbit k2=P3^1; //B队加分
sbit k3=P3^2; //倒计时开始
sbit k4=P3^3; //换场
sbit k5=P3^5; //倒计时暂停
sbit we1=P3^4; //显示时间数码管的位选
uchar second,count,temp,temp1,temp2,zhu,ke,zs,zg,ks,kg,ge,shi;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
void delay(uint z)
{
int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
second=60;
count=0;
temp1=0;
temp2=0;
zhu=0;
ke=0;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
}
void smg()
{
if(count==20)
{
count=0;
second--;
if(second==0)
TR0=0;
}
}
void display_fen()
{
zs=zhu/10;
zg=zhu%10;
ks=ke/10;
kg=ke%10;
P2=0;
P1=0X00;
delay(3);
P2=1;
P1=table[zs];
delay(3);
P2=2;
P1=table[zg];
delay(3);
P2=3;
P1=0X00;
delay(3);
P2=4;
P1=0X00;
delay(3);
P2=5;
P1=table[ks];
delay(3);
P2=6;
P1=table[kg];
delay(3);
P2=7;
P1=0X00;
delay(3);
}
void display_time()
{
shi=second/10;
ge=second%10;
we1=0;
P0=table[shi];
delay(5);
we1=1;
P0=table[ge];
delay(5);
}
void main()
{
init();
while(1)
{
if(k1==0)
{
delay(2);
if(k1==0)
{
while(!k1)
{
display_fen(); //为在按下键时,数码管不抖动
display_time(); //下面的也一样
}
zhu++;
}
}
if(k2==0)
{
delay(2);
if(k2==0)
{
while(!k2)
{
display_fen();
display_time();
}
ke++;
}
}
if(k3==0)
{
delay(2);
if(k3==0)
{
while(!k3)
{
display_fen();
display_time();
}
TR0=1;
ET0=1;
EA=1;
}
}
if(k4==0)
{
delay(2);
if(k4==0)
{
while(!k4)
{
display_fen();
display_time();
}
temp=zhu;
zhu=ke;
ke=temp;
}
}
if(k5==0)
{
delay(2);
if(k5==0)
{
while(!k5)
{
display_fen();
display_time();
}
TR0=0;
}
}
smg();
display_time();
display_fen();
}
} |
-
|