1 設計任務 1.1 設計的目的和意義目前球場記分牌在傳統操作模式下,采用記分員手動翻動記分牌記分,工作方式單一。由于種種弊端,電子記分板已經開始在一些大型的體育場流行起來,不僅發展速度迅猛并會逐漸取代傳統的電子記分牌。
電子記分板根據籃球比賽的特點,采用單片機為核心控制LED數碼管,具有亮度高、可視性好、功耗小、使用壽命長等優點;具有性能穩定,尺寸適中,運輸安裝方式靈活,物美價廉等特點,特別適用于中、小型體育館和訓練館。
1.2 設計任務與要求設計題目:籃球賽電子計時記分牌
設計要求:
- 分別設計籃球比賽用的計時牌和記分牌;
- 上下半場各20分鐘,要求能隨時暫停,啟動后繼續計時,一場比賽結束后應可清零重新開始比賽;
- 能按照籃球計分規則計分并顯示。
2 硬件系統設計 2.1 總體方案設計籃球記分器的硬件電路分成主控模塊、鍵盤輸入模塊、信息提示模塊三部分進行設計,系統整體結構如圖1所示。
圖1 系統硬件結構圖
主控模塊以AT89C52為核心,完成輸入輸出信息處理、計時器中斷響應、數值計算等,協調整個系統有條不紊地工作。鍵盤輸入模塊作為人機交互接口,允許用戶控制系統的工作狀態,完成如計時計分開始/暫停、交換場地、計時計分清零、比賽隊伍分數調整等功能。信息提示模塊包含4個2位8段數碼管、6個LED和一個蜂鳴器,用于實時顯示系統工作狀態,方便用戶進行下一步操作。
2.2 芯片選型與具體電路設計 2.2.1 單片機的選型主控模塊以AT89C52單片機作為微控制器。AT89C52單片機是一種低電壓,高性能CMOS 8位單片機,片內含8k bytes的可反復擦寫的Flash只讀程序存儲器和256 bytes的隨機存取數據存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統,片內置通用8位中央處理器和Flash存儲單元。由于它的這些優良特性,AT89C52單片機在電子行業中有著廣泛的應用。采用AT89C52作為微控制器,可以很好地滿足籃球記分器的系統要求。
2.2.2 復位和振蕩電路的設計圖2給出了AT89C52單片機的引腳分布和最小系統接法。
圖2 AT89C52單片機最小系統原理圖
復位電路可以實現上電復位和按鍵復位兩種復位方式:上電復位電路由電容串聯電阻構成,由圖并結合“電容電壓不能突變”的性質,可以知道,當系統一上電,RST腳將會出現高電平,并且這個高電平持續的時間由電路的RC值來決定。典型的51單片機當RST腳的高電平持續兩個機器周期以上就將復位,所以適當組合RC的取值就可以保證可靠的復位。按鍵復位電路則是通過按下RESET按鍵拉高RST引腳電平來實現的。
晶體振蕩電路由一個12MHZ石英晶振和兩個30pF的電容組成,用于產生穩定的時鐘脈沖信號供單片機工作。
2.2.3 鍵盤輸入模塊的設計用戶通過鍵盤輸入模塊對系統進行控制。鍵盤采用3*3矩陣式按鍵,其中按鍵“START/PAUSE”控制計時計分的開始與暫停,按鍵“EXCHANGE”用于在半場結束后交換雙方記分牌上的分數,按鍵“CLEAR”用于在比賽結束后清除比分,其余的按鍵“A+1”、A+2”、“A+3”、“B+1”、“B+2”、“B+3”用于給參加比賽的A、B兩隊加上相應的分數。3*3矩陣按鍵的6條引線分別接至AT89C52的I/O口P3_0~P3_5,在單片機內部采用行列掃描法檢測到按鍵按下,從而執行相應的任務。
矩陣鍵盤的連接方式如圖3所示。
圖3 矩陣鍵盤的連接方式
2.2.4 信息提示模塊的設計信息提示模塊包含4個2位8段共陰極數碼管(圖4)、6個LED指示燈(圖5)和一個蜂鳴器。
4個數碼管分別用兩位數字顯示比賽分鐘、秒鐘和賽場上兩個籃板的分數。由于單片機I/O口資源有限,為了不占用太多的接口,在此使用P0口向數碼管同時送出數據(段選信號)和地址(位選信號),使用兩個74HC573鎖存器來分離數據和地址,而P2_0和P2_1口分別用于使能段選鎖存器和位選鎖存器。由于P0口的電流驅動能力有限,所以外接了排阻RP1,從而增強了對數碼管的驅動能力。
圖4 數碼管連接原理圖
LED1、LED2、LED3分別指示比賽狀態“開始”、“暫停”和“結束”;LED4用于“進球”指示,在比賽進行時按下任何一個加分按鍵,“進球”指示燈會閃一下;在上半場比賽結束后按下“EXCHANGE”鍵,“交換場地”指示燈LED5會亮,同時兩個籃板的比分互換。“ERROR!”指示燈LED6用于指示用戶的操作出錯。6個LED采用共陽極連接方式,其陰極分別接單片機P1_0~P1_5口,當單片機某口輸出低電平時,對應的LED亮。
圖5 LED指示燈連接原理圖
蜂鳴器接在P1_6口上,在半場結束或比賽結束后會發出提示音。
2.3 系統總體電路圖6給出了系統硬件原理總圖。
2.4 系統所用元器件本系統所用的元器件清單如表1所示。
表1 本系統所用的元器件
3 軟件系統設計 3.1 軟件系統總體設計方案單片機程序采用美國Keil Software公司出品的51系列兼容單片機C語言開發系統Keil C編寫。與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,通過一個集成開發環境(uVision)將這些部分組合在一起。
Keil采用工程方式集中管理源程序,編寫單片機程序首先要建立工程,然后在工程中添加源代碼文件。在本系統的工程中包含6個C代碼文件,對應功能介紹如下:
My_func.h ——自定義的頭文件。存放常用宏定義、單片機I/O位定義、數據類型定義和所有函數的聲明。在其他C文件里只需要寫一句#include "my_func.h",即可直接調用任意函數,省去了重復寫定義和聲明的麻煩。
Main.c ——包含主程序main(),是整個程序執行的入口。在main()函數里,調用init()進行單片機的初始化,并在大循環里調用key_respond()和display()不斷掃描按鍵輸入、輸出顯示數據。同時設置定時器T0以工作方式1計時,從而在中斷服務程序void Timer() interrupt 1里實現1s間隔的倒計時。
Key_scan.c ——包含按鍵掃描程序key_scan()。該函數采用行掃描法獲取按鍵的狀態,并將對應的鍵碼傳給Key_respond.c中的函數key_respond()。
Key_respond.c ——包含按鍵響應函數key_respond()。該函數里決定是否對按鍵請求進行響應:如果不響應,則調用宏LED_ERROR()使“ERROR!”指示燈閃動;如果響應,則調用相應函數完成不同的操作,如比賽狀態的開始和暫停、加分、交換場地和分數清零等。
Display.c ——包含數碼管顯示驅動函數display()。在這個函數里實現比賽分數設置、比分交換、計時控制等,并通過P0口送出段選信號,通過P2_0和P2_1送出位選信號,從而控制數碼管的動態顯示。
My_func.c ——被調用函數的集合,包含延時函數void delay_ms(unsigned int xms)、初始化函數init()和蜂鳴器發聲函數sounder()。