郭 暢
(南京郵電大學(xué)通達(dá)學(xué)院,江蘇揚(yáng)州,225100)
基于單片機(jī)的籃球計(jì)分器系統(tǒng)的設(shè)計(jì)
郭 暢
(南京郵電大學(xué)通達(dá)學(xué)院,江蘇揚(yáng)州,225100)
本設(shè)計(jì)是一款低成本、性能穩(wěn)定、顯示準(zhǔn)確、操作方便且易攜帶,適用于各類比賽的計(jì)分器。主要實(shí)現(xiàn)對(duì)籃球比賽中的分?jǐn)?shù)變化進(jìn)行及時(shí)加減,24秒倒計(jì)時(shí)警報(bào)等功能。包括四個(gè)模塊:分?jǐn)?shù)加減系統(tǒng),倒計(jì)時(shí)系統(tǒng),24秒警報(bào)系統(tǒng),LCD顯示模塊系統(tǒng)。
單片機(jī);LCD;計(jì)分
籃球比賽是根據(jù)參賽隊(duì)伍在規(guī)定比賽時(shí)間內(nèi)分得多少來決定勝負(fù)的,因此一次比賽的計(jì)時(shí)計(jì)分非常重要,這就特別需要一個(gè)計(jì)分器來準(zhǔn)確及時(shí)的統(tǒng)計(jì)雙方的得分情況,以及比賽時(shí)間的監(jiān)控。正式比賽中使用的籃球計(jì)分器體積過大,對(duì)于一般性比賽不適用,所以簡(jiǎn)易的籃球計(jì)分器更適合。它能減少人工計(jì)時(shí)計(jì)分可能會(huì)產(chǎn)生的誤差,也減少了人工費(fèi)用??梢栽诒荣愔芯_顯示比賽中分?jǐn)?shù)的實(shí)時(shí)加減的變化,使觀眾更加準(zhǔn)確的了解比賽狀況。并通過LCD液晶顯示器將比賽進(jìn)程展示在大屏幕上,將比賽變得更加直觀。而采用單片機(jī)來設(shè)計(jì)的這款籃球計(jì)分器就是來滿足籃球比賽中倒計(jì)時(shí),加減分以及24秒警報(bào)等需求的。
設(shè)計(jì)中采用STC89C52單片機(jī)作為主控芯片,總體框架設(shè)計(jì)圖如圖1所示。
圖1 總體框架設(shè)計(jì)圖
顯示模塊使用LCD1602液晶顯示屏,液晶顯示屏的顯示行數(shù)清晰度以及現(xiàn)實(shí)的復(fù)雜程度比較高,可以做到清楚的表示出所需要的數(shù)字或字母。矩陣鍵盤電路按鍵為16個(gè),使用4*4模式的矩陣鍵盤。定時(shí)器選擇的是單片機(jī)自帶的計(jì)時(shí)裝置。警報(bào)系統(tǒng)選擇無源式蜂鳴器。
2.1 系統(tǒng)的工作原理
根據(jù)籃球比賽的規(guī)則本設(shè)計(jì)可以實(shí)現(xiàn),兩個(gè)半時(shí),每半時(shí)20分鐘;四節(jié)比賽每節(jié)10分鐘,第一和第二節(jié),第三和第四節(jié)中間的休息時(shí)間分別為2分鐘;半場(chǎng)的休息時(shí)間為10分鐘。
硬件電路包括以下四部分最小單片機(jī)系統(tǒng)電路、LCD顯示電路、矩陣鍵盤電路、報(bào)警電路。
(1)24s倒計(jì)時(shí)結(jié)束后以及每節(jié)結(jié)束后發(fā)出警報(bào),并在每節(jié)結(jié)束后中斷比賽。
實(shí)現(xiàn)過程:根據(jù)單片機(jī)本身具有的計(jì)時(shí)器進(jìn)行24s倒計(jì)時(shí)過程,接下來需要蜂鳴器發(fā)出警報(bào),但由于無源蜂鳴器無法直接發(fā)出警報(bào),所以加一個(gè)電阻產(chǎn)生一個(gè)方波,是的蜂鳴器可以發(fā)出警報(bào)。
(2)對(duì)比賽時(shí)間、分?jǐn)?shù)、節(jié)數(shù)以及其改變進(jìn)行及時(shí)顯示。
實(shí)現(xiàn)過程:將顯示器各管腳依次連接到單片機(jī)的P0.0到P0.7上,由于防止顯示其運(yùn)作時(shí)間過長(zhǎng)溫度過高會(huì)損壞元器件,所以接上一個(gè)排阻來保護(hù)電路。
(3)通過按鍵對(duì)各隊(duì)比賽分?jǐn)?shù)改變進(jìn)行控制,分別為:A隊(duì)加一分,加兩分,加三分,以及當(dāng)比賽積分出錯(cuò)時(shí)進(jìn)行逐一減分;B隊(duì)加一分,加兩分,加三分,單獨(dú)積分出錯(cuò)時(shí)進(jìn)行逐一減分;同時(shí)具備,對(duì)比賽節(jié)數(shù)加二,減二;對(duì)于一節(jié)時(shí)間的調(diào)整(以一分鐘為最小單位);比賽的開始和暫停;手動(dòng)調(diào)節(jié)為加時(shí)賽;重置24s倒計(jì)時(shí)。
實(shí)現(xiàn)過程:因?yàn)槭褂?*4矩陣鍵盤,所以,將縱向上的四根連線分別連接到P3.4到P3.7管腳口,將橫向的四根線分別連接到P3.0到P3.3上,以此來實(shí)現(xiàn)鍵盤模塊的控制作用。
(4)應(yīng)用單片機(jī)內(nèi)部計(jì)時(shí)器進(jìn)行比賽時(shí)間到計(jì)時(shí)以及24s警報(bào)倒計(jì)時(shí)。
實(shí)現(xiàn)過程:由于屬于單片機(jī)內(nèi)置定時(shí)器,所以直接通過程序取用就可以了。
2.2 單片機(jī)最小系統(tǒng)設(shè)計(jì)
本設(shè)計(jì)使用STC89C52作為單片機(jī)最小系統(tǒng),在設(shè)計(jì)時(shí)應(yīng)注意,其中一定要包括電源、單片機(jī)、時(shí)鐘以及復(fù)位電路。設(shè)計(jì)時(shí)使用的晶振為12MHZ,用它來為電路提供時(shí)鐘,這個(gè)時(shí)鐘的作用就是為單片機(jī)提供一個(gè)時(shí)間上的基準(zhǔn)。在單片機(jī)中,每執(zhí)行一條命令,所需要的時(shí)間為一個(gè)機(jī)器周期。最先系統(tǒng)中還包括了復(fù)位電路,即每次按下復(fù)位按鍵之后,所有的指令從頭開始運(yùn)行。設(shè)計(jì)圖中加入電阻,其目的是為P0口的漏極電路提供一個(gè)上拉電阻,使P0口正常運(yùn)行。
2.3 LCD顯示電路設(shè)計(jì)
1602LCD與單片機(jī)的硬件連接圖如圖2所示,由圖中可以看出JPBG接口直接與電源連接。第三引腳接口中的可調(diào)電位器必須與電源與地連接,RS,R/W和E這三個(gè)控制位分別對(duì)應(yīng)P2.0,P2.1,P2.2。4.P0.0-P0.7是8位數(shù)據(jù)線。
在三個(gè)控制位中,RS=0時(shí)代表寫或讀指令,RS=1時(shí)代表寫數(shù)據(jù)。其中R/W表示讀寫指令,R/W=1表示讀,R/W=0表示寫。E作為使能端,應(yīng)當(dāng)依據(jù)時(shí)序圖去編寫與之對(duì)應(yīng)的程序。
圖2 1602LCD與單片機(jī)的硬件連接圖
2.4 矩陣鍵盤模塊設(shè)計(jì)
矩陣鍵盤電路設(shè)計(jì)圖如圖3所示。把單片機(jī)的P3.0-P3.7端口通過8聯(lián)撥動(dòng)撥碼開關(guān)連接到“4*4行列式鍵盤”,其中P3.4-P3.7作為列線,P3.0-P3.3作為行線,系統(tǒng)首先通過CPU對(duì)全部鍵盤進(jìn)行掃描,就是將第一條行線設(shè)置為“0”狀態(tài),剩下的所有行線處于于“1”狀態(tài),讀取輸入緩沖器的狀態(tài),如果其狀態(tài)全部處于“1”則說明該行沒有按鍵被按下,接下來將第二根行線設(shè)置為“0”狀態(tài),繼續(xù)讀取輸入緩沖器的狀態(tài),如這是它的狀態(tài)也全為“1”,那么設(shè)置第一根行線處于“0”狀態(tài),接下來重復(fù)此運(yùn)行狀態(tài)。如果讀取輸入緩沖器的狀態(tài)不全處于“1”狀態(tài),則確定哪一根列線為“0”狀態(tài),如果某個(gè)鍵的行線和列線都為“0”狀態(tài)時(shí),說明此時(shí)這個(gè)鍵按下。
圖3 矩陣鍵盤模塊電路圖
本次籃球計(jì)分器鍵盤設(shè)計(jì)布局及功能如表1所示。利用STC89C52的一個(gè)P口分別對(duì)矩陣鍵盤的4根行線和4根列線進(jìn)行連接,以此方式來分別實(shí)現(xiàn)16個(gè)按鍵的功能,這種方法有利于矩陣鍵盤與按鍵之間的使用率,同時(shí)也有利于節(jié)約單片機(jī)外圍電路的資源。
本設(shè)計(jì)的系統(tǒng)功能用了16個(gè)獨(dú)立鍵盤來實(shí)現(xiàn),用它來控制籃球計(jì)分器系統(tǒng)功能,這16個(gè)控制矩陣鍵盤分別為S1,S2,S3, S4,S5,S6,S7,S8,S9, S10,S11,S12,S13, S14,S15,S16。除了這16個(gè)獨(dú)立鍵盤還有一個(gè)復(fù)位按鈕S17和一個(gè)電源開關(guān)按鈕。這些按鍵分別被連接到單片機(jī)的P3口上的低四位和高四位。根據(jù)程序設(shè)計(jì)的要求,在系統(tǒng)初始化時(shí)等待配置比賽時(shí)間。
當(dāng)按下S13按鍵可以實(shí)現(xiàn)暫停或開始,按下S17復(fù)位按鍵可以實(shí)現(xiàn)時(shí)間清零,按下S1,S2,S3, S4按鍵可以實(shí)現(xiàn)A隊(duì)的+1,+2,+3,-1分的功能。按下S5,S6,S7, S8按鍵可以實(shí)現(xiàn)B隊(duì)的+1,+2,+3,-1的功功能。按下S9按鍵比賽節(jié)數(shù)加2,按下S10按鍵實(shí)現(xiàn)對(duì)比賽節(jié)數(shù)減2。按下S11按鍵設(shè)置一節(jié)比賽的時(shí)間,按下S12按鍵可以修改一節(jié)比賽時(shí)間的錯(cuò)誤設(shè)置。按下S15按鍵可以實(shí)現(xiàn)手動(dòng)設(shè)置加時(shí)賽的時(shí)間,按下S16按鍵可以實(shí)現(xiàn)籃球24秒的倒計(jì)時(shí)重置。
表1 按鍵布局及功能表
2.5 報(bào)警電路設(shè)計(jì)
報(bào)警電路原理圖如圖4所示。蜂鳴器系統(tǒng)由一個(gè)9012的三極管及一個(gè)2.2K的電012三極管其主要作用是驅(qū)動(dòng)蜂鳴器。由于單片機(jī)的IO口驅(qū)動(dòng)能力不足以使蜂鳴器發(fā)出聲音,于是我們需要通過三極管對(duì)驅(qū)動(dòng)電流進(jìn)行放大,以此來達(dá)到讓蜂鳴器發(fā)出聲音的目的,如果是輸出高電平,則此時(shí)三極管導(dǎo)通,集電極電流流過蜂鳴器是的蜂鳴器發(fā)出警報(bào),若輸出為低電平時(shí),此時(shí)三極管處于截止?fàn)顟B(tài),沒有電流通過蜂鳴器,那么此時(shí)蜂鳴器不會(huì)發(fā)出警報(bào)聲。
圖4 報(bào)警電路原理圖
選用的編程語言是基礎(chǔ)的編程語言即C語言,采用的編程軟件是keil。
3.1 系統(tǒng)軟件總體設(shè)計(jì)
軟件系統(tǒng)有:主程序、中斷程序、LCD顯示程序、分?jǐn)?shù)加減程序、4*4按鍵程序、倒計(jì)時(shí)程序、蜂鳴器警報(bào)。下面主要介紹主程序,中斷程序,按鍵程序,警報(bào)程序,LCD顯示系統(tǒng)的編寫流程,以及遇到的問題。
從主程序流程圖中可以看出,首先,將單片機(jī)的電源接通,這時(shí)主芯片開始初始化,即刪除上一次運(yùn)行中可能留下的數(shù)據(jù),以及將數(shù)據(jù)設(shè)置為初始值。其次,通過單片機(jī)進(jìn)行判斷用戶進(jìn)行的操作,即按下的按鍵所對(duì)應(yīng)的功能。最后,顯示對(duì)應(yīng)按鍵程序運(yùn)行出來的結(jié)果。
3.2 主程序模塊
在程序設(shè)計(jì)中,主程序起到至關(guān)重要的作用。本設(shè)計(jì)的主程序主要需要完成以下功能:(1)系統(tǒng)的初始化;(2)中斷;(3)按鍵是否按下的檢測(cè);(4)以及顯示調(diào)用等。本次設(shè)計(jì)中,主程序的功能主要體現(xiàn)在,使用單片機(jī)內(nèi)部的定時(shí)計(jì)數(shù)器來完成倒計(jì)時(shí)功能。同時(shí)接受按鍵的控制實(shí)現(xiàn)各項(xiàng)功能,最終將比賽結(jié)果顯示在LCD顯示屏上。接下來將重點(diǎn)講中斷系統(tǒng)。即每節(jié)比賽結(jié)束時(shí)比賽自動(dòng)暫停。
3.3 按鍵程序模塊
使用4*4矩陣鍵盤,此類鍵盤使用的是逐步查詢的方式,所以當(dāng)單片機(jī)接通電源之后,只要有按鍵閉合,接下來先判斷那個(gè)按鍵被按下,最后執(zhí)行該按鍵所代表的指令。并是在完成一道指令后,可馬上循環(huán)執(zhí)行下一條指令。
圖5 主要程序設(shè)計(jì)流程圖
3.4 加減計(jì)分程序模塊
當(dāng)比賽開始按鍵按下之后程序開始運(yùn)行。兩隊(duì)分?jǐn)?shù)初始值均為0,當(dāng)?shù)谝粋€(gè)按鍵按下時(shí)A隊(duì)加一分,第二個(gè)按鍵按下時(shí)A隊(duì)加兩分,第三個(gè)按鍵按下時(shí)A隊(duì)加三分,第四個(gè)按鍵按下時(shí)A隊(duì)減一分;接下來第五到第八個(gè)鍵為B隊(duì)比分操作按鍵,與A隊(duì)一樣依次排列。同時(shí)當(dāng)比賽兩小節(jié)結(jié)束時(shí)自動(dòng)交換場(chǎng)地與比分。
3.5 4LCD顯示程序模塊
本次設(shè)計(jì)中LCD顯示模塊,是根據(jù)鍵盤先給出指令,在調(diào)出相應(yīng)的字模代碼,最終在液晶顯示屏上顯示出相應(yīng)的改變的。
3.6 報(bào)警程序模塊
在這段程序中需要設(shè)計(jì)一個(gè)變量,來判斷是否需要報(bào)警。在這里將用if語句來實(shí)現(xiàn),即由于進(jìn)攻方在24s內(nèi)必須實(shí)現(xiàn)一次進(jìn)攻。那么在程序編寫中就以24秒為一個(gè)界限,進(jìn)行24秒倒計(jì)時(shí),當(dāng)?shù)褂?jì)時(shí)結(jié)束時(shí)進(jìn)行提示。如果,進(jìn)攻一方在24s內(nèi)完成進(jìn)攻,那么可以通過手動(dòng)進(jìn)行24秒倒計(jì)時(shí)重置。本次設(shè)計(jì)的警報(bào)時(shí)長(zhǎng)為兩秒鐘,所以當(dāng)一次警報(bào)結(jié)束,并且重新計(jì)時(shí)時(shí)是從22秒開始倒計(jì)時(shí)的。
硬件的焊接是一個(gè)重要的環(huán)節(jié),由于本設(shè)計(jì)所用元器件不多,焊接起來比較簡(jiǎn)單,所以就直接在實(shí)驗(yàn)板上焊接電路。電路焊接完成后進(jìn)行功能測(cè)試,對(duì)于有多個(gè)模塊的電路設(shè)計(jì),在焊接之后必須要進(jìn)行測(cè)試電路是否正確,是否能運(yùn)行流暢,如果測(cè)試中有問題我們要根據(jù)問題的具體情況進(jìn)行修改。實(shí)物按照電路圖焊接好后,燒入程序后程并激活,按照規(guī)定的要進(jìn)行功能測(cè)試。
電路板完成焊接后,首先下載單片機(jī)程序,在Keil軟件中生成HEX文件,然后寫入到單片機(jī)里。按照設(shè)計(jì)的要求進(jìn)行了測(cè)試。調(diào)試結(jié)果顯示分成兩行,第一行顯示兩隊(duì)的比賽得分情況,第二行顯示兩隊(duì)的比賽時(shí)間得分情況、局?jǐn)?shù)和24秒倒計(jì)時(shí)。
按下通電按鈕,顯示器的初始顯示狀態(tài)是:第一行顯示“籃球積分器”,第二行顯示“友誼第一,比賽第二”。(2)接下來停留兩秒后,第一行顯示“A:0 VS B:0 ”。第二行顯示“00:00 24S 1/4”。(3)比賽開始,做了如下測(cè)試。
時(shí)間開始倒計(jì)時(shí),當(dāng)兩隊(duì)進(jìn)球時(shí),開始對(duì)進(jìn)球的一方進(jìn)行加分;若在比賽中發(fā)現(xiàn)比分記錄錯(cuò)誤的話,可以按下減分鍵來更改這個(gè)隊(duì)的比分;比賽具有24秒倒計(jì)時(shí)功能,在計(jì)時(shí)到24秒時(shí),蜂鳴器開始發(fā)聲;第一節(jié)比賽完成后,蜂鳴器停止發(fā)聲,顯示器的界面顯示第二小節(jié);在第二節(jié)比賽結(jié)束后,可以自動(dòng)更改兩隊(duì)比分的位置;在比賽開始前可以設(shè)置比賽的時(shí)間,對(duì)比賽的時(shí)間進(jìn)行加減,但是在比賽進(jìn)行中是不可以修改時(shí)間的,只能暫停時(shí)間。
本設(shè)計(jì)經(jīng)過測(cè)試達(dá)到了預(yù)期的效果,實(shí)現(xiàn)了計(jì)分器的基本功能,即顯示比賽進(jìn)程,及時(shí)進(jìn)行分?jǐn)?shù)增減,在比賽中進(jìn)行警報(bào)等。系統(tǒng)主要具有如下優(yōu)點(diǎn):(1)低成本;(2)穩(wěn)定的性能;(3)顯示準(zhǔn)確;(4)操作方便且易攜帶,適用于各類比賽中。
[1]郭天祥.51單片機(jī)C語言教程[M].北京:電子工業(yè)出版社, 2009.
[2]王東峰.單片機(jī)C語言應(yīng)用100例[M].北京:電子工業(yè)出版社,2009.
[3]趙源.基于單片機(jī)的籃球計(jì)分器設(shè)計(jì)[J].電子世界,2016,3(5):13,32-34.
[4]趙素玲.基于STC89C51單片機(jī)的籃球計(jì)分器的設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2015,11(33):159-161.
[5]白亞梅,白永剛,張昌玉.基于單片機(jī)的籃球計(jì)分器設(shè)計(jì)[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.