籃球比賽賽場的計時計分器。
1.在整個比賽過程中記錄比賽時間和改變比賽時間。
2.可以在比賽期間隨時更新A和B隊的比分。
3中場休息期間交換場地,交換A隊和B隊的位置。
4.當添加比賽分數時,如果有錯誤,可以手動更改賽場分數。
5.賽事結束時可以觸發(fā)警報。
bit k4=P3^3;
sbit k5=P3^4;
sbit k6=P3^6;
sbit k7=P3^7;
sbit beep=P3^5;//蜂鳴器
sbit led1=P1^6;//LED
sbit led2=P1^7;
sbit smg1=P2^0;//數碼管
sbit smg2=P2^1;
sbit smg3=P2^2;
sbit smg4=P2^3;
sbit smg5=P2^4;
sbit smg6=P2^5;
sbit smg7=P2^6;
sbit smg8=P2^7;
//數碼管編碼
uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar time=0,mode=0;//系統(tǒng)變量
uchar fena=0,fenb=0,flag=0;//分數
uchar start=0;//啟動
uchar fen=0,miao=0;//計時
uchar beep_time=0;//蜂鳴器計時
//延時
void delay(uint i)
{
while(i--);
}
void main()//主函數
{
uchar k=0;
beep=0;
TMOD|=0X11;//定時器設置
TH0=0X3C;
TL0=0XB0;
TH1=(65536-1000)/256;
TL1=(65536-1000)%256;
ET1=1;
ET0=1;//打開定時器0中斷允許
EA=1;//打開總中斷
TR0=1;//打開定時器
while(1)
{
//點亮LED
if(start==0)
{
led1=1;
led2=1;
}
if(start==1)
{
led1=0;
led2=1;
}
if(start==2)
{
led1=1;
led2=0;
}
//顯示時間
P0=smgduan[fen/10];
smg1=0;
delay(100);
smg1=1;
P0=smgduan[fen%10]+0x80;
smg2=0;
delay(100);
smg2=1;
P0=smgduan[miao/10];
smg3=0;
delay(100);
smg3=1;
P0=smgduan[miao%10];
smg4=0;
delay(100);
smg4=1;
//顯示分數
if(flag==0)
P0=smgduan[fena/10];
else
P0=smgduan[fenb/10];
smg5=0;
delay(100);
smg5=1;
if(flag==0)
P0=smgduan[fena%10];
else
P0=smgduan[fenb%10];
smg6=0;
delay(100);
smg6=1;
if(flag==1)
P0=smgduan[fena/10];
else
P0=smgduan[fenb/10];
smg7=0;
delay(100);
smg7=1;
if(flag==1)
P0=smgduan[fena%10];
else
P0=smgduan[fenb%10];
smg8=0;
delay(100);
資料借鑒于此紛傳
閱讀全文