倪欽如,蔡武德
(云南師范大學(xué) 物理與電子信息學(xué)院,云南昆明,650500)
計時和計分對一場運動比賽中兩隊的勝負十分重要,因此設(shè)計一款由單片機控制的便攜式計時計分系統(tǒng)對運動比賽中裁判員的計時和計分有很大的幫助。由于單片機芯片上集成了大規(guī)模特定功能的器件,因此可以采用單片機實現(xiàn)不同電路的設(shè)計[1]。本文采用AT89C51單片機作為計時和計分電路的主要控制器件,以實現(xiàn)計時和計分電路的各個操作功能和顯示功能。在運動比賽過程中,傳統(tǒng)的計時大部分采用電子手表,計分大部分是用翻牌計分,有時也會采用在地上寫“正”字來計分,設(shè)計一個計時和計分電路可以簡化、方便比賽過程中的計時和計分。
在接通電源后,通過相應(yīng)按鍵設(shè)定一節(jié)比賽所需的時間,最高可以設(shè)定的一節(jié)比賽時長為99分鐘。設(shè)定好比賽時長后,按下特定按鍵,比賽剩余時間就以1s的頻率減少。在比賽過程中,甲乙兩隊任意一隊得分,可以通過對應(yīng)按鍵進行加分,最高可以加到999分。當一節(jié)比賽所規(guī)定的時間結(jié)束,蜂鳴器就會自動發(fā)聲,提示比賽結(jié)束。一節(jié)比賽結(jié)束,兩隊交換場地,可以通過對應(yīng)按鍵實現(xiàn)交換兩隊比分的顯示位置的功能。
圖1為系統(tǒng)框圖,包含51單片機最小系統(tǒng),輸入和輸出三大部分。其中51芯片、復(fù)位電路、時鐘電路和5V電源共同組成51最小系統(tǒng)[2]。輸入電路有比賽時間的設(shè)定、比賽時間的啟動/暫停和甲乙兩隊比分的加/減,輸出電路有比賽剩余時間的顯示、甲乙兩隊比賽得分的顯示和比賽結(jié)束的聲音提示。
圖1 系統(tǒng)框圖
系統(tǒng)電路原理圖如圖2所示。圖中左邊是三個四位一體的數(shù)碼管,其中數(shù)碼管A用于顯示比賽剩余時間,數(shù)碼管B和C用于顯示甲隊和乙隊比賽得分情況。U1為51芯片、C3和R1為復(fù)位電路,C1與C2和X1與U1的XTAL1和XTAL2構(gòu)成時鐘電路。在比賽開始之前,按鍵ADD1、ADC1、ADD2、ADC2可以實現(xiàn)比賽時間的設(shè)定。按鍵ADD1、ADC1、ADD2、ADC2,在比賽開始前用于比賽時長的設(shè)定,在比賽開始后用于兩隊比分加減的操作。若比賽暫?;蛑匦麻_始,可按下RUN/STOP。若一節(jié)比賽結(jié)束,兩隊交換比賽場地,按下EXCHANGE,可以互換兩隊比分顯示位置。U2為74HC245,用來驅(qū)動數(shù)碼管A、B和C。LS1為比賽結(jié)束發(fā)發(fā)聲器。
圖2 電路原理圖
圖2 中,數(shù)碼管A,左起第一二位數(shù)碼管用來顯示比剩余時間的分鐘數(shù),第三四位數(shù)碼管是用來顯示比剩余時間的秒數(shù)。比賽分鐘數(shù)和秒數(shù)的設(shè)定相互獨立。在比賽開始之前,通過按鍵ADD1和ADC1可以完成一節(jié)比賽時長分鐘數(shù)的設(shè)定,通過按鍵ADD2和ADC2可以完成一節(jié)比賽時長秒數(shù)的設(shè)定。其中,按一下ADD1按鍵可以增加一分鐘的比賽時長,按一下ADC1按鍵可以減少一分鐘的比賽時長,分鐘數(shù)最多可以加到99,最低可以減到00。通過按一下ADD2按鍵增加一秒的比賽時長,按一下ADC2按鍵減少一秒的比賽時長,秒數(shù)最多可以加到59,最低可以減小到00。
裁判員吹響比賽開始的哨聲后,立即按下圖2中的RUN/STOP按鍵,比賽剩余時間就一秒一秒地減少,直至比賽結(jié)束計時顯示器上顯示00.00。
比賽過程中若有突發(fā)情況,如有隊員受傷、換人等,需暫停比賽。按RUN/STOP鍵,可實現(xiàn)時間計時暫停。
圖2中,數(shù)碼管B和C分別顯示甲隊和乙隊的比賽得分情況。正常工作狀態(tài)下,只有右邊三位數(shù)碼管接通電源。比賽得分加一,計分顯示器上就顯示001,最大值可以達到999,最小可以減小到為000。比賽進行中,按ADD1、ADC1、ADD2、ADC2按鍵可以完成比分加減。按ADD1按鍵甲隊得分加1;按ADC1按鍵甲隊得分減1;按ADD2按鍵乙隊得分加1;按ADC2按鍵乙隊得分減1。還沒開始比賽和比賽結(jié)束后都無法對甲乙兩隊的比賽得分進行加減。
一節(jié)比賽結(jié)束,甲乙兩隊要交換場地,甲乙兩隊的比分顯示位置也要相應(yīng)地交換。上半場比賽中,計時器顯示屏上顯示00.00時,按下圖2中的EXCHANGE按鍵,比賽時間重置為12.00,甲乙兩隊的分數(shù)顯示位置也就自動地交換。上半場的賽程剩余時間顯示不是00.00,按下交換甲乙兩隊顯示比分位置的按鍵,甲乙兩隊的得分顯示位置不會發(fā)生變化。
一節(jié)比賽剩余時間顯示為00.00時,圖2中的U1的P1.7口會輸出一個低電平,LS1就會發(fā)出報警提示音,表示這節(jié)比賽結(jié)束。
在Keil uVision5軟件中新建工程,在新建的工程下創(chuàng)建各個模塊所需的(*.hex)文件。本設(shè)計的主函數(shù)如下文所示。
void main(void)
{
TMOD=0x11; //定時器0和1的工作方式均為1
TL0=0xb0;
TH0=0x3c; //定時器0初值50ms
TL1=0xb0;
TH1=0x3c; //定時器1初值50ms
minit=12; //分鐘初始值12
second=0; //秒鐘初始值0
EA=1; //打開中斷系統(tǒng)總開關(guān)
ET0=1; //打開定時器T0中斷允許
ET1=1; //打開定時器T1中斷允許
TR0=0; //關(guān)閉定時器T0中斷開關(guān)
TR1=0; //關(guān)閉定時器T1中斷開關(guān)
P1=0xFF; //所有I/O口默認高電平
P3=0xFF;
while(1) //進入while循環(huán)
{
keyscan(); //掃描按鍵函數(shù)
display(); //掃描顯示函數(shù)
} }
計時顯示模塊流程圖如圖3所示。在比賽開始之前,通過按鍵來控制比賽時間的設(shè)定。設(shè)定好一節(jié)比賽的時長,按下對應(yīng)按鍵,比賽開始,賽程時間開始倒計時。若一節(jié)比賽時間到了,蜂鳴器就報警提示比賽結(jié)束,若比賽時間未結(jié)束,繼續(xù)顯示比賽時間。
圖3 計時顯示模塊流程圖
計分顯示模塊流程圖如圖4所示。在比賽過程中,對應(yīng)按鍵可以操控甲乙兩隊比賽得分的加/減。比賽開始后,若甲、乙兩隊任意一隊得分,即可按下加分按鍵進行加分,隨后甲乙兩隊的得分顯示屏上就相應(yīng)地顯示甲隊和乙隊的比賽得分情況。
圖4 計分顯示模塊流程圖
首先,用Proteus仿真軟件畫出計時計分器的電路原理圖;第二,將生成的“*.hex”文件載入到51芯片中;第三,運行仿真操作,仿真結(jié)果如圖5所示。
圖5 仿真圖
當仿真調(diào)試結(jié)束,可進行電路制作。制作完成的實際電路如圖6~9所示。圖6為一節(jié)比賽的時長是12分鐘,計時計分器上顯示1200。圖7為比賽時間剩余是9分鐘50秒時,甲隊得分5分,乙隊得分3分。圖8為一節(jié)比賽結(jié)束,蜂鳴器自動發(fā)聲,甲隊得分12分,乙隊得分8分。若繼續(xù)下一節(jié)比賽,要交換甲乙兩隊比賽得分的顯示位置,按下EXCHANGE按鍵,甲隊的得分12就交換到右邊的計分顯示器上,乙隊的得分8就交換在左邊的計分顯示器上,且比賽時間重置為12.00,如圖9所示。
圖6 比賽時間預(yù)設(shè)12分鐘
圖7 甲隊5分,乙隊3分
圖8 甲隊12分,乙隊8分
圖9 交換比分
經(jīng)過調(diào)試,本設(shè)計的仿真與電路制作已經(jīng)達到設(shè)計要求。它能模擬比賽過程中的計時和計分,符合各類運動比賽計時和計分的規(guī)則。因數(shù)碼管尺寸較小,可見范圍有限,無法直接在比賽中使用。但只要將數(shù)碼管的尺寸加大,即可滿足實際比賽計時和計分的需要。