單片機c51籃球計時計分器課程設計_第1頁
已閱讀1頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  單片機微機原理及應用</p><p>  課 目: 籃球記分牌的設計 </p><p>  學 院: 電氣工程學院 </p><p>  班 級: 自動化 08-2 </p><p>  完成時間:2011年12月11日</p>&l

2、t;p><b>  籃球賽計時計分器</b></p><p><b>  一 設計目的</b></p><p>  設計并制作一個用于賽場的籃球賽計時計分器,實現(xiàn)如下基本功能:</p><p>  能記錄整個賽程的比賽時間,并能修改比賽時間,暫停比賽時間。</p><p>  能隨時刷新甲,乙

3、兩隊在整個賽程中的比分。</p><p>  中場交換場地時,能交換甲,乙兩隊比分的位置。</p><p>  比賽時間結束時,能發(fā)出報警指令。</p><p><b>  二 設計意義</b></p><p>  通過籃球計分計時器的制作,可以使我熟悉,了解單片機開發(fā)設計實例的過程,并能使讀者加深對單片機的理解和運用以

4、及掌握單片機與外圍接口的一些方法和技巧,這主要表現(xiàn)在以下的一些方面:</p><p>  籃球計分計時器包含了8051系列單片機的最小應用系統(tǒng)的構成,同時在此基礎上擴展了一些實用性強的外圍接口。</p><p>  掌握鍵盤接口原理,能正確地把鍵盤使用到單片機系統(tǒng)中,可以了解到LED顯示器的結構,工作原理以及這種顯示器的接口實例。</p><p> ?。?)學會調試

5、電路,分析電路故障,積累電路調試經驗。</p><p><b>  三 具體設計內容</b></p><p><b>  1 系統(tǒng)框圖構成</b></p><p>  基于單片機系統(tǒng)的籃球計分計時器的系統(tǒng)構成框圖如下所示:</p><p><b>  2硬件電路改進: </b>

6、</p><p>  由于原來的電路比較復雜,用了很多芯片,浪費成本,而且給后期調試的調試會帶來較多麻煩,故對原來的硬件電路進行了改動。改動方面主要關于數(shù)碼管顯示的驅動和位選的,前期的電路設計采用了大量的CD4511和CD4094來進行數(shù)碼管顯示的驅動和位選,而這次的電路設計只用了8個三極管就實現(xiàn)了這項功能。</p><p>  下面前期電路設計的計時部分的原理圖,還有更為復雜的計分原理圖

7、未給出</p><p>  后期改進的整體原理圖:</p><p>  (3)軟件調試及組裝</p><p>  軟件的編程調試首先要抓住計分和計時兩大模塊,在這兩大模塊成功的基礎上再進行其他細小模塊的組裝和完善。主要編程的問題,所以就概述就舉例子概述一下</p><p>  計分模塊和計時模塊剛開始均會出現(xiàn)顯示數(shù)值范圍不正確或者十位和個位二

8、者之中只顯示個位的情況,經軟件調試,重新編程后成功的解決了問題。</p><p>  I 上半場比賽結束, 可按下交換比分按鈕,交換甲乙兩隊的比分,重新調整計時時間為20分鐘,按下啟動按鈕,下半場比賽開始</p><p>  八 籃球賽計時計分器程序流程圖及程序 </p><p><b>  代碼如下:</b></p>&

9、lt;p>  K1BITP1.0</p><p>  K2BITP1.1</p><p>  K3 BIT P1.2</p><p>  K4 BIT P1.3</p><p>  K5BITP1.4</p><p>  K6BITP1.5</p>

10、<p>  K7 BIT P1.6</p><p>  K8 BIT P1.7</p><p>  MIN EQU 30H </p><p>  SEC EQU 31H</p><p>  SEC100 EQU 32H</p><p>  DIS_BUF

11、 EQU 33H </p><p>  BUF_MIN_HEQUDIS_BUF</p><p>  BUF_MIN_LEQUDIS_BUF+1</p><p>  BUF_SEC_HEQUDIS_BUF+2</p><p>  BUF_SEC_LEQUDIS_BUF+3</p><p>

12、  K_OLD EQU 41H</p><p>  K_NEW EQU 42H</p><p>  DIS_DIGIT EQU 43H </p><p>  DIS_INDEX EQU 44H</p><p>  K_OLD1 EQU 45H</p><p>  K_NEW1

13、EQU 46H</p><p>  FLAG EQU 47H </p><p>  CONVERT EQU 48H</p><p><b>  ORG0000H</b></p><p><b>  JMPMAIN</b></p><p>  ORG 0003H

14、</p><p>  LJMP INT_0</p><p>  ORG0000BH</p><p>  LJMPTIMER0</p><p>  ORG0001BH</p><p>  LJMPTIMER1</p><p><b>  ORG 0030H</b

15、></p><p><b>  MAIN:</b></p><p>  MOV SP,#60H</p><p>  MOV P0,#0FFH</p><p>  MOV P2,#0FFH</p><p>  MOV TMOD,#011H</p><p>

16、;  MOV TH0,#0FCH</p><p>  MOV TL0,#017H</p><p>  MOV TH1,#0DCH</p><p><b>  CLR A</b></p><p>  MOV TL1,A</p><p>  MOV CONVERT,#00H

17、 </p><p>  MOV CONVERT+1 ,#00H</p><p>  MOV CONVERT+2,#00H</p><p>  MOV CONVERT+3 ,#00H</p><p>  CLRA </p><p>  MOV MIN,#20 </

18、p><p>  MOV SEC,A</p><p>  MOV SEC100,A </p><p>  MOV BUF_MIN_H,#0A4H</p><p>  MOV BUF_MIN_L,#0C0H </p><p>  MOV BUF_SEC_H,#0C0H</p>

19、<p>  MOV BUF_SEC_L,#0C0H</p><p>  MOV DIS_BUF+4,#0C0H</p><p>  MOV DIS_BUF+5,#0C0H</p><p>  MOV DIS_BUF+6,#0C0H </p><p>  MOV DIS_BUF+7,#0C0

20、H </p><p>  MOV FLAG ,#00H </p><p>  MOV K_OLD,#00H </p><p>  BEEP_BL00: MOV R3,#10 </p><p>  MOV R2,#200</p><p><b>  MAI

21、N1100:</b></p><p>  CPL p3.7 </p><p>  LCALL DELAY500 </p><p>  LCALL DELAY500</p><p>  DJNZ R2,MAIN1100</p><p>  CPL p3.6

22、 </p><p>  LCALL DELAY500</p><p>  LCALL DELAY500</p><p>  LCALL DELAY500</p><p>  MOV R2,#200</p><p><b>  MAIN2100:</b></p><p&g

23、t;  CPL p3.7 </p><p>  LCALL DELAY500 </p><p>  DJNZ R2,MAIN2100</p><p>  DJNZ R3,MAIN1100</p><p>  LJMP START</p><p><b>  DELAY500:

24、</b></p><p>  MOV R7,#230</p><p><b>  LOOP1:</b></p><p>  DJNZ R7,LOOP1</p><p><b>  RET</b></p><p>  START:MOV DIS_DIGIT,

25、#0FEH</p><p><b>  CLR A</b></p><p>  MOV DIS_INDEX,A</p><p><b>  SETB EA</b></p><p><b>  SETB ET0</b></p><p><

26、b>  SETBTR0</b></p><p><b>  SETB IT0 </b></p><p><b>  SETB EX0</b></p><p>  SETB PT0 </p><p><b>  MAIN_LP:</b&g

27、t;</p><p>  CALL KEY_PROG </p><p>  SJMPMAIN_LP</p><p><b>  KEY_PROG:</b></p><p>  CALL K_SCAN </p><p>  MOV A,K_NEW<

28、/p><p>  CJNE A,K_OLD,KEY_P1</p><p>  JMP END_PROC_KEY</p><p><b>  KEY_P1:</b></p><p>  MOV R4,#15</p><p><b>  KEY_P2:</b></p>

29、;<p>  MOV R7,#10</p><p>  CALL DELAYMS </p><p>  DJNZ R4,KEY_P2</p><p>  CALL K_SCAN </p><p>  MOV A,K_NEW</p><p>  

30、CJNE A,K_OLD,KEY_P3</p><p>  JMP END_PROC_KEY</p><p><b>  KEY_P3:</b></p><p>  JB ACC.0,PROC_K1 </p><p>  JB ACC.1,PROC_K2 </p><p&

31、gt;  JB ACC.2,PROC_K3 </p><p>  JB ACC.3,PROC_K4 </p><p>  LJMPEND_PROC_KEY</p><p>  PROC_K1:LCALL BEEP_BL001 </p><p>  INC MIN</p><p>

32、;  MOV A,MIN; </p><p>  CJNE A, #100,UPDATE_MIN21</p><p>  MOV MIN,#00H</p><p>  UPDATE_MIN21:</p><p>  MOV A,MIN </p><p> 

33、 MOV B,#10</p><p>  DIV AB; A = MIN / 10</p><p>  MOV DPTR,#DIS_CODE</p><p>  MOVC A,@A+DPTR</p><p>  MOV BUF_MIN_H,A</p><p>  MOV A,MIN

34、 </p><p>  MOV B,#10</p><p><b>  DIV AB</b></p><p>  MOV A,B</p><p>  MOVC A,@A+DPTR</p><p>  MOV BUF_MIN_L,A<

35、;/p><p>  SJMP END_PROC_KEY</p><p>  PROC_K2:LCALL BEEP_BL001 </p><p>  DEC MIN</p><p>  MOV A,MIN </p><p>  CJNE A, #255, UPDATE_MIN1<

36、;/p><p>  MOV MIN,#99</p><p>  UPDATE_MIN1:</p><p>  MOV A,MIN </p><p>  MOV B,#10</p><p>  DIV AB</p><p>  MOV D

37、PTR,#DIS_CODE</p><p>  MOVC A,@A+DPTR</p><p>  MOV BUF_MIN_H,A</p><p>  MOV A,MIN L</p><p>  MOV B,#10</p><p><b>  DIV A

38、B</b></p><p>  MOV A,B</p><p>  MOVC A,@A+DPTR</p><p>  MOV BUF_MIN_L,A </p><p>  SJMP END_PROC_KEY </p><p>  PROC_K3: LCALL BEEP_B

39、L001 </p><p>  PUSH PSW </p><p>  INC FLAG</p><p>  MOV A ,FLAG</p><p><b>  RRC A</b></p><p>  JNC STOP </p><p>  CLR P3.

40、6 </p><p><b>  SETB ET1</b></p><p><b>  SETB TR1</b></p><p><b>  POP PSW </b></p><p>  SJMP END_PROC_KEY </p><p>  STO

41、P:SETB P3.6 </p><p><b>  CLR ET1</b></p><p><b>  CLR TR1</b></p><p><b>  POP PSW</b></p><p>  SJMP END_PROC_KEY </p><p&

42、gt;  PROC_K4: LCALL BEEP_BL001</p><p>  MOV R3,CONVERT+1 </p><p>  MOV CONVERT+1,CONVERT+3</p><p>  MOV CONVERT+3,R3 </p><p>  MOV R3,CONVERT</p>

43、<p>  MOV CONVERT,CONVERT+2</p><p>  MOV CONVERT+2,R3 </p><p>  LCALL CONVETER</p><p>  END_PROC_KEY:</p><p><b>  RET </b></p><p>&

44、lt;b>  ; 鍵掃描子程序</b></p><p><b>  K_SCAN:</b></p><p>  MOV P1,#0FFH</p><p>  MOV K_NEW,#00H</p><p><b>  MOV A,P1</b></p><p&

45、gt;<b>  CPL A</b></p><p>  ANL A,#0F0H</p><p><b>  SWAP A</b></p><p>  MOV K_NEW,A</p><p><b>  RET</b></p><p><b

46、>  USING0</b></p><p><b>  TIMER0:</b></p><p>  ; 定時器0中斷服程序, 用于數(shù)碼管的動態(tài)掃描</p><p><b>  PUSH ACC</b></p><p><b>  PUSH PSW</b>

47、</p><p><b>  PUSH AR0</b></p><p>  MOV TH0,#0FCH</p><p>  MOV TL0,#017H</p><p>  MOV P2,#0FFH</p><p>  MOV A,#DIS_BUF</p>

48、<p>  ADD A,DIS_INDEX</p><p>  MOV R0,A</p><p>  MOV A,@R0</p><p>  MOV P0,A</p><p>  MOV P2,DIS_DIGIT</p><p>  MOVA,DIS_DIGIT

49、</p><p><b>  RLA</b></p><p>  MOVDIS_DIGIT,A</p><p>  INCDIS_INDEX</p><p>  MOV R5 , DIS_INDEX</p><p>  CJNE R5,#08H,TT</p>

50、<p>  MOV DIS_INDEX ,#00H </p><p>  MOV DIS_DIGIT,#0FEH</p><p>  TT:POP AR0</p><p><b>  POP PSW</b></p><p><b>  POP ACC&

51、lt;/b></p><p><b>  RETI </b></p><p><b>  TIMER1:</b></p><p>  ; 定時器1中斷服務程序, 產生時基信號10ms</p><p><b>  PUSHPSW</b></p><p

52、><b>  PUSH ACC</b></p><p><b>  PUSH B</b></p><p><b>  PUSH DPH</b></p><p><b>  PUSH DPL</b></p><p>  MOV TH1,#0

53、DCH</p><p>  MOV TL1,#00H</p><p>  INC SEC100</p><p>  MOV A,SEC100</p><p>  CJNE A, #100, END_TIMER1</p><p>  MOV SEC100,#00H </p>

54、<p>  LCALLDEC_SEC </p><p>  END_TIMER1:</p><p><b>  POP DPL</b></p><p><b>  POP DPH</b></p><p><b>  POP B</b></p

55、><p><b>  POP ACC</b></p><p><b>  POPPSW</b></p><p>  RETI ; </p><p><b>  DEC_SEC:</b></p><p><b>  DEC SEC&

56、lt;/b></p><p>  MOV A ,MIN</p><p>  JNZ OBTAIN</p><p><b>  CPL P3.6</b></p><p>  MOV A ,SEC</p><p>  JNZ OBTAIN </p><p&g

57、t;  MOV BUF_SEC_L,#0C0H</p><p><b>  CLR TR1</b></p><p>  CLR ET1 </p><p>  BEEP_BL: MOV R3,#10</p><p>  MOV R2,#200</p><p><b>  MAI

58、N11:</b></p><p>  CPL p3.7 </p><p>  LCALL DELAY500 </p><p>  LCALL DELAY500</p><p>  DJNZ R2,MAIN11</p><p>  CPL p3.6 &

59、lt;/p><p>  LCALL DELAY500</p><p>  LCALL DELAY500</p><p>  LCALL DELAY500</p><p>  MOV R2,#200</p><p><b>  MAIN21:</b></p><p>  CPL

60、 p3.7 </p><p>  LCALL DELAY500 </p><p>  DJNZ R2,MAIN21</p><p>  DJNZ R3,MAIN11</p><p>  LJMP OBTAIN</p><p><b>  OBTAIN:</b>

61、</p><p>  MOV A,SEC</p><p>  CJNE A, #255,UPDATE_SEC</p><p>  MOV SEC,#59</p><p>  LCALL DEC_MIN</p><p>  UPDATE_SEC:</p><p>  MOV A

62、,SEC </p><p>  MOV B,#10</p><p>  DIV AB</p><p>  MOV DPTR,#DIS_CODE</p><p>  MOVC A,@A+DPTR</p><p>  MOV BUF_SEC_H,A</p><p

63、>  MOV A,SEC </p><p>  MOV B,#10</p><p><b>  DIV AB</b></p><p>  MOV A,B</p><p>  MOVC A,@A+DPTR</p><p>  MOV BUF_SE

64、C_L,A</p><p><b>  RET </b></p><p><b>  DEC_MIN:</b></p><p>  DEC MIN</p><p>  MOV A,MIN </p><p>  CJNE A, #255, UPDATE_M

65、IN</p><p>  MOV MIN,#00H</p><p>  UPDATE_MIN:</p><p>  MOV A,MIN </p><p>  MOV B,#10</p><p>  DIV AB; A = MIN / 10</

66、p><p>  MOV DPTR,#DIS_CODE</p><p>  MOVC A,@A+DPTR</p><p>  MOV BUF_MIN_H,A</p><p>  MOV A,MIN </p><p>  MOV B,#10</p><

67、p><b>  DIV AB</b></p><p>  MOV A,B</p><p>  MOVC A,@A+DPTR</p><p>  MOV BUF_MIN_L,A</p><p><b>  RET</b></p><p><b

68、>  RET </b></p><p>  ; 中斷INT0服務程序</p><p><b>  INT_0: </b></p><p><b>  PUSHPSW</b></p><p><b>  PUSH ACC</b></p><

69、;p><b>  PUSH B</b></p><p><b>  PUSH DPH</b></p><p>  PUSH DPL </p><p>  JB k1,RKEY1 </p><p>  MOV R7,#30</p><p>

70、  LCALL DELAYMS </p><p>  JB k1,RKEY1</p><p>  LJMP KP1</p><p>  RKEY1 :JB k2,RKEY2 </p><p>  MOV R7,#30</p><p>  LCALL DELAYMS

71、 </p><p>  JB k2,RKEY2</p><p>  LJMP KP2 </p><p>  RKEY2 :JB k3,RKEY3 </p><p>  MOV R7,#30</p><p>  LCALL DELAYMS </p>&l

72、t;p>  JB k3,RKEY3</p><p>  LJMP KP3</p><p>  RKEY3 : JB k4,RKEY4 </p><p>  MOV R7,#30</p><p>  LCALL DELAYMS </p><p>  JB k

73、4,RKEY4</p><p>  LJMP KP4</p><p>  RKEY4: LJMP KP5</p><p>  KP1: LCALL BEEP_BL001 </p><p>  INC CONVERT </p><p>  MOV A,CONVE

74、RT </p><p>  CJNE A,#0AH,KP5</p><p>  MOV CONVERT ,#00H</p><p>  INC CONVERT+1</p><p>  MOV A,CONVERT+1</p><p>  CJNE A,#0AH,KP5</p>&l

75、t;p>  MOV CONVERT+1,#00H</p><p>  LJMP KP5</p><p>  KP2: LCALL BEEP_BL001 </p><p>  DEC CONVERT </p><p>  MOV A,CONVERT </p><p

76、>  CJNE A,#255,KP5</p><p>  MOV CONVERT,#09H</p><p>  DEC CONVERT+1</p><p>  MOV A,CONVERT+1</p><p>  CJNE A,#255,KP5</p><p>  MOV CONVE

77、RT+1,#09H</p><p>  LJMP KP5</p><p>  KP3: LCALL BEEP_BL001 </p><p>  INC CONVERT+2 </p><p>  MOV A,CONVERT+2</p><p>  CJ

78、NE A,#0AH,KP5</p><p>  MOV CONVERT+2 ,#00H</p><p>  INC CONVERT+3</p><p>  MOV A,CONVERT+3</p><p>  CJNE A,#0AH,KP5</p><p>  MOV CONVERT+3,

79、#00H</p><p>  LJMP KP5</p><p>  KP4: LCALL BEEP_BL001 </p><p>  DEC CONVERT+2 </p><p>  MOV A,CONVERT+2 </p><p>  CJNE A,#255,K

80、P5</p><p>  MOV CONVERT+2 ,#09H</p><p>  DEC CONVERT+3</p><p>  MOV A,CONVERT+3</p><p>  CJNE A,#255,KP5</p><p>  MOV CONVERT+3,#09H<

81、/p><p>  LJMP KP5</p><p>  KP5:LCALL CONVETER</p><p><b>  POP DPL</b></p><p><b>  POP DPH</b></p><p><b>  POP B<

82、/b></p><p><b>  POP ACC</b></p><p><b>  POPPSW</b></p><p><b>  RETI</b></p><p><b>  DELAYMS:</b></p><p&

83、gt;<b>  ; 延時子程序</b></p><p><b>  DLY_LP1:</b></p><p>  MOVR6,#185</p><p><b>  DLY_LP2:</b></p><p><b>  NOP</b></p>

84、<p><b>  NOP</b></p><p><b>  NOP</b></p><p>  DJNZR6,DLY_LP2</p><p>  DJNZR7,DLY_LP1</p><p>  END_DLYMS:</p><p><b> 

85、 RET </b></p><p>  ;蜂鳴器響一聲子程序</p><p>  BEEP_BL001: MOV R3,#1 </p><p>  PUTOFF: ; </p><p>  MOV R2,#30</p><p>  MAIN110

86、01:</p><p>  CPL p3.7 </p><p>  LCALL DELAY500 </p><p>  LCALL DELAY500</p><p>  DJNZ R2,MAIN11001</p><p>  DJNZ R3,PUTOFF</p

87、><p><b>  RET </b></p><p>  ;顯示緩沖區(qū)代碼轉碼子程序</p><p>  CONVETER: </p><p>  MOV A,CONVERT </p><p>  MOV DPTR,#DIS_CODE</p>

88、<p>  MOVC A,@A+DPTR</p><p>  MOV DIS_BUF+7,A</p><p>  MOV A,CONVERT+1 </p><p>  MOV DPTR,#DIS_CODE</p><p>  MOVC A,@A+DPTR</p>&l

89、t;p>  MOV DIS_BUF+6,A</p><p>  MOV A,CONVERT+2 </p><p>  MOV DPTR,#DIS_CODE</p><p>  MOVC A,@A+DPTR</p><p>  MOV DIS_BUF+5,A</p>&l

90、t;p>  MOV A,CONVERT+3 </p><p>  MOV DPTR,#DIS_CODE</p><p>  MOVC A,@A+DPTR</p><p>  MOV DIS_BUF+4,A</p><p><b>  RET</b></p>

91、;<p><b>  查表指令</b></p><p><b>  DIS_CODE:</b></p><p><b>  DB0C0H</b></p><p><b>  DB0F9H</b></p><p><b>  DB

92、0A4H</b></p><p><b>  DB0B0H</b></p><p><b>  DB099H</b></p><p><b>  DB092H</b></p><p><b>  DB082H</b></p>

93、;<p><b>  DB0F8H</b></p><p><b>  DB080H</b></p><p><b>  DB090H</b></p><p><b>  DB0FFH</b></p><p><b>  E

94、ND</b></p><p><b>  總 結</b></p><p>  這次課程設計雖然只有短短的兩周時間,但我們受益匪淺。剛開始時覺得自己的課題無處入手,但通過老師的講解和查詢資料,開始有了自己的思路,整理出了總體方案,然后設計出硬件原理圖,源程序等。在這次設計中困難最大的就是調試,收獲最多的也是調試,因為調試的時候你必須對程序相當?shù)氖煜ぃ瑢γ恳粭l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論