51單片機(jī)籃球計(jì)分器proteus仿真(源碼+原理圖+PCB+仿真+設(shè)計(jì)報(bào)告+講解視頻)
仿真:proteus 7.8
程序編譯器:keil 4/keil 5
編程語言:C語言
編號(hào)C0004
電路采用單片機(jī)作為核心元件,利用兩個(gè)供陰的三位一體數(shù)碼管來顯示兩隊(duì)的分?jǐn)?shù),一個(gè)四位一體數(shù)碼管顯示時(shí)間的計(jì)時(shí)。顯示分?jǐn)?shù)范圍可達(dá)0~999分,足夠賽程計(jì)分的需要。四位一體數(shù)碼管中2個(gè)用于顯示分鐘,2個(gè)用于顯示秒鐘。
該系統(tǒng)具有賽程定時(shí)設(shè)置,賽程時(shí)間暫停,及時(shí)刷新甲、乙雙方的成績(jī)等功能。設(shè)計(jì)分為軟件設(shè)計(jì)和硬件設(shè)計(jì)兩部分。主控芯片采用AT89C51,使用C語言編寫軟件程序,主體分為計(jì)時(shí)顯示模塊、計(jì)分顯示模塊、定時(shí)報(bào)警、按鍵控制模塊。編程后利用Keil C51軟件來進(jìn)行編譯,再將生成的HEX文件裝入芯片中,檢驗(yàn)功能是否能夠正常實(shí)現(xiàn)。
1 設(shè)計(jì)要求:
1、能記錄整個(gè)賽程的比賽時(shí)間,并能修改時(shí)間,暫停比賽時(shí)間。
2、能隨時(shí)刷新甲、乙兩隊(duì)在整個(gè)賽程中的比分。
3、場(chǎng)中交換比賽場(chǎng)地時(shí),能交換甲、乙兩隊(duì)比分的位置。
4、比賽時(shí)間結(jié)束時(shí),能發(fā)出報(bào)警指令。
5、有24秒倒計(jì)時(shí)功能,可通過按鍵隨時(shí)復(fù)位24秒,如果24秒違例會(huì)啟動(dòng)蜂鳴器報(bào)警,同時(shí)比賽時(shí)間暫停,處理好后按一下24秒復(fù)位鍵,比賽繼續(xù)。
二、實(shí)現(xiàn)功能:
1、一個(gè)四位一體數(shù)碼管顯示比賽時(shí)間,時(shí)間格式如:15:00,兩個(gè)三位一體數(shù)碼管顯示甲乙兩對(duì)的比分,比分格式如:008。
2、比賽時(shí)間采用倒計(jì)時(shí)方式,以一秒的頻率減時(shí),上電時(shí)默認(rèn)初值為15:00,在沒有開始比賽時(shí),可以修改時(shí)間,比賽開始后不能修改。
3、甲乙隊(duì)比分采用三位數(shù),上電初值為000,最大值為999,滿足常理要求,未開始比賽以及比賽結(jié)束后比分無法加減,
4、比賽未開始之前,可以通過ADD1、DEC1鍵對(duì)比較時(shí)間的分鐘進(jìn)調(diào)時(shí),通過ADD2、DEC2鍵對(duì)比較時(shí)間的秒進(jìn)行調(diào)時(shí)。
5、可隨時(shí)暫停/啟動(dòng)比賽時(shí)間。
6、比賽進(jìn)行時(shí),可以通過ADD1、DEC1鍵對(duì)甲隊(duì)比分加、減,可以通過ADD2、DEC2對(duì)乙隊(duì)比分加、減。每按一次鍵,加/減1分。
7、當(dāng)一節(jié)比賽完后,可以通過(EXCHANGE)換場(chǎng)鍵換場(chǎng),換場(chǎng)后,比分交換顯示,交換后,下一節(jié)比賽開始時(shí),相應(yīng)的比分加減鍵也隨之交換。
8、當(dāng)比賽結(jié)束時(shí),發(fā)出報(bào)警。
三、作用說明:
1、調(diào)整比賽時(shí)間:插上電源后,系列默認(rèn)比賽時(shí)間為15:00,甲乙隊(duì)比分默認(rèn)000,此時(shí)按下ADD1鍵,可以對(duì)比賽時(shí)間分鐘加1,按下DEC1鍵,可以對(duì)比賽時(shí)間的分鐘減1,按下ADD2鍵,可以對(duì)比賽時(shí)間秒加1,按下DEC2鍵,可以對(duì)比賽時(shí)間秒減1。
2、啟動(dòng)比賽:按下RUN/STOP鍵,計(jì)時(shí)開始,比賽時(shí)間以1秒的頻率倒計(jì)時(shí)。
3、暫停比賽:比賽運(yùn)行的狀態(tài)下,按RUN/STOP鍵,比賽暫停,計(jì)時(shí)暫停。
4、比分加減,在比賽進(jìn)行的狀態(tài)下按ADD1,DEC1鍵,可以對(duì)甲隊(duì)比分加、減1,按ADD2、DEC2鍵,可以對(duì)乙隊(duì)比分加、減1.
5、交換場(chǎng)地:在一節(jié)比賽時(shí)間結(jié)束后,按下EXCHANGE鍵,比賽時(shí)間重新預(yù)置為15:00,同時(shí)左右兩邊數(shù)碼管的比分交換顯示。此時(shí)按下啟動(dòng)鍵可以開始新一節(jié)的比賽。
6、報(bào)警提示:在一節(jié)比賽時(shí)間倒計(jì)時(shí)到00:00時(shí),蜂鳴器發(fā)出報(bào)警提示。
7、比賽時(shí),24秒會(huì)以1秒的速度減,可隨時(shí)按下24秒復(fù)位鍵重置24秒。
講解視頻
包含仿真講解和代碼講解,詳情見壓縮包內(nèi)
51單片機(jī)籃球計(jì)分器(程序+仿真+原理圖+報(bào)告)
2 仿真圖:
3 原理圖:
4 程序:
顯示函數(shù)
void display(void)
{
//-----------顯示時(shí)間分--------------
LEDData=LEDCode[minit/10];
led1=0;
Delay5ms();
led1=1;
LEDData=LEDCode[minit%10];
led2=0;
Delay5ms();
led2=1;
//-------------秒點(diǎn)閃動(dòng)------------
if(halfsecond==1)
LEDData=0x7f;
else
LEDData=0xff;
led2=0;
Delay5ms();
led2=1;
secondpoint=0;
//-----------顯示時(shí)間秒------------
LEDData=LEDCode[second/10];
led3=0;
Delay5ms();
led3=1;
LEDData=LEDCode[second%10];
led4=0;
Delay5ms();
led4=1;
//-----------顯示1組的分?jǐn)?shù)百位-------
if(AorB==0)
LEDData=LEDCode[scoreA/100];
else
LEDData=LEDCode[scoreB/100];
led5=0;
Delay5ms();
led5=1;
//---------------顯示1組分?jǐn)?shù)的十位-----------
if(AorB==0)
LEDData=LEDCode[(scoreA%100)/10];
else
LEDData=LEDCode[(scoreB%100)/10];
led6=0;
Delay5ms();
led6=1;
//---------------顯示1組分?jǐn)?shù)的個(gè)位-----------
if(AorB==0)
LEDData=LEDCode[scoreA%10];
else
LEDData=LEDCode[scoreB%10];
led7=0;
Delay5ms();
led7=1;
//-----------顯示2組分?jǐn)?shù)的百位-------
if(AorB==1)
LEDData=LEDCode[scoreA/100];
else
LEDData=LEDCode[scoreB/100];
led8=0;
Delay5ms();
led8=1;
//-----------顯示2組分?jǐn)?shù)的十位-----------
if(AorB==1)
LEDData=LEDCode[(scoreA%100)/10];
else
LEDData=LEDCode[(scoreB%100)/10];
led9=0;
Delay5ms();
led9=1;
//-----------顯示2組分?jǐn)?shù)的個(gè)位-----------
if(AorB==1)
LEDData=LEDCode[scoreA%10];
else
LEDData=LEDCode[scoreB%10];
led10=0;
Delay5ms();
led10=1;
//-----------顯示時(shí)間分--------------
LEDData=LEDCode[sec24/10];
led11=0;
Delay5ms();
led11=1;
LEDData=LEDCode[sec24%10];
led12=0;
Delay5ms();
led12=1;
}
main函數(shù)
//******************************主函數(shù)*************************************************
void main(void)
{
TMOD=0x11;
TL0=0xb0;
TH0=0x3c;
TL1=0xb0;
TH1=0x3c;
minit=min; //初始值為15:00
second=sec;
EA=1;
ET0=1;
ET1=1;
TR0=0;
TR1=0;
EX0=1;
IT0=1;
IT1=1;
// EX1=1;
PX0=1;
// PX1=1;
PT0=0;
P1=0xFF;
P3=0xFF;
alam=1;
while(1)
{
keyscan();
display();
}
}
void PxInt0(void) interrupt 0
{
Delay5ms();
EX0=0;
alam=1;
TR1=0;
if(timeover==1)
{
timeover=0;
}
if(playon==0)
{
playon=1; //開始標(biāo)志位
TR0=1; //開啟計(jì)時(shí)
if((minit+second)==0)
{
sec24=24;
minit=min;
second=sec;
}
}
else
{
playon=0; //開始標(biāo)志位清零,表示暫停
TR0=0; //暫時(shí)計(jì)時(shí)
}
EX0=1; //開中斷
}
5 報(bào)告:
8615字設(shè)計(jì)報(bào)告附贈(zèng)開題報(bào)告
器件清單:
籃球計(jì)分器元件清單
1) 萬用板9*15
2) stc89C51單片機(jī)
3) 40腳IC座
4) 0.36四位一體共陽數(shù)碼管
5) 0.36三位一體共陽數(shù)碼管*2
6) 0.36兩位一體共陽數(shù)碼管
7) 10K排阻(103)
8) 2.2K電阻*13
9) 10K電阻
10) 10uF電容
11) 按鍵*7
12) 12M晶振
13) 30P電容 *2
15) 蜂鳴器
16) DC電源插座
17) 自鎖開關(guān)
18) 導(dǎo)線若干
19) 焊錫若干
USB電源線(電池盒+DC插頭)
6 下載鏈接:
資料下載鏈接(可點(diǎn)擊):
51籃球賽計(jì)時(shí)計(jì)分器
百度網(wǎng)盤鏈接:
鏈接:https://pan.baidu.com/s/14wC4QcTvFtDULJV1DMdODQ?pwd=cvex
提取碼:cvex