李 萌
(西安航空職業(yè)技術(shù)學(xué)院,西安 710089)
體育比賽計(jì)時(shí)計(jì)分器系統(tǒng)是對(duì)體育比賽過程中所產(chǎn)生的時(shí)間、比分等數(shù)據(jù)信息進(jìn)行快速采集記錄、加工處理、傳遞和利用的系統(tǒng)[1-3]。不同的運(yùn)動(dòng)項(xiàng)目,比賽規(guī)則也不同,對(duì)計(jì)時(shí)、計(jì)分系統(tǒng)的要求也不一樣。體育比賽的計(jì)時(shí)計(jì)分器系統(tǒng)包括測(cè)量類、評(píng)分類、命中類、制勝類和得分類等多種類型,籃球比賽是根據(jù)運(yùn)動(dòng)隊(duì)員在規(guī)定的比賽時(shí)間里得分多少來決定勝負(fù)的,因此,籃球比賽的計(jì)時(shí)計(jì)分器系統(tǒng)是屬于體育比賽計(jì)時(shí)計(jì)分器系統(tǒng)中一種得分類型的系統(tǒng)。在小型的賽事中,無需投入大量的人力、物力開發(fā)一款功能齊全,使用便捷的計(jì)時(shí)計(jì)分器系統(tǒng),只需借助單片機(jī)的優(yōu)勢(shì),實(shí)現(xiàn)一款籃球比賽計(jì)時(shí)計(jì)分器系統(tǒng),憑借其獨(dú)特的高度集成優(yōu)點(diǎn)[4-6],使籃球比賽計(jì)時(shí)計(jì)分器系統(tǒng)具備功能強(qiáng)大,通用性高,體積小,重量輕,能耗低,價(jià)格便宜,可靠性高,抗干擾能力強(qiáng)和易于使用的優(yōu)勢(shì),適合于學(xué)校團(tuán)體作為籃球比賽計(jì)時(shí)計(jì)分器工具。
目前,市場(chǎng)上基于單片機(jī)的籃球比賽計(jì)時(shí)計(jì)分器系統(tǒng)都是使用LED顯示屏作為計(jì)時(shí)計(jì)分的顯示載體,出于創(chuàng)新與便捷的設(shè)計(jì)理念,籃球比賽計(jì)時(shí)計(jì)分器系統(tǒng)設(shè)計(jì)過程中,使用的顯示器件為L(zhǎng)CD1602液晶顯示屏,在控制信號(hào)輸入方面使用獨(dú)立式鍵盤作為信號(hào)的輸入[6]。相比傳統(tǒng)的LED顯示裝置,本文使用的LCD1602液晶顯示屏,在方便組裝的同時(shí),也更為的堅(jiān)固,不易拆散;在軟件編程方面,通過鍵盤來進(jìn)行控制單片機(jī)的信號(hào)輸入,減少了相對(duì)傳統(tǒng)的單片機(jī)需要通過脈沖的變化實(shí)現(xiàn)控制的不便,同時(shí)也減少了編碼單片機(jī)程序時(shí)的復(fù)雜性,從而優(yōu)化了程序運(yùn)行效率[7]。這些都是本文設(shè)計(jì)開發(fā)的籃球比賽計(jì)時(shí)計(jì)分器系統(tǒng)相對(duì)傳統(tǒng)籃球計(jì)時(shí)計(jì)分器的優(yōu)勢(shì),同時(shí)本文系統(tǒng)也兼具了控制比賽時(shí)間、記錄比賽比分等傳統(tǒng)的籃球計(jì)時(shí)計(jì)分器系統(tǒng)的功能,滿足了市場(chǎng)應(yīng)用的需求。
本文設(shè)計(jì)并實(shí)現(xiàn)的籃球比賽計(jì)時(shí)計(jì)分器系統(tǒng)核心器件是STC89C52單片機(jī),實(shí)現(xiàn)了籃球比賽邏輯規(guī)則的控制與信號(hào)的處理[8]。根據(jù)籃球比賽的規(guī)則:當(dāng)某一方進(jìn)攻時(shí)間還剩下3 s時(shí),系統(tǒng)開始報(bào)警;當(dāng)進(jìn)攻時(shí)間計(jì)時(shí)到0秒如果進(jìn)攻方?jīng)]有發(fā)球,則進(jìn)攻時(shí)間重新刷新時(shí)間(處于暫停狀態(tài));當(dāng)本節(jié)時(shí)間還剩下3 s時(shí),系統(tǒng)開始報(bào)警。本節(jié)時(shí)間計(jì)時(shí)為00:00時(shí),直接進(jìn)入下一節(jié)計(jì)時(shí)狀態(tài)(計(jì)時(shí)處于暫停狀態(tài));比賽分為4節(jié),每節(jié)12 min,當(dāng)?shù)竭_(dá)第3節(jié)時(shí),分?jǐn)?shù)顯示會(huì)出現(xiàn)自動(dòng)交換位置的信號(hào);籃球比賽計(jì)時(shí)計(jì)分器系統(tǒng)的整體結(jié)構(gòu)框圖如圖1所示。

圖1 籃球比賽計(jì)時(shí)計(jì)分器系統(tǒng)結(jié)構(gòu)框圖
設(shè)計(jì)選用STC89C52單片機(jī)作為系統(tǒng)核心的控制器,是其他所有模塊的連接樞紐。STC89C52單片機(jī)內(nèi)部有存儲(chǔ)模塊,內(nèi)部的存儲(chǔ)模塊具有超長(zhǎng)時(shí)間的存儲(chǔ)能力,單片機(jī)軟件編程通過MCS-51指令完成的,此指令標(biāo)準(zhǔn)在很多器件上都可以使用,通用性很強(qiáng)。STC89C52單片機(jī)能耗很小,在低功耗方面表現(xiàn)優(yōu)異,內(nèi)核是基于51的內(nèi)核,現(xiàn)在很多單片機(jī)都是使用此內(nèi)核,此款單片機(jī)內(nèi)部可完成8 K的代碼量,如果代碼量超過了8 K,還可以設(shè)計(jì)外圍代碼存儲(chǔ)方案,STC89C52單片機(jī)滿足本文設(shè)計(jì)的系統(tǒng)對(duì)單片機(jī)的各種需求。
在選取LCD1602液晶顯示屏顯示方案的過程中,靜態(tài)驅(qū)動(dòng)就是單片機(jī)的每一個(gè)輸入輸出端口分別控制一個(gè)與其相對(duì)應(yīng)的數(shù)碼管的段碼。相對(duì)于動(dòng)態(tài)驅(qū)動(dòng),靜態(tài)驅(qū)動(dòng)的好處是程序簡(jiǎn)單,亮度比較高,不容易出錯(cuò),顯示的更清晰;壞處是每一個(gè)段碼都需要一個(gè)輸入輸出端口,一個(gè)數(shù)碼管需要八個(gè)端口,如果程序中的數(shù)碼管過多,則需要的端口則更多,不利于拓展的設(shè)計(jì)實(shí)現(xiàn)。數(shù)碼管顯示內(nèi)容穩(wěn)定、使用簡(jiǎn)單,最關(guān)鍵的是成本很小,在很多產(chǎn)品上都可以看到它的身影,主要應(yīng)用于簡(jiǎn)單字符顯示的方案中[9]。
單片微型計(jì)算機(jī)其具有豐富的接口資源,可以與絕大部分的外圍電路元器件進(jìn)行組合開發(fā),可以在各種實(shí)驗(yàn)平臺(tái)中使用,進(jìn)行各類的實(shí)驗(yàn)內(nèi)容設(shè)計(jì)[10]。此部分電路是系統(tǒng)最核心的電路,系統(tǒng)能否穩(wěn)定的運(yùn)行全看這部分電路。這款單片機(jī)在實(shí)際運(yùn)用當(dāng)中非常廣泛且能夠滿足本系統(tǒng)的設(shè)計(jì)需要,因此設(shè)計(jì)時(shí)選用STC89C52單片機(jī)作為主控。
通過對(duì)內(nèi)部結(jié)構(gòu)的了解,來分析其中所存在的規(guī)律。單片機(jī)的所有程序都在燒寫的時(shí)候?qū)懭氲街蛔x存儲(chǔ)器里,單片機(jī)系統(tǒng)在啟動(dòng)之后必須要進(jìn)行程序的讀取。處理器讀取一條代碼的用時(shí),這個(gè)時(shí)長(zhǎng)就是處理器的一個(gè)機(jī)器周期,這個(gè)時(shí)長(zhǎng)對(duì)于處理器就是節(jié)拍。處理器設(shè)計(jì)了晶振,這樣就產(chǎn)生了時(shí)鐘,整個(gè)系統(tǒng)都需要時(shí)鐘的存在才可以啟動(dòng)運(yùn)轉(zhuǎn)。因此,晶振電路是處理器運(yùn)行的核心外圍電路。本設(shè)計(jì)選擇的是12兆赫茲的振源。單片機(jī)的內(nèi)部帶有振源,但是由于設(shè)計(jì)需要,這里選擇了外部振源。STC89C52單片機(jī)的電路如圖2所示。

圖2 STC89C52單片機(jī)系統(tǒng)電路圖
STC89C52單片機(jī)設(shè)計(jì)了復(fù)位功能電路,就是在籃球比賽計(jì)時(shí)計(jì)分器系統(tǒng)想要重回到從新啟動(dòng)的狀態(tài)之后,就可以通過此功能電路對(duì)系統(tǒng)進(jìn)行復(fù)位。其實(shí)STC89C52單片機(jī)在開始上電運(yùn)行的時(shí)候,就是一個(gè)復(fù)位的狀態(tài),所以處理器啟動(dòng)就是需要進(jìn)行復(fù)位的。STC89C52單片機(jī)的重啟需要復(fù)位電路對(duì)復(fù)位接口輸入一定要的信號(hào)脈沖,要求的有效脈沖信號(hào)是5 ms時(shí)間。大部分設(shè)計(jì)的方案是選擇上電復(fù)位。但很多時(shí)候需要進(jìn)行手動(dòng)復(fù)位,所以設(shè)計(jì)了按鍵復(fù)位設(shè)計(jì),這樣可以非常方便的進(jìn)行系統(tǒng)復(fù)位操作。
LCD1602液晶顯示屏是一種“8”字形的裝置。它被封裝有多個(gè)LED顯示器。在內(nèi)部結(jié)構(gòu)中,引線已被連接。只有公共電極和所需的段選需要被引出。根據(jù)不同的連接方法,LED數(shù)碼管可分為兩類:一類是共用陰極,另一種是公共陽極。在編程的過程中,對(duì)LED數(shù)碼管的這些特點(diǎn)深刻理解將對(duì)編程起到作用。如果數(shù)碼管的類型是不同的,其硬件電路必然不同,導(dǎo)致編程方法也不相同;但無論什么數(shù)碼管的類型,它的發(fā)光原理是一樣的,只是極性不同而已。采用LCD1602液晶顯示屏顯示,由于采用的是二極管發(fā)光來進(jìn)行顯示,因此它可以由單片機(jī)直接進(jìn)行驅(qū)動(dòng)發(fā)光。
由于本文設(shè)計(jì)開發(fā)的籃球比賽計(jì)時(shí)計(jì)分器系統(tǒng)既要求LCD1602液晶顯示屏顯示正確,同時(shí)也要保證顯示的質(zhì)量,所以需要使用驅(qū)動(dòng)電路來驅(qū)動(dòng)每個(gè)代碼段,這樣就可以顯示所需要的數(shù)字。根據(jù)不同的功能模式,數(shù)碼管的操作方案有采用了靜態(tài)驅(qū)動(dòng)和動(dòng)態(tài)驅(qū)動(dòng)兩種方案并存的方式進(jìn)行驅(qū)動(dòng),如圖3所示為L(zhǎng)CD1602液晶顯示屏接口電路圖。

圖3 LCD1602液晶顯示屏接口顯示電路圖
經(jīng)過統(tǒng)計(jì)發(fā)現(xiàn)本系統(tǒng)所需按鍵并不多,包括復(fù)位鍵在內(nèi)一共只有7個(gè)按鍵,所以本文將按鍵與單片機(jī)的輸入接口相對(duì)應(yīng)。在按鍵被按下,此時(shí)單片機(jī)的引腳上會(huì)產(chǎn)生低電平,STC89C52單片機(jī)系統(tǒng)程序運(yùn)行中會(huì)對(duì)這兩個(gè)引腳上的電平進(jìn)行檢測(cè),發(fā)現(xiàn)這兩處的引腳電平為低,說明相應(yīng)的按鍵被按下,隨之系統(tǒng)執(zhí)行相應(yīng)的軟件功能,包括調(diào)整時(shí)間、開始、交換場(chǎng)地和確認(rèn)鍵和一個(gè)24秒復(fù)位鍵。鍵盤對(duì)應(yīng)名稱如下:ADD1,DEC1,EXCHANGE,ADD2,DEC2,SEC24,RUN/STOP,其中ADD1為甲隊(duì)比分加1鍵(比賽開始前為調(diào)整時(shí)間加1),當(dāng)甲隊(duì)得分為2或3分的時(shí)候,需要多次按下ADD1按鍵,直至調(diào)整到目標(biāo)得分,DEC1為甲隊(duì)比分減1鍵(比賽開始前為調(diào)整時(shí)間減1),EXCHANGE為換場(chǎng)鍵,一節(jié)比賽結(jié)束后才可換場(chǎng)。ADD2為乙隊(duì)比分加1鍵(比賽開始前為調(diào)整時(shí)間加1),當(dāng)乙隊(duì)得分為2或3分的時(shí)候,需要多次按下ADD1按鍵,直至調(diào)整到目標(biāo)得分,DEC2為乙隊(duì)比分減1鍵(比賽開始前為調(diào)整時(shí)間減1),SEC24為24秒復(fù)位鍵,比賽時(shí)隨時(shí)復(fù)位24秒,用于記錄同一控球隊(duì)員必須在24 s內(nèi)嘗試投籃。RUN/STOP為啟動(dòng)/暫停鍵,比賽開始前按下啟動(dòng)計(jì)時(shí),比賽開始,比賽開始后,按下為暫停計(jì)時(shí),比賽暫停,用于處理籃球比賽特殊情況。具體的按鍵設(shè)計(jì)如圖4所示。
報(bào)警選用蜂鳴器進(jìn)行報(bào)警提示,在具體的籃球比賽計(jì)時(shí)計(jì)分電路實(shí)現(xiàn)過程中,只有蜂鳴器對(duì)電路的要求頗高,要想使其能夠正常使用必須要在電路當(dāng)中接入一個(gè)三極管來對(duì)電流進(jìn)行控制。電路中的三極管采用三線連接的讓是接入,分別與蜂鳴器、單片機(jī)、GND相連接。在電流流經(jīng)三極管的時(shí)候,三極管高低組態(tài)會(huì)對(duì)電流進(jìn)行放大,使其能夠滿足蜂鳴器工作所需。只要單片機(jī)引腳處的電平發(fā)生了高或低的變化,蜂鳴器就會(huì)隨之發(fā)出警報(bào)[11]。在系統(tǒng)中因?yàn)檫x用的是PNP型8550,所以系統(tǒng)初始通電并不會(huì)引起蜂鳴器的報(bào)警。
系統(tǒng)中的蜂鳴器在接通電源之后,因其是一個(gè)電磁式裝置,內(nèi)部線圈與磁條之間會(huì)對(duì)振動(dòng)膜片施加力的作用,當(dāng)出現(xiàn)干燒情況時(shí),即PWQ輸出低電平,此時(shí)蜂鳴器以周期性的方式發(fā)出聲響。這樣的一個(gè)報(bào)警電路設(shè)計(jì)結(jié)構(gòu)非常簡(jiǎn)單而實(shí)用,如圖5為提示電路圖。

圖4 按鍵電路圖 圖5 報(bào)警電路圖
籃球比賽計(jì)時(shí)計(jì)分器系統(tǒng)的軟件設(shè)計(jì)包括以下幾部分:系統(tǒng)初始化、按鍵識(shí)別、顯示功能、聲音提示等。系統(tǒng)完成初始化設(shè)置后,進(jìn)入比賽時(shí)間顯示狀態(tài),比賽時(shí)間為12 min,初始設(shè)置的時(shí)間顯示為12:00,在比賽沒有開始之前,可以通過按鍵對(duì)比賽時(shí)間進(jìn)行設(shè)置,默認(rèn)是12 min。在設(shè)置比賽時(shí)間模式下,開始按鍵是時(shí)間加功能,交換場(chǎng)地按鍵是時(shí)間減功能,點(diǎn)擊確認(rèn)按鍵保存比賽時(shí)間設(shè)置數(shù)據(jù),按RUN/STOP按鍵啟動(dòng)比賽,即可對(duì)比賽時(shí)間進(jìn)行倒計(jì)時(shí)。需要進(jìn)行場(chǎng)地交換時(shí),必須在暫停或者沒有開始比賽計(jì)時(shí)的情況下實(shí)現(xiàn)。計(jì)分按鍵可以實(shí)現(xiàn)對(duì)兩隊(duì)比分進(jìn)行設(shè)置。比賽啟動(dòng)后,液晶顯示比賽時(shí)間,時(shí)間隨著比賽的進(jìn)行倒計(jì)時(shí),并且同時(shí)進(jìn)行24 s進(jìn)攻時(shí)間的記錄,也是以倒計(jì)時(shí)的方式記錄,如果在24 s內(nèi)完成了進(jìn)攻,或者交換了球權(quán),則24 s恢復(fù),重新進(jìn)行倒計(jì)時(shí);如果24 s到達(dá),沒有完成進(jìn)攻,或者交換球權(quán),則進(jìn)行犯規(guī)處理,通過發(fā)光二極管閃爍以及蜂鳴器蜂鳴進(jìn)行提示。如果比賽還剩下最后的10 s,通過發(fā)光二極管閃爍以及蜂鳴器蜂鳴進(jìn)行提示隊(duì)員時(shí)間到。圖6為系統(tǒng)整體編程設(shè)計(jì)流程圖。

圖6 系統(tǒng)軟件設(shè)計(jì)流程圖
LCD1602液晶顯示屏選擇是一個(gè)4位集成數(shù)字管,它需要掃描位選擇信號(hào),并在控制相應(yīng)的位接口時(shí)得到對(duì)應(yīng)的數(shù)據(jù)內(nèi)容。LCD1602液晶顯示屏的掃描顯示是每個(gè)數(shù)碼管的端發(fā)光二極管,因此應(yīng)考慮每個(gè)點(diǎn)的保留時(shí)間和間隔時(shí)間[12]。如果保持時(shí)間太短,發(fā)光就會(huì)太弱,人類的眼睛看不到;如果保持時(shí)間過長(zhǎng),間隔時(shí)間將過長(zhǎng)(如果設(shè)數(shù)碼管有N位,則間隔時(shí)長(zhǎng)=保持時(shí)間X(N-1)),讓顯示內(nèi)容閃爍達(dá)到顯示效果。在設(shè)計(jì)中,我們應(yīng)該適當(dāng)?shù)脑O(shè)置保留時(shí)間和間隔時(shí)間。周期的數(shù)量與顯示的變化速度成正比。如圖7所示是顯示流程圖。
籃球比賽計(jì)時(shí)的軟件設(shè)計(jì)應(yīng)該是由STC89C52單片機(jī)的定時(shí)器進(jìn)行定時(shí)設(shè)計(jì)的,按照籃球比賽的計(jì)時(shí)方式進(jìn)行倒計(jì)時(shí),一節(jié)為12 min,需要對(duì)定時(shí)器進(jìn)行初始化,一節(jié)為12 min,然后實(shí)現(xiàn)周期為1 s的計(jì)時(shí),觸發(fā)中斷,減去1 s,并重新設(shè)置時(shí)間,進(jìn)行顯示。計(jì)時(shí)軟件的流程圖如圖8所示。

圖7 顯示流程圖 圖8 計(jì)分軟件設(shè)計(jì)流程圖
本文設(shè)計(jì)開發(fā)的籃球比賽計(jì)時(shí)計(jì)分器系統(tǒng)中使用Keil uVision工具對(duì)STC89C52單片機(jī)軟件的編程進(jìn)行調(diào)試,通過其所提供的工具來進(jìn)行編碼、翻譯、編寫以及調(diào)試等。當(dāng)軟件的編程調(diào)試都是正常后,然后進(jìn)行將相關(guān)文件下載并復(fù)制到STC89C52單片機(jī)的系統(tǒng)電路中,最終完成對(duì)整個(gè)系統(tǒng)的調(diào)試。本文源程序代碼在調(diào)試過程中有幾處警告,經(jīng)過查找原因后解決了警告信息。在進(jìn)行系統(tǒng)調(diào)試時(shí),借助于該工具所提供的斷點(diǎn)調(diào)試可以在很大程度上降低工作的難度,在源代碼中很容易就能找出存在的BUG。通過Keil編寫完代碼,編譯器編譯完成,生成可執(zhí)行文件HEX。此文件可以燒錄到單片機(jī),但在燒錄之前,可以通過Keil對(duì)代碼進(jìn)行簡(jiǎn)單的調(diào)試,很多時(shí)候代碼編譯沒有問題,也可以生成可執(zhí)行文件HEX,但是在邏輯以及設(shè)計(jì)思路上會(huì)有錯(cuò)誤,也可能是某個(gè)電路控制錯(cuò)誤,都有可能,所以借助Keil還需要進(jìn)行一步一步調(diào)試。
設(shè)計(jì)選用Proteus完成對(duì)籃球比賽計(jì)時(shí)計(jì)分器系統(tǒng)的驗(yàn)證,打開軟件繪制系統(tǒng)電路圖,和代碼進(jìn)行聯(lián)機(jī)調(diào)試。仿真包括顯示控制、按鍵輸入、聲音控制、主控制器[13-14]。
啟動(dòng)仿真,數(shù)碼管顯示內(nèi)容如圖9所示。1 500表示比賽總時(shí)長(zhǎng),000:000表示A對(duì)和B對(duì)的比分,比分的控制是通過硬件系統(tǒng)直接控制的。

圖9 數(shù)碼管顯示仿真
系統(tǒng)啟動(dòng)仿真后,通過RUN/STOP按鍵啟動(dòng),比賽開始,比賽時(shí)間以秒為單位進(jìn)行倒計(jì)時(shí)。仿真界面如圖10所示。

圖10 系統(tǒng)啟動(dòng)仿真
通過分?jǐn)?shù)設(shè)置按鍵,可以對(duì)A隊(duì)和B隊(duì)的比分進(jìn)行設(shè)置,如圖11所示,A對(duì)比分4,B對(duì)比分3。仿真界面如圖11所示。

圖11 系統(tǒng)比分控制仿真
本文設(shè)計(jì)并開發(fā)了一款籃球比賽計(jì)時(shí)計(jì)分器系統(tǒng),通過模擬仿真驗(yàn)證系統(tǒng)的設(shè)置功能、計(jì)時(shí)功能、計(jì)分功能、顯示功能和報(bào)警功能,所使用的LCD1602液晶顯示屏相對(duì)傳統(tǒng)LED顯示器具有顯示清晰、多用途驅(qū)動(dòng)的作用,并具備良好的實(shí)用性。當(dāng)然,本系統(tǒng)還存在一些不足之處,設(shè)計(jì)的功能較為單一,僅僅只能滿足小型籃球比賽計(jì)時(shí)計(jì)分功能,在后續(xù)的過程需要持續(xù)完善。