一.設計的基本步驟及方案 1.AT89C51簡介 單片機是在一塊芯片中集成了CPU、RAM、ROM、定時/計數器和多功能I/O口等計算機所需要的基本部件的大規模集成電路。 其以體積小、功能全、性價比高等諸多優點而獨具特色,在工業控制、尖端武器、通信設備、家用電器等嵌入式應用領域中獨占鰲頭。如果說C語言程序設計課程設計軟件設計的基礎課,那么單片機以其系統硬件構架完整、價格低廉、學生能動手等特點,成為工科學生硬件設計基礎課。 2.數碼管顯示原理 數碼管實際上是由7個發光管組成8字形構成的,加上小數點就是8個。我們分別把他命名為A,B,C,D,E,F,G,H。 圖1 數碼管內部結構圖 假設我們要顯示一個數字2, 那么 A、B、G、E、D這5個段的發光管亮就可以了,C、F、H不亮,同時由于接法為共陰接法,那么為高電平是亮,低電平是滅。從高往低排列, P1.7-P1.0寫成二進制為01011011, 把他轉化為16進制則為5BH。我們可以根據硬件的接線把數碼管顯示數字編制成一個表格,見下表,以后直接調用就行了。 數碼管的接口有靜態接口和動態接口兩種。靜態接口為固定顯示方式,無閃爍,其電路可采用一個并行口接一個數碼管,數碼管的公共端按共陰接GND,本次課程設計由于所需數碼管不多,故可用些種方法接線。這種接法占用接口多,僅能接少量數碼管。 動態接口采用各數碼管循環輪流顯示的方法,當循環顯示的頻率較高時,利用人眼的暫留特性,看不出閃爍顯示現象,這種顯示需要一個接口完成字形碼的輸出,另一接口完成各數碼管的輪流點亮。 多位一體的數碼管原理和單個的差不多。 表2 共陰極數碼管顯示 圖3 系統結構圖 本系統采用單片機AT89C51作為AT89C51本設計的核心元件。利用7段共陰LED作為顯示器件。在此設計中共接入了8個7段共陰LED顯示器,其中4個用于記錄AB隊的分數,每隊2個LED顯示器顯示范圍可達到0~99分,足夠滿足賽程需要,另外4個LED顯示器則用來記錄賽程時間,其中2個用于顯示分鐘,2個用于顯示秒鐘。賽程計時采用到計時方式。即比賽前將時間設置好,比賽開始時啟動計時,直至計時到零為止。計時范圍可達到0~99分鐘,也完全滿足實際賽程的需要。 其次,為了配合計時器和計分器校正調整時間和比分,我們特定在本設計中設立了11個按鍵,其中8個用于設置,交換場地,啟動和暫停等功能。 二. 硬件電路設計及描述 1.硬件原理電路 系統硬件圖如下圖4所示: 記分圖如下圖5所示: 計時圖如下圖6所示: 2.硬件電路設計及描述 硬件部分的設計是整個設計中的一個重要部分。在進行硬件部分設計時,首先要確定元器件,并且知道這些器件的工作原理和功能。然后才可以進行設計。本設計的硬件電路包括兩部分:計時電路、計分電路。硬件電部分的設計除了硬件電路的設計,還包括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分跳轉;;;;;;;;;;;;;;;;; MOV A,20H CJNE A,#00H,PFF ;;;;;;;;;非0分0秒情況跳轉;;;;;;;;;; CLR TR0 ;;;;;;;;;比賽結束停止計時;;;;;;;;;; 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. 源程序代碼見附錄一 四.硬軟件的調試過程及調試方法 1.進入比賽,先設置時間為一節或者半場。默認是12分鐘(按下“A+1”進行分鐘加1,按下“A-1”進行分鐘減1),如圖11 圖11 2.按下“K1”開始比賽或者暫停,如圖12
3.總體方案:基于單片機系統的籃球賽計時計分器的系統構成圖如下圖所示:
三. 軟件思想及流程
3.上面的液晶顯示為計時顯示。下面的液晶顯示為分數顯示“左側為攻左半場的隊的分數,右側為攻右半場的對的分數。”換場后依然如此。
4.按下“K2”交換場地,重新計時。
5.A+1,A+2,A+3,A-1,B+1,B+2,B+3,B-1進行兩隊分數調整
五.課程設計心得體會
俗話說:好的開始是成功的一半。說起課程設計,最重要的就是做好設計的預習,認真的研究老師給的題目,選一個自己感興趣的題目。其次,老師對課程設計的講解要一絲不茍的去聽去想,因為只有都明白了,做起設計就會事半功倍。最后,要重視程序的模塊化,修改的方便,也要注重程序的調試,掌握其方法。
本次設計,我查閱了相關書籍,做好各項準備后才開始進行設計,本次設計測試結果以及不足之處:計時電路可完成倒計時、暫停、繼續等功能,在比賽時間到后可進行報警。記分電路工作正常,可完成對比分的刷新與暫存。但在測試過程中發現,在比賽上半場時間到后,不能進行比分的交換。進行分析后得出結論如下:系統電路部分設計沒有原則性的錯誤,在制版的過程中注意了走線,因此硬件部分功能完好。但因為軟件系統編寫方面的疏忽,在比分交換及計時部分沒有能很好的實現。除此之外,軟件達到了系統的要求。
通過課程設計,發現了我們的很多不足,我們知識的很多漏洞,看到了我們的實踐經驗還是比較缺乏,理論聯系實際的能力還急需提高。在這個過程中,我們也曾經因為實踐經驗的缺乏失落過,也曾經仿真成功而熱情高漲。通過單片機課程設計,我們加深了對單片機理論的理解,學回了怎樣將理論很好地應用到實際當中去,而且我們還學會了如何去培養我們的不畏困難的挑戰精神,從而不斷地戰勝自己,超越自己,我們在這一設計過程中,學會了堅持不懈,不輕易言棄。設計過程,也好比是我們人類成長的歷程,常有一些不如意,也許這就是在對我們提出了挑戰,勇敢過,也戰勝了,勝利的鐘聲也就一定會為我們而敲響。
此次課程設計充分鍛煉了我們的設計能力和團隊合作能力,給我們注入了一些全新的認識,為我們以后的設計和實驗奠定了基礎,也為引導我們以理論結合實踐起到重要意義。
單片機源程序如下:
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隊分數;;;;;;;;;;;;;;;;;
MOV 23H,#00H ;;;;;;;;;;B隊分數;;;;;;;;;;;
MOV 24H,#02H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV 25H,#01H
MOV 26H,#0CH ;;;;;;;;;;;分鐘定時區;;;;;;;
MOV 30H,#00H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV 31H,#00H ;;;;;;;;;時間緩沖區;;;;;;;;;;
MOV 32H,#02H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV 33H,#01H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV 34H,#00H ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV 35H,#00H ;;;;;;;;分數顯示緩沖區;;;;;;;
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隊加三分
上一篇:ds18b20 溫度模塊串口顯示簡單代碼
下一篇:GY521 mpu-6050調試經驗與教訓
- 熱門資源推薦
- 熱門放大器推薦