籃球比賽計時器設(shè)計:
(1)計時功能:
能記錄整個賽程的實際比賽時間,并能修改比賽時間,計時范圍:0?99分 鐘。
能扣除暫停時間、節(jié)間休息時間和罰球時間。
(2)定時功能:
總時間分為四節(jié),每節(jié)時間到報警。
節(jié)休時間到報警。
(3)節(jié)休時間可人為預置。
bit smg2=P2^1;
sbit smg3=P2^2;
sbit smg4=P2^3;
sbit beep=P3^2;//蜂鳴器
sbit led1=P3^3;//指示燈
sbit led2=P3^4;
sbit led3=P3^5;
sbit led4=P3^6;
sbit led5=P3^7;
//數(shù)碼管編碼
uchar code smgduan0[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//顯示0~9,無小數(shù)點
uchar code smgduan1[10]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//顯示0~9,有小數(shù)點
uchar time=0,mode=0;//系統(tǒng)變量
uchar fen=0,miao=0;//計時
uchar fen1=0,fen2=0,fen3=0,fen4=0;//設(shè)置時間
uchar miao1=30,miao2=10,miao3=15,miao4=20;
uchar bei1=0,bei2=0;//備份
uchar beep_flag=0;
uchar key=0;//鍵值
uchar key_scan()//按鍵檢測
{
uchar i;
i=0;
P1=0x7f;
switch(P1)//檢測第1行
{
case 0x77:i=1;break;
case 0x7b:i=2;break;
case 0x7d:i=3;break;
case 0x7e:i=4;
}
P1=0xbf;
switch(P1)//檢測第2行
{
case 0xb7:i=5;break;
case 0xbb:i=6;break;
case 0xbd:i=7;break;
case 0xbe:i=8;
}
P1=0xdf;
switch(P1)//檢測第3行
{
case 0xd7:i=9;break;
case 0xdb:i=10;break;
case 0xdd:i=11;break;
case 0xde:i=12;
}
P1=0xef;
switch(P1)//檢測第4行
{
case 0xe7:i=13;break;
case 0xeb:i=14;break;
case 0xed:i=15;break;
case 0xee:i=16;
}
if(key==i)
return 0;
else
{
key=i;
return(key);
}
}
//延時
void delay(uint j)
{
uint i;
for(i=0;i<j;i++)
{}
}
//顯示函數(shù)
void disp1()//顯示時間
{
P0=smgduan0[fen/10];smg1=0;delay(100);smg1=1;
P0=smgduan1[fen%10];smg2=0;delay(100);smg2=1;
P0=smgduan0[miao/10];smg3=0;delay(100);smg3=1;
P0=smgduan0[miao%10];smg4=0;delay(100);smg4=1;
}
void disp2()//顯示設(shè)置時間
{
P0=smgduan0[fen1/10];smg1=0;delay(100);smg1=1;
P0=smgduan1[fen1%10];smg2=0;delay(100);smg2=1;
P0=smgduan0[miao1/10];smg3=0;delay(100);smg3=1;
P0=smgduan0[miao1%10];smg4=0;delay(100);smg4=1;
}
void disp3()//顯示暫停設(shè)置時間
{
P0=smgduan0[fen2/10];smg1=0;delay(100);smg1=1;
P0=smgduan1[fen2%10];smg2=0;delay(100);smg2=1;
P0=smgduan0[miao2/10];smg3=0;delay(100);smg3=1;
P0=smgduan0[miao2%10];smg4=0;delay(100);smg4=1;
}
void disp4()//顯示休息設(shè)置時間
{
P0=smgduan0[fen3/10];smg1=0;delay(100);smg1=1;
P0=smgduan1[fen3%10];smg2=0;delay(100);smg2=1;
P0=smgduan0[miao3/10];smg3=0;delay(100);smg3=1;
P0=smgduan0[miao3%10];smg4=0;delay(100);smg4=1;
}
void disp5()//顯示罰球設(shè)置時間
{
P0=smgduan0[fen4/10];smg1=0;delay(100);smg1=1;
P0=smgduan1[fen4%10];smg2=0;delay(100);smg2=1;
P0=smgduan0[miao4/10];smg3=0;delay(100);smg3=1;
P0=smgduan0[miao4%10];smg4=0;delay(100);smg4=1;
}
//主函數(shù)
void main()
{
uchar i=0;
uint m,n;
TMOD|=0X01;
TH0=0X3C;
資料借鑒于此紛傳
閱讀全文