|
設(shè)計題目:基于單片機(jī)的籃球比賽計分器 設(shè)計內(nèi)容及要求: 1)設(shè)計一款顯示籃球比分的記分牌; 2)通過加分按鈕可以給A隊,或B隊加分; 3)設(shè)計對調(diào)功能,更換場地后,AB隊分?jǐn)?shù)互換; 4)計時:能實現(xiàn)0~99分和0~59秒任意調(diào)整,具有啟動、暫停、復(fù)位功能; 5)秒計時:能實現(xiàn)0~99秒任意調(diào)整,具有啟動、暫停、復(fù)位功能; 6)增加局?jǐn)?shù)比分功能; 7)增加比賽時間倒計時功能; 8)報警:0~99秒違例自動聲、光報警:0~99分終場自動聲響; 9)可實現(xiàn)A、B兩隊暫停次數(shù)和犯規(guī)的顯示和任意加減; 摘要: 本設(shè)計是采用單片機(jī)AT89C51作為本設(shè)計的核心元件。利用7段共陰LED作為顯示器件。在此設(shè)計中共接入了8個7段共陰LED顯示器,其中4個用于記錄AB隊的分?jǐn)?shù),每隊2個LED顯示器顯示范圍可達(dá)到0~99分,足夠滿足賽程需要,另外4個LED顯示器則用來記錄賽程時間,其中2個用于顯示分鐘,2個用于顯示秒鐘。賽程計時采用倒計時方式。即比賽前將時間設(shè)置好,比賽開始時啟動計時,直至計時到零為止。計時范圍可達(dá)到0~99分鐘,也完全滿足實際賽程的需要。當(dāng)比賽隊A隊得1分時,按下A+1鍵;得2分時,按下A+2鍵;得3分時,按下A+3鍵;當(dāng)加分出現(xiàn)錯誤時,可以按A-1鍵減1分,可以達(dá)到調(diào)整分?jǐn)?shù)的作用;依照同樣的方法可以記錄B隊的得分。 采用單片機(jī)控制使這個系統(tǒng)按鍵操作使用簡潔,LED顯示,安裝方便。解決了籃球比賽計分器的安裝問題,節(jié)約了線材,適合在各種規(guī)模的體育場館使用,完全可以代替?zhèn)鹘y(tǒng)的用鐘表進(jìn)行計時的方法,當(dāng)然稍加改動也可以用于其他球類比賽,是體育器材向智能化發(fā)展的一個實例。
目錄
一. 設(shè)計的基本步驟及方案 ..................................3 1.AT89C51簡介 ..................................3 2.?dāng)?shù)碼管顯示原理..................................3 3.總體方案..................................4 二. 硬件電路設(shè)計及描述..................................5 1. 硬件原理電路圖..................................6 2. 硬件電路設(shè)計及描述.................................. 7 三. 軟件設(shè)計思想及流程圖..................................8 1 .主流程圖.................................. 8 2.記分流程圖.................................. 9 3.時間中斷流程圖..................................10 4.源程序代碼見附錄一..................................12 四.硬軟件的調(diào)試過程及調(diào)試方法..................................12 五.課程設(shè)計心得體會..................................14 附錄一 源程序代碼..................................15
一.設(shè)計的基本步驟及方案 1.AT89C51簡介 單片機(jī)是在一塊芯片中集成了CPU、RAM、ROM、定時/計數(shù)器和多功能I/O口等計算機(jī)所需要的基本部件的大規(guī)模集成電路。 其以體積小、功能全、性價比高等諸多優(yōu)點而獨具特色,在工業(yè)控制、尖端武器、通信設(shè)備、家用電器等嵌入式應(yīng)用領(lǐng)域中獨占鰲頭。如果說C語言程序設(shè)計課程設(shè)計軟件設(shè)計的基礎(chǔ)課,那么單片機(jī)以其系統(tǒng)硬件構(gòu)架完整、價格低廉、學(xué)生能動手等特點,成為工科學(xué)生硬件設(shè)計基礎(chǔ)課。 2.數(shù)碼管顯示原理 數(shù)碼管實際上是由7個發(fā)光管組成8字形構(gòu)成的,加上小數(shù)點就是8個。我們分別把他命名為A,B,C,D,E,F,G,H。

圖1 數(shù)碼管內(nèi)部結(jié)構(gòu)圖
假設(shè)我們要顯示一個數(shù)字2, 那么 A、B、G、E、D這5個段的發(fā)光管亮就可以了,C、F、H不亮,同時由于接法為共陰接法,那么為高電平是亮,低電平是滅。從高往低排列, P1.7-P1.0寫成二進(jìn)制為01011011, 把他轉(zhuǎn)化為16進(jìn)制則為5BH。我們可以根據(jù)硬件的接線把數(shù)碼管顯示數(shù)字編制成一個表格,見下表,以后直接調(diào)用就行了。 數(shù)碼管的接口有靜態(tài)接口和動態(tài)接口兩種。靜態(tài)接口為固定顯示方式,無閃爍,其電路可采用一個并行口接一個數(shù)碼管,數(shù)碼管的公共端按共陰接GND,本次課程設(shè)計由于所需數(shù)碼管不多,故可用些種方法接線。這種接法占用接口多,僅能接少量數(shù)碼管。 動態(tài)接口采用各數(shù)碼管循環(huán)輪流顯示的方法,當(dāng)循環(huán)顯示的頻率較高時,利用人眼的暫留特性,看不出閃爍顯示現(xiàn)象,這種顯示需要一個接口完成字形碼的輸出,另一接口完成各數(shù)碼管的輪流點亮。 多位一體的數(shù)碼管原理和單個的差不多。 表2 共陰極數(shù)碼管顯示
3.總體方案: 基于單片機(jī)系統(tǒng)的籃球賽計時計分器的系統(tǒng)構(gòu)成圖如下圖所示: 圖3 系統(tǒng)結(jié)構(gòu)圖 本系統(tǒng)采用單片機(jī)AT89C51作為AT89C51本設(shè)計的核心元件。利用7段共陰LED作為顯示器件。在此設(shè)計中共接入了8個7段共陰LED顯示器,其中4個用于記錄AB隊的分?jǐn)?shù),每隊2個LED顯示器顯示范圍可達(dá)到0~99分,足夠滿足賽程需要,另外4個LED顯示器則用來記錄賽程時間,其中2個用于顯示分鐘,2個用于顯示秒鐘。賽程計時采用到計時方式。即比賽前將時間設(shè)置好,比賽開始時啟動計時,直至計時到零為止。計時范圍可達(dá)到0~99分鐘,也完全滿足實際賽程的需要。 其次,為了配合計時器和計分器校正調(diào)整時間和比分,我們特定在本設(shè)計中設(shè)立了11個按鍵,其中8個用于設(shè)置,交換場地,啟動和暫停等功能。
二. 硬件電路設(shè)計及描述 1.硬件原理電路 系統(tǒng)硬件圖如下圖4所示: 
記分圖如下圖5所示: 
計時圖如下圖6所示: 
2.硬件電路設(shè)計及描述 硬件部分的設(shè)計是整個設(shè)計中的一個重要部分。在進(jìn)行硬件部分設(shè)計時,首先要確定元器件,并且知道這些器件的工作原理和功能。然后才可以進(jìn)行設(shè)計。本設(shè)計的硬件電路包括兩部分:計時電路、計分電路。硬件電部分的設(shè)計除了硬件電路的設(shè)計,還包括PCB板的繪制。 
三. 軟件思想及流程1. 主流程圖8: 
2. 記分流程圖9: 比分顯示程序: DISPF:MOV R0,#34H MOV R3,#7FH MOV A,R3 PLAYF:MOV P2,A MOV A,@R0 MOV DPTR,#DSEG1 MOVC A,@A+DPTR MOV P0,A LCALL DL1 MOV P2,#0FFH MOV A,R3 RR A JNB ACC.3,LD1 INC R0 MOV R3,A LJMP PLAYF AJMP LD1 鍵盤掃描子程序 
3. 時間中斷流程圖10 時間中斷程序: TIME: PUSH ACC PUSH PSW MOV TH0,#0D8H MOV TL0,#0F0H DJNZ R2,RET0 MOV R2,#64H MOV A,20H CLR C DEC A MOV 20H,A MOV A,21H CJNE A,#00H,PFF ;;;;;;;;;非0分跳轉(zhuǎn);;;;;;;;;;;;;;;;; MOV A,20H CJNE A,#00H,PFF ;;;;;;;;;非0分0秒情況跳轉(zhuǎn);;;;;;;;;; CLR TR0 ;;;;;;;;;比賽結(jié)束停止計時;;;;;;;;;; MOV 20H,#00H MOV 21H,#00H MOV 32H,#00H MOV 33H,#00H LCALL MINGYIN MOV 21H,26H MOV 30H,#00H MOV 31H,#00H MOV 32H,24H MOV 33H,25H LJMP RET0 PFF: MOV A,20H CJNE A,#0FFH,OUT MOV 20H,#59 ; MOV 30H,#09H MOV 31H,#05H MOV A,21H DEC A MOV 21H,A OUT: MOV A,20H MOV B,#0AH DIV AB MOV 30H,B MOV 31H,A MOV A,21H MOV B,#0AH DIV AB MOV 32H,B MOV 33H,A RET0: POP PSW POP ACC RETI YANSHI:PUSH ACC ;定時器1中斷 PUSH PSW MOV TH1,#0D8H MOV TL1,#0F0H DJNZ R2,RET1 MOV R2,#64H DJNZ 39H,RET1 MOV 39H,#03H ;TIAN HEIHEI MOV R2,#64H CLR TR1 CLR P3.6 RET1: POP PSW POP ACC RETI 時間顯示程序: DISPT: MOV R0,#30H MOV R3,#0F7H MOV A,R3 PLAYT:MOV P2,A MOV A,@R0 MOV DPTR,#DSEG1 MOVC A,@A+DPTR MOV P0,A LCALL DL1 MOV P2,#0FFH MOV A,R3 RR A JNB ACC.7,LD1 INC R0 MOV R3,A LJMP PLAYT LD1: RET

4. 源程序代碼見附錄一
四.硬軟件的調(diào)試過程及調(diào)試方法 1.進(jìn)入比賽,先設(shè)置時間為一節(jié)或者半場。默認(rèn)是12分鐘(按下“A+1”進(jìn)行分鐘加1,按下“A-1”進(jìn)行分鐘減1),如圖11 
圖11 2.按下“K1”開始比賽或者暫停,如圖12 
3.上面的液晶顯示為計時顯示。下面的液晶顯示為分?jǐn)?shù)顯示“左側(cè)為攻左半場的隊的分?jǐn)?shù),右側(cè)為攻右半場的對的分?jǐn)?shù)。”換場后依然如此。 4.按下“K2”交換場地,重新計時。 5.A+1,A+2,A+3,A-1,B+1,B+2,B+3,B-1進(jìn)行兩隊分?jǐn)?shù)調(diào)整 五.課程設(shè)計心得體會 俗話說:好的開始是成功的一半。說起課程設(shè)計,最重要的就是做好設(shè)計的預(yù)習(xí),認(rèn)真的研究老師給的題目,選一個自己感興趣的題目。其次,老師對課程設(shè)計的講解要一絲不茍的去聽去想,因為只有都明白了,做起設(shè)計就會事半功倍。最后,要重視程序的模塊化,修改的方便,也要注重程序的調(diào)試,掌握其方法。 本次設(shè)計,我查閱了相關(guān)書籍,做好各項準(zhǔn)備后才開始進(jìn)行設(shè)計,本次設(shè)計測試結(jié)果以及不足之處:計時電路可完成倒計時、暫停、繼續(xù)等功能,在比賽時間到后可進(jìn)行報警。記分電路工作正常,可完成對比分的刷新與暫存。但在測試過程中發(fā)現(xiàn),在比賽上半場時間到后,不能進(jìn)行比分的交換。進(jìn)行分析后得出結(jié)論如下:系統(tǒng)電路部分設(shè)計沒有原則性的錯誤,在制版的過程中注意了走線,因此硬件部分功能完好。但因為軟件系統(tǒng)編寫方面的疏忽,在比分交換及計時部分沒有能很好的實現(xiàn)。除此之外,軟件達(dá)到了系統(tǒng)的要求。 通過課程設(shè)計,發(fā)現(xiàn)了我們的很多不足,我們知識的很多漏洞,看到了我們的實踐經(jīng)驗還是比較缺乏,理論聯(lián)系實際的能力還急需提高。在這個過程中,我們也曾經(jīng)因為實踐經(jīng)驗的缺乏失落過,也曾經(jīng)仿真成功而熱情高漲。通過單片機(jī)課程設(shè)計,我們加深了對單片機(jī)理論的理解,學(xué)回了怎樣將理論很好地應(yīng)用到實際當(dāng)中去,而且我們還學(xué)會了如何去培養(yǎng)我們的不畏困難的挑戰(zhàn)精神,從而不斷地戰(zhàn)勝自己,超越自己,我們在這一設(shè)計過程中,學(xué)會了堅持不懈,不輕易言棄。設(shè)計過程,也好比是我們?nèi)祟惓砷L的歷程,常有一些不如意,也許這就是在對我們提出了挑戰(zhàn),勇敢過,也戰(zhàn)勝了,勝利的鐘聲也就一定會為我們而敲響。 此次課程設(shè)計充分鍛煉了我們的設(shè)計能力和團(tuán)隊合作能力,給我們注入了一些全新的認(rèn)識,為我們以后的設(shè)計和實驗奠定了基礎(chǔ),也為引導(dǎo)我們以理論結(jié)合實踐起到重要意義。
單片機(jī)源程序如下:
- ORG 0000H
- LJMP MAIN
- ORG 0003H
- LJMP CHANGE
- ORG 000BH
- LJMP TIME
- ORG 0013H
- LJMP TIAOSHI
- ORG 001BH
- LJMP YANSHI
- MAIN: MOV SP,#50H
- MOV TCON,#04H
- MOV 20H,#00H ;秒
- MOV 21H,#0CH ;分
- MOV 22H,#00H ;;;;;;;;;A隊分?jǐn)?shù);;;;;;;;;;;;;;;;;
- MOV 23H,#00H ;;;;;;;;;;B隊分?jǐn)?shù);;;;;;;;;;;
- MOV 24H,#02H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MOV 25H,#01H
- MOV 26H,#0CH ;;;;;;;;;;;分鐘定時區(qū);;;;;;;
- MOV 30H,#00H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MOV 31H,#00H ;;;;;;;;;時間緩沖區(qū);;;;;;;;;;
- MOV 32H,#02H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MOV 33H,#01H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MOV 34H,#00H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MOV 35H,#00H ;;;;;;;;分?jǐn)?shù)顯示緩沖區(qū);;;;;;;
- MOV 36H,#00H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MOV 37H,#00H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MOV 39H,#03H ;TIAN HEIHEI
- MOV TMOD,#11H
- MOV TH0,#0D8H
- MOV TL0,#0F0H
- MOV TH1,#0D8H
- MOV TL1,#0F0H
- MOV IE,#10001111B
- MOV IP,#05H
- MOV R2,#64H
- CLR P3.6
- START:LCALL DISPT
- LCALL DISPF
- JNB P1.0,PP1 ;A隊加一分
- JNB P1.1,PP2 ;A隊加兩分
- JNB P1.2,PP3 ;A隊加三分
- JNB P1.3,PP4 ;A隊減一分
- JNB P1.4,PP55 ;B隊加一分
- JNB P1.5,PP66 ;B隊加兩分
- JNB P1.6,PP77 ;B隊加三分
- JNB P1.7,PP88 ;B隊減一分
- JB P3.0,START
- LCALL DELAY
- JB P3.0,START
- STOP1:JNB P3.0,STOP1
- LCALL DELAY
- JNB P3.0,STOP1
- CPL TR0 ;按鍵奇數(shù)次開始,偶數(shù)次暫停
- LJMP START
- PP55: LJMP PP5
- PP66: LJMP PP6
- PP77: LJMP PP7
- PP88: LJMP PP8
- PP1: LCALL DELAY
- JB P1.0,PPB
- STOP11:JNB P1.0,STOP11
- LCALL DELAY
- JNB P1.0,STOP11
- INC 22H
- MOV A,22H
- LJMP STOREA
- PP2: LCALL DELAY
- JB P1.1,PPB
- STOP22:JNB P1.1,STOP22
- LCALL DELAY
- JNB P1.1,STOP22
- MOV A,22H
- ADD A,#02
- MOV 22H,A
- LJMP STOREA
- PP3: LCALL DELAY
- JB P1.2,PPB
- STOP33:JNB P1.2,STOP33
- LCALL DELAY
- JNB P1.2,STOP33
- MOV A,22H
- ADD A,#03
- MOV 22H,A
- LJMP STOREA
- PP4: LCALL DELAY
- JB P1.3,PPB
- STOP44:JNB P1.3,STOP44
- LCALL DELAY
- JNB P1.3,STOP44
- DEC 22H
- MOV A,22H
- STOREA:MOV B,#0AH
- DIV AB
- MOV 34H,B
- MOV 35H,A
- PPB: LJMP START
- PP5: LCALL DELAY
- JB P1.4,PPC
- STOP55:JNB P1.4,STOP55
- LCALL DELAY
- JNB P1.4,STOP55
- INC 23H
- MOV A,23H
- LJMP STOREB
- PP6: LCALL DELAY
- JB P1.5,PPC
- STOP66:JNB P1.5,STOP66
- LCALL DELAY
- JNB P1.5,STOP66
- MOV A,23H
- ADD A,#02
- MOV 23H,A
- LJMP STOREB
- PP7: LCALL DELAY
- JB P1.6,PPC
- STOP77:JNB P1.6,STOP77
- LCALL DELAY
- JNB P1.6,STOP77
- MOV A,23H
- ADD A,#03
- MOV 23H,A
- LJMP STOREB
- PP8: LCALL DELAY
- JB P1.7,PPC
- STOP88:JNB P1.7,STOP88
- LCALL DELAY
- JNB P1.7,STOP88
- DEC 23H
- MOV A,23H
- STOREB:MOV B,#0AH
- DIV AB
- MOV 36H,B
- MOV 37H,A
- PPC: LJMP START
- DELAY:MOV R4,#5H
- DL00: MOV R5,#0FFH
- DL11: DJNZ R5,DL11
- DJNZ R4,DL00
- RET
- ;;;;;;;;;;;;;;;;;;時間中斷程序;;;;;;;;;;;;;;;
- TIME: PUSH ACC
- PUSH PSW
- MOV TH0,#0D8H
- MOV TL0,#0F0H
- DJNZ R2,RET0
- MOV R2,#64H
- MOV A,20H
- CLR C
- DEC A
- MOV 20H,A
- MOV A,21H
- CJNE A,#00H,PFF ;;;;;;;;;非0分跳轉(zhuǎn);;;;;;;;;;;;;;;;;
- MOV A,20H
- CJNE A,#00H,PFF ;;;;;;;;;非0分0秒情況跳轉(zhuǎn);;;;;;;;;;
- CLR TR0 ;;;;;;;;;比賽結(jié)束停止計時;;;;;;;;;;
- MOV 20H,#00H
- MOV 21H,#00H
- MOV 32H,#00H
- MOV 33H,#00H
- LCALL MINGYIN
- MOV 21H,26H
- MOV 30H,#00H
- MOV 31H,#00H
- MOV 32H,24H
- MOV 33H,25H
- LJMP RET0
- PFF: MOV A,20H
- CJNE A,#0FFH,OUT
- MOV 20H,#59 ;
- MOV 30H,#09H
- MOV 31H,#05H
- MOV A,21H
- DEC A
- MOV 21H,A
- OUT: MOV A,20H
- MOV B,#0AH
- DIV AB
- MOV 30H,B
- MOV 31H,A
- MOV A,21H
- MOV B,#0AH
- DIV AB
- MOV 32H,B
- MOV 33H,A
- RET0: POP PSW
- POP ACC
- RETI
- YANSHI:PUSH ACC ;定時器1中斷
- PUSH PSW
- MOV TH1,#0D8H
- MOV TL1,#0F0H
- DJNZ R2,RET1
- MOV R2,#64H
- DJNZ 39H,RET1
- MOV 39H,#03H ;TIAN HEIHEI
- MOV R2,#64H
- CLR TR1
- CLR P3.6
- RET1: POP PSW
- POP ACC
- RETI
- ;;;;;;;;;;;;;;鳴音子程序;;;;;;;;;;;;
- MINGYIN: SETB P3.6
- SETB TR1
- RETI
- ;;;;;;;時間顯示程序;;;;;;;;;;;
- DISPT: MOV R0,#30H
- MOV R3,#0F7H
- MOV A,R3
- PLAYT:MOV P2,A
- MOV A,@R0
- MOV DPTR,#DSEG1
- MOVC A,@A+DPTR
- MOV P0,A
- LCALL DL1
- MOV P2,#0FFH
- MOV A,R3
- RR A
- JNB ACC.7,LD1
- INC R0
- MOV R3,A
- LJMP PLAYT
- LD1: RET
- ;;;;;;;;;;比分顯示程序;;;;;;;;;;;;;;
- DISPF:MOV R0,#34H
- MOV R3,#7FH
- MOV A,R3
- PLAYF:MOV P2,A
- MOV A,@R0
- MOV DPTR,#DSEG1
- MOVC A,@A+DPTR
- MOV P0,A
- LCALL DL1
- MOV P2,#0FFH
- MOV A,R3
- RR A
- JNB ACC.3,LD1
- INC R0
- MOV R3,A
- LJMP PLAYF
- AJMP LD1
- ;;;;;;;;;;調(diào)時時間顯示程序;;;;;;;;;;
- DISPW: MOV R0,#24H
- MOV R3,#0F7H
- MOV A,R3
- PLAYW:MOV P2,A
- MOV A,@R0
- MOV DPTR,#DSEG1
- MOVC A,@A+DPTR
- MOV P0,A
- LCALL DL1
- MOV P2,#0FFH
- MOV A,R3
- RR A
- JNB ACC.1,LD1
- INC R0
- MOV R3,A
- LJMP PLAYW
- DL1: MOV R7,#05H
- DL: MOV R6,#0FFH
- DL6: DJNZ R6,DL6
- DJNZ R7,DL
- RET
- DSEG1:DB 3FH,06H,5BH,4FH,66H
- DB 6DH,7DH,07H,7FH,6FH
- ;;;;;;;;;調(diào)時子程序;;;;;;;;;;;;;
- TIAOSHI:PUSH ACC
- PUSH PSW
- JB P3.3,CHU
- LCALL DELAY
- JB P3.3,CHU
- STOPQ:JNB P3.3,STOPQ
- LCALL DELAY
- JNB P3.3,STOPQ
- IF10: LCALL DISPW
- LCALL DISPF
- JNB P1.3,DECT
- JB P1.0,WHAIT2
- LCALL DELAY
- JB P1.0,WHAIT2
- STOPE:MOV C,P1.0
- JNC STOPE
- LCALL DELAY
- MOV C,P1.0
- JNC STOPE
- INC 26H
- LJMP STORE
- DECT: MOV C,P1.3
- LCALL DELAY
- JC WHAIT2
- STOPY:MOV C,P1.3
- JNC STOPY
- LCALL DELAY
- MOV C,P1.3
- JNC STOPY
- DEC 26H
- STORE: MOV 21H,26H
- MOV 20H,#00H
- MOV A,26H
- MOV B,#0AH
- DIV AB
- MOV 24H,B
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
籃球計分器.docx
(260.56 KB, 下載次數(shù): 247)
2018-6-21 20:17 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|