郭 暢
(南京郵電大學通達學院,江蘇揚州,225100)
基于單片機的籃球計分器系統的設計
郭 暢
(南京郵電大學通達學院,江蘇揚州,225100)
本設計是一款低成本、性能穩定、顯示準確、操作方便且易攜帶,適用于各類比賽的計分器。主要實現對籃球比賽中的分數變化進行及時加減,24秒倒計時警報等功能。包括四個模塊:分數加減系統,倒計時系統,24秒警報系統,LCD顯示模塊系統。
單片機;LCD;計分
籃球比賽是根據參賽隊伍在規定比賽時間內分得多少來決定勝負的,因此一次比賽的計時計分非常重要,這就特別需要一個計分器來準確及時的統計雙方的得分情況,以及比賽時間的監控。正式比賽中使用的籃球計分器體積過大,對于一般性比賽不適用,所以簡易的籃球計分器更適合。它能減少人工計時計分可能會產生的誤差,也減少了人工費用。可以在比賽中精確顯示比賽中分數的實時加減的變化,使觀眾更加準確的了解比賽狀況。并通過LCD液晶顯示器將比賽進程展示在大屏幕上,將比賽變得更加直觀。而采用單片機來設計的這款籃球計分器就是來滿足籃球比賽中倒計時,加減分以及24秒警報等需求的。
設計中采用STC89C52單片機作為主控芯片,總體框架設計圖如圖1所示。

圖1 總體框架設計圖
顯示模塊使用LCD1602液晶顯示屏,液晶顯示屏的顯示行數清晰度以及現實的復雜程度比較高,可以做到清楚的表示出所需要的數字或字母。矩陣鍵盤電路按鍵為16個,使用4*4模式的矩陣鍵盤。定時器選擇的是單片機自帶的計時裝置。警報系統選擇無源式蜂鳴器。
2.1 系統的工作原理
根據籃球比賽的規則本設計可以實現,兩個半時,每半時20分鐘;四節比賽每節10分鐘,第一和第二節,第三和第四節中間的休息時間分別為2分鐘;半場的休息時間為10分鐘。
硬件電路包括以下四部分最小單片機系統電路、LCD顯示電路、矩陣鍵盤電路、報警電路。
(1)24s倒計時結束后以及每節結束后發出警報,并在每節結束后中斷比賽。
實現過程:根據單片機本身具有的計時器進行24s倒計時過程,接下來需要蜂鳴器發出警報,但由于無源蜂鳴器無法直接發出警報,所以加一個電阻產生一個方波,是的蜂鳴器可以發出警報。
(2)對比賽時間、分數、節數以及其改變進行及時顯示。
實現過程:將顯示器各管腳依次連接到單片機的P0.0到P0.7上,由于防止顯示其運作時間過長溫度過高會損壞元器件,所以接上一個排阻來保護電路。
(3)通過按鍵對各隊比賽分數改變進行控制,分別為:A隊加一分,加兩分,加三分,以及當比賽積分出錯時進行逐一減分;B隊加一分,加兩分,加三分,單獨積分出錯時進行逐一減分;同時具備,對比賽節數加二,減二;對于一節時間的調整(以一分鐘為最小單位);比賽的開始和暫停;手動調節為加時賽;重置24s倒計時。
實現過程:因為使用4*4矩陣鍵盤,所以,將縱向上的四根連線分別連接到P3.4到P3.7管腳口,將橫向的四根線分別連接到P3.0到P3.3上,以此來實現鍵盤模塊的控制作用。
(4)應用單片機內部計時器進行比賽時間到計時以及24s警報倒計時。
實現過程:由于屬于單片機內置定時器,所以直接通過程序取用就可以了。
2.2 單片機最小系統設計
本設計使用STC89C52作為單片機最小系統,在設計時應注意,其中一定要包括電源、單片機、時鐘以及復位電路。設計時使用的晶振為12MHZ,用它來為電路提供時鐘,這個時鐘的作用就是為單片機提供一個時間上的基準。在單片機中,每執行一條命令,所需要的時間為一個機器周期。最先系統中還包括了復位電路,即每次按下復位按鍵之后,所有的指令從頭開始運行。設計圖中加入電阻,其目的是為P0口的漏極電路提供一個上拉電阻,使P0口正常運行。
2.3 LCD顯示電路設計
1602LCD與單片機的硬件連接圖如圖2所示,由圖中可以看出JPBG接口直接與電源連接。第三引腳接口中的可調電位器必須與電源與地連接,RS,R/W和E這三個控制位分別對應P2.0,P2.1,P2.2。4.P0.0-P0.7是8位數據線。
在三個控制位中,RS=0時代表寫或讀指令,RS=1時代表寫數據。其中R/W表示讀寫指令,R/W=1表示讀,R/W=0表示寫。E作為使能端,應當依據時序圖去編寫與之對應的程序。

圖2 1602LCD與單片機的硬件連接圖
2.4 矩陣鍵盤模塊設計
矩陣鍵盤電路設計圖如圖3所示。把單片機的P3.0-P3.7端口通過8聯撥動撥碼開關連接到“4*4行列式鍵盤”,其中P3.4-P3.7作為列線,P3.0-P3.3作為行線,系統首先通過CPU對全部鍵盤進行掃描,就是將第一條行線設置為“0”狀態,剩下的所有行線處于于“1”狀態,讀取輸入緩沖器的狀態,如果其狀態全部處于“1”則說明該行沒有按鍵被按下,接下來將第二根行線設置為“0”狀態,繼續讀取輸入緩沖器的狀態,如這是它的狀態也全為“1”,那么設置第一根行線處于“0”狀態,接下來重復此運行狀態。如果讀取輸入緩沖器的狀態不全處于“1”狀態,則確定哪一根列線為“0”狀態,如果某個鍵的行線和列線都為“0”狀態時,說明此時這個鍵按下。

圖3 矩陣鍵盤模塊電路圖
本次籃球計分器鍵盤設計布局及功能如表1所示。利用STC89C52的一個P口分別對矩陣鍵盤的4根行線和4根列線進行連接,以此方式來分別實現16個按鍵的功能,這種方法有利于矩陣鍵盤與按鍵之間的使用率,同時也有利于節約單片機外圍電路的資源。
本設計的系統功能用了16個獨立鍵盤來實現,用它來控制籃球計分器系統功能,這16個控制矩陣鍵盤分別為S1,S2,S3, S4,S5,S6,S7,S8,S9, S10,S11,S12,S13, S14,S15,S16。除了這16個獨立鍵盤還有一個復位按鈕S17和一個電源開關按鈕。這些按鍵分別被連接到單片機的P3口上的低四位和高四位。根據程序設計的要求,在系統初始化時等待配置比賽時間。
當按下S13按鍵可以實現暫停或開始,按下S17復位按鍵可以實現時間清零,按下S1,S2,S3, S4按鍵可以實現A隊的+1,+2,+3,-1分的功能。按下S5,S6,S7, S8按鍵可以實現B隊的+1,+2,+3,-1的功功能。按下S9按鍵比賽節數加2,按下S10按鍵實現對比賽節數減2。按下S11按鍵設置一節比賽的時間,按下S12按鍵可以修改一節比賽時間的錯誤設置。按下S15按鍵可以實現手動設置加時賽的時間,按下S16按鍵可以實現籃球24秒的倒計時重置。

表1 按鍵布局及功能表
2.5 報警電路設計
報警電路原理圖如圖4所示。蜂鳴器系統由一個9012的三極管及一個2.2K的電012三極管其主要作用是驅動蜂鳴器。由于單片機的IO口驅動能力不足以使蜂鳴器發出聲音,于是我們需要通過三極管對驅動電流進行放大,以此來達到讓蜂鳴器發出聲音的目的,如果是輸出高電平,則此時三極管導通,集電極電流流過蜂鳴器是的蜂鳴器發出警報,若輸出為低電平時,此時三極管處于截止狀態,沒有電流通過蜂鳴器,那么此時蜂鳴器不會發出警報聲。

圖4 報警電路原理圖
選用的編程語言是基礎的編程語言即C語言,采用的編程軟件是keil。
3.1 系統軟件總體設計
軟件系統有:主程序、中斷程序、LCD顯示程序、分數加減程序、4*4按鍵程序、倒計時程序、蜂鳴器警報。下面主要介紹主程序,中斷程序,按鍵程序,警報程序,LCD顯示系統的編寫流程,以及遇到的問題。
從主程序流程圖中可以看出,首先,將單片機的電源接通,這時主芯片開始初始化,即刪除上一次運行中可能留下的數據,以及將數據設置為初始值。其次,通過單片機進行判斷用戶進行的操作,即按下的按鍵所對應的功能。最后,顯示對應按鍵程序運行出來的結果。
3.2 主程序模塊
在程序設計中,主程序起到至關重要的作用。本設計的主程序主要需要完成以下功能:(1)系統的初始化;(2)中斷;(3)按鍵是否按下的檢測;(4)以及顯示調用等。本次設計中,主程序的功能主要體現在,使用單片機內部的定時計數器來完成倒計時功能。同時接受按鍵的控制實現各項功能,最終將比賽結果顯示在LCD顯示屏上。接下來將重點講中斷系統。即每節比賽結束時比賽自動暫停。
3.3 按鍵程序模塊
使用4*4矩陣鍵盤,此類鍵盤使用的是逐步查詢的方式,所以當單片機接通電源之后,只要有按鍵閉合,接下來先判斷那個按鍵被按下,最后執行該按鍵所代表的指令。并是在完成一道指令后,可馬上循環執行下一條指令。

圖5 主要程序設計流程圖
3.4 加減計分程序模塊
當比賽開始按鍵按下之后程序開始運行。兩隊分數初始值均為0,當第一個按鍵按下時A隊加一分,第二個按鍵按下時A隊加兩分,第三個按鍵按下時A隊加三分,第四個按鍵按下時A隊減一分;接下來第五到第八個鍵為B隊比分操作按鍵,與A隊一樣依次排列。同時當比賽兩小節結束時自動交換場地與比分。
3.5 4LCD顯示程序模塊
本次設計中LCD顯示模塊,是根據鍵盤先給出指令,在調出相應的字模代碼,最終在液晶顯示屏上顯示出相應的改變的。
3.6 報警程序模塊
在這段程序中需要設計一個變量,來判斷是否需要報警。在這里將用if語句來實現,即由于進攻方在24s內必須實現一次進攻。那么在程序編寫中就以24秒為一個界限,進行24秒倒計時,當倒計時結束時進行提示。如果,進攻一方在24s內完成進攻,那么可以通過手動進行24秒倒計時重置。本次設計的警報時長為兩秒鐘,所以當一次警報結束,并且重新計時時是從22秒開始倒計時的。
硬件的焊接是一個重要的環節,由于本設計所用元器件不多,焊接起來比較簡單,所以就直接在實驗板上焊接電路。電路焊接完成后進行功能測試,對于有多個模塊的電路設計,在焊接之后必須要進行測試電路是否正確,是否能運行流暢,如果測試中有問題我們要根據問題的具體情況進行修改。實物按照電路圖焊接好后,燒入程序后程并激活,按照規定的要進行功能測試。
電路板完成焊接后,首先下載單片機程序,在Keil軟件中生成HEX文件,然后寫入到單片機里。按照設計的要求進行了測試。調試結果顯示分成兩行,第一行顯示兩隊的比賽得分情況,第二行顯示兩隊的比賽時間得分情況、局數和24秒倒計時。
按下通電按鈕,顯示器的初始顯示狀態是:第一行顯示“籃球積分器”,第二行顯示“友誼第一,比賽第二”。(2)接下來停留兩秒后,第一行顯示“A:0 VS B:0 ”。第二行顯示“00:00 24S 1/4”。(3)比賽開始,做了如下測試。
時間開始倒計時,當兩隊進球時,開始對進球的一方進行加分;若在比賽中發現比分記錄錯誤的話,可以按下減分鍵來更改這個隊的比分;比賽具有24秒倒計時功能,在計時到24秒時,蜂鳴器開始發聲;第一節比賽完成后,蜂鳴器停止發聲,顯示器的界面顯示第二小節;在第二節比賽結束后,可以自動更改兩隊比分的位置;在比賽開始前可以設置比賽的時間,對比賽的時間進行加減,但是在比賽進行中是不可以修改時間的,只能暫停時間。
本設計經過測試達到了預期的效果,實現了計分器的基本功能,即顯示比賽進程,及時進行分數增減,在比賽中進行警報等。系統主要具有如下優點:(1)低成本;(2)穩定的性能;(3)顯示準確;(4)操作方便且易攜帶,適用于各類比賽中。
[1]郭天祥.51單片機C語言教程[M].北京:電子工業出版社, 2009.
[2]王東峰.單片機C語言應用100例[M].北京:電子工業出版社,2009.
[3]趙源.基于單片機的籃球計分器設計[J].電子世界,2016,3(5):13,32-34.
[4]趙素玲.基于STC89C51單片機的籃球計分器的設計[J].電腦知識與技術,2015,11(33):159-161.
[5]白亞梅,白永剛,張昌玉.基于單片機的籃球計分器設計[J].電子制作,2016, 7(13):77-78.
Tongda college of Nanjing University of Posts and Telecommunications
Guo Chang
(Tongda College of Nanjing University of Posts and Telecommunications,Yangzhou Jiangsu,225100)
SCM;LCD;Score indicator
Summary:The design is a score indicator which is low-cost,stable performance, accurate display, convenient operation and easy to carry,suitable for all kinds of games.The main function is to realize fractional change timely addition and subtraction in the basketball game and 24 seconds countdown alarm function,eg.This design includes four modules:score modified system, the countdown system, 24 a second alarm system, LCD display module system.