單片機課程設(shè)計--石頭剪刀布_第1頁
已閱讀1頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  綜合性、開放性實驗考試報告</p><p><b>  一、題目:</b></p><p><b>  石頭剪刀布(6)</b></p><p><b>  二、問題的提出</b></p><p>  (1) 培養(yǎng)學生綜合運用所學單片機知識來解決生活中常見

2、問題的能力。</p><p>  (2) 熟悉和掌握MCS-51單片機的內(nèi)部結(jié)構(gòu),硬件設(shè)施及工作原理。</p><p>  (3) 掌握單片機的接口技術(shù)及相關(guān)外圍芯片的外特性和控制方法。</p><p>  (4) 通過實際程序設(shè)計和調(diào)試,逐步掌握模塊化程序設(shè)計方法和調(diào)試技術(shù)。</p><p><b>  總體設(shè)計</b>

3、;</p><p><b>  1、分析問題的功能</b></p><p>  通過單片機設(shè)計實現(xiàn)模擬剪刀石頭布小游戲。</p><p><b>  程序流程圖</b></p><p>  2、系統(tǒng)總體結(jié)構(gòu)設(shè)計</p><p> ?、庞布O(shè)計:根據(jù)問題確定單片機、I/O接口、

4、定時器、I/O設(shè)備、中斷等;</p><p>  選用MCS-51單片機,選用P1、P3口和LED燈,利用T/C0定時器和INT1中斷。</p><p> ?、栖浖O(shè)計:按問題功能分模塊,簡述各模塊功能。</p><p>  模塊一:程序開始時先判斷3個開關(guān)的狀態(tài),如果全是斷開狀態(tài),則3個代表物品的LED全亮,代表準備就緒。如果有沒斷開的開關(guān),則將3個物品燈閃爍,表

5、示初始狀態(tài)錯誤。</p><p>  模塊二:玩家閉合其中的一個開關(guān)代表自己出示的物品,計算機機則將代表物品的燈隨機亮起一個,代表計算機出示的物品。然后根據(jù)雙方出示的物品依比賽規(guī)則判斷輸贏并顯示結(jié)果。如果玩家出示的物品不只一個,則3個結(jié)果燈全亮,代表結(jié)果無效。</p><p>  模塊三:復位。3個開關(guān)斷開,則3個代表物品的LED全亮,重新準備就緒,如果復位時有沒斷開的開關(guān),則將3個物品燈

6、閃爍,表示初始狀態(tài)錯誤。</p><p><b>  四、詳細設(shè)計:</b></p><p><b>  1、硬件詳細設(shè)計:</b></p><p><b> ?、女嫵鲭娐穲D;</b></p><p> ?、七M行硬件資源分配(包括I/O口地址、所用各存儲單元的用途)。</

7、p><p>  用排線連接P1口和LED燈,LED1~LED3分別代表計算機出示物品石頭、剪刀、布,LED5~LED7分別代表結(jié)果勝、負、平;SW1~SW3連接P3.0~P3.2,SW1~SW3分別代表玩家出示物品石頭、剪刀、布,KEY1連接P3.3(INT1),用作復位鍵。采用T/C0做定時器,取隨機數(shù)。</p><p>  2、軟件詳細設(shè)計:按各功能模塊進行程序設(shè)計,并說明各功能模塊的實現(xiàn)

8、方法。</p><p>  模塊一:程序設(shè)計:見程序清單</p><p>  實現(xiàn)方法:采用查詢方式,來判斷3個開關(guān)的狀態(tài);物品燈的閃爍利用軟件延時對位取反。</p><p>  模塊二:程序設(shè)計:見程序清單</p><p>  實現(xiàn)方法:查詢方式判斷玩家出示物品,計算機隨機出示物品利用定時器0,在開啟定時器0后,直接取TL0的值作為隨機數(shù)的

9、值,然后除以3,用余數(shù)作為3種物品中的一種,根據(jù)結(jié)果P1賦值。</p><p>  模塊三:程序設(shè)計:見程序清單</p><p>  實現(xiàn)方法:采用INT1中斷,對3個開關(guān)查詢判斷。</p><p>  3、設(shè)計中的主要困難及解決方案</p><p>  在這部分論述設(shè)計中遇到的主要困難及解決方案。</p><p> 

10、 困難1:如何實現(xiàn)三個開關(guān)代表三種物品?</p><p>  解決方案:采用查詢方式,不斷判斷三個開關(guān)的狀態(tài),來確定玩家出示物品。</p><p>  困難2:計算機隨機出示物品不知道怎么做?</p><p>  解決方案:在開啟定時器0后,直接取TL0的值作為隨機數(shù)的值。然后除以3,用余數(shù)作為3種物品中的一種。</p><p>  困難3:

11、取隨機數(shù)后,再次查詢時如何不再取隨機數(shù)?</p><p>  解決方案:采用標志位,通過判斷標志位來確定是否已經(jīng)取過隨機數(shù)。</p><p><b>  程序清單</b></p><p>  ORG 8000H</p><p>  AJMP MAIN</p><p>  ORG 800

12、BH</p><p>  LJMP T0S</p><p>  ORG 8013H</p><p>  LJMP INT1S</p><p>  ORG 8100H</p><p>  MAIN: MOV P1, 0FFH</p><p>  N0: JB

13、 P3.0, N1 ;判斷3個開關(guān)狀態(tài)</p><p>  JB P3.1, N1</p><p>  JB P3.2, N1</p><p>  MOV P1,#11111000B ;3個物品燈亮,代表準備就緒</p><p>  MOV TMOD,#01H ;T/C0定時器,方

14、式1</p><p>  MOV TH0,00H ;給定時器賦值</p><p>  MOV TL0,00H</p><p>  MOV IE,#10000110B ;INT1,T/C0開中斷</p><p>  SETB TR0</p><p>  SETB IT1<

15、;/p><p>  CLR 7FH</p><p>  LOOP: JB P3.0, N2 ;判斷玩家出示物品,石頭,跳轉(zhuǎn)至N2</p><p>  JB P3.1, N3 ;,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,剪刀,跳轉(zhuǎn)至N3</p><p>

16、;  JB P3.2, N4 ; ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,布,跳轉(zhuǎn)至N4</p><p>  LJMP LOOP</p><p>  N1: MOV R7, #0 ;3個物品燈閃爍,代表初始狀態(tài)出錯</p><p>  LOOP1: MOV R

17、6, #0</p><p>  DJNZ R6,$</p><p>  DJNZ R6,$</p><p>  DJNZ R7, LOOP1</p><p>  CPL P1.0 </p><p>  CPL P1.1</p><p>  CPL P1.2</p&g

18、t;<p><b>  LJMP N0</b></p><p>  N2: JB P3.1, N5 ;判斷玩家出示物品是否只有一個</p><p>  JB P3.2, N5</p><p>  JB 7FH, N20</p><p>  ACALL

19、SUIJI ;取隨機數(shù)</p><p>  N20: CJNE A,#00H,N21</p><p>  MOV P1,#10111110B ;計算機出石頭,平</p><p>  SETB 7FH</p><p>  LJMP LOOP</p><p>  N21

20、: CJNE A,#01H,N22</p><p>  MOV P1,#11101101B ;計算機出剪刀,勝</p><p>  SETB 7FH</p><p>  LJMP LOOP</p><p>  N22: MOV P1,#11011011B ;計算機出布,負</p&

21、gt;<p>  SETB 7FH</p><p>  LJMP LOOP</p><p>  N3: JB P3.2, N5 ;判斷玩家出示物品是否只有一個</p><p>  JB 7FH, N30</p><p>  ACALL SUIJI</p>&l

22、t;p>  N30: CJNE A,#00H,N31</p><p>  MOV P1,#11011110B ;計算機出石頭,負</p><p>  SETB 7FH</p><p>  LJMP LOOP</p><p>  N31: CJNE A,#01H,N32</p>

23、<p>  MOV P1, #10111101B ;計算機出剪刀,平</p><p>  SETB 7FH</p><p>  LJMP LOOP</p><p>  N32: MOV P1,#11101011B ;計算機出布,勝</p><p>  SETB 7FH</p&g

24、t;<p>  LJMP LOOP</p><p>  N4: JB 7FH,N40</p><p>  ACALL SUIJI</p><p>  N40: CJNE A,#00H,N41</p><p>  MOV P1,#11101110B ;計算機出石頭,勝</p

25、><p>  SETB 7FH</p><p>  LJMP LOOP</p><p>  N41: CJNE A,#01H,N42</p><p>  MOV P1, #11011101B ;計算機出剪刀,負</p><p>  SETB 7FH</p><p&

26、gt;  LJMP LOOP</p><p>  N42: MOV P1,#10111011B ;計算機出布,平</p><p>  SETB 7FH</p><p>  LJMP LOOP</p><p>  N5: MOV P1,#10001111B ;3個結(jié)果燈全亮,代表無效

27、</p><p>  LJMP LOOP</p><p>  SUIJI: CLR A</p><p>  MOV A,TL0 ;產(chǎn)生隨機數(shù)</p><p>  MOV B,#03H</p><p><b>  DIV AB</b></p

28、><p><b>  XCH A,B</b></p><p><b>  RET</b></p><p>  T0S: MOV TH0,#00H</p><p>  MOV TL0,00H</p><p><b>  RETI</b>&

29、lt;/p><p>  INT1S: MOV P1, 0FFH</p><p><b>  CLR 7FH</b></p><p>  A0: JB P3.0, A1 ;復位前,判斷3個開關(guān)狀態(tài)</p><p>  JB P3.1, A1</p>&l

30、t;p>  JB P3.2, A1</p><p>  MOV P1, #11111000B ;復位</p><p><b>  RETI</b></p><p>  A1: MOV R7, #0 ; 3個物品燈閃爍,代表初始狀態(tài)出錯</p><p>  

31、LOOP2: MOV R6, #0</p><p>  DJNZ R6, $</p><p>  DJNZ R6, $</p><p>  DJNZ R7, LOOP2</p><p>  CPL P1.0</p><p>  CPL P1.1</p><p>  C

32、PL P1.2</p><p><b>  AJMP A0</b></p><p><b>  END</b></p><p><b>  四、調(diào)試程序的方法</b></p><p> ?、庞布{(diào)試方法(確定硬件工作是否正常)</p><p> 

33、 首先,排除常見的硬件故障,無邏輯錯誤,元器件狀態(tài)良好無失效現(xiàn)象,電源正常。隨后,進行脫機調(diào)試,在樣機加電前,根據(jù)硬件電路圖仔細檢查樣機線路的正確性,并連線,檢查有無短路現(xiàn)象,保證連線的正確性。最后進行聯(lián)機,聯(lián)機前先斷電,把插頭插到樣機上,檢查一下電腦和樣機之間的電源與接地是否良好。一切正常后即可打開電源。打開電源時,先接通DP-51PROC實驗儀的電源,將TKSMonitor51 仿真器上的工作模式選擇開關(guān)撥到RUN處,再打開電腦顯示

34、器電源,最后打開電腦主機電源。</p><p> ?、栖浖{(diào)試方法(如何調(diào)試程序的方法)</p><p>  采用分塊、分任務(wù)進行調(diào)試的方法。先調(diào)出基本程序再加上T/C0定時器功能,接著加上T/C0開中斷,逐步調(diào)試。 </p><p>  在對各個功能的調(diào)試過程中,使用了單步調(diào)試與設(shè)置斷點調(diào)試相結(jié)合的調(diào)試方法,然后進行連續(xù)調(diào)試。在調(diào)試過程中,如果運行不正常,可以考慮

35、各自程序運行時是否破壞現(xiàn)場,緩沖單元是否發(fā)生沖突,標志位的建立和清除在設(shè)計上是否有失誤,輸入設(shè)備是否正常等。</p><p>  五、你所設(shè)計的程序最終完成的功能</p><p>  1、 編制的程序能完成的功能:</p><p>  程序開始時先判斷3個開關(guān)的狀態(tài),如果全是斷開狀態(tài),則3個代表物品的LED全亮,代表準備就緒。</p><p>

36、;  玩家閉合其中的一個開關(guān)代表自己出示的物品,計算機機則將代表物品的燈隨機亮起一個(其它燈熄滅),代表計算機出示的物品。</p><p>  然后根據(jù)雙方出示的物品依比賽規(guī)則判斷輸贏并顯示結(jié)果。</p><p>  如果玩家出示的物品不只一個,則3個結(jié)果燈全亮,代表結(jié)果無效。</p><p>  一次游戲結(jié)束后,按“復位”鈕可以開始下一次游戲。如果程序開始或者復位

37、時有沒斷開的開關(guān),則將3個物品燈閃爍(頻率自定),表示初始狀態(tài)錯誤</p><p>  準備的測試數(shù)據(jù),并記錄運行結(jié)果。 </p><p>  六、對該設(shè)計題目有何更完善的方案</p><p>  1、對自己完成程序進行自我評價。</p><p>  對自己本次編譯的程序總體感覺良好,但是程序還有一些不完善的地方。比如在顯示結(jié)果后不再接受除復

38、位鍵之外的輸入,在這一方面還存在缺陷。</p><p>  對課題提出更完善的方案。</p><p>  可以聯(lián)系更多的硬件設(shè)施來實現(xiàn)顯示多局比賽的結(jié)果,采用多個模塊,實現(xiàn)多</p><p><b>  人游戲的目的。</b></p><p><b>  五、收獲及心得體會</b></p>

39、;<p>  1、通過本次實驗考試,自己在哪些方面的能力有所提高。</p><p>  通過學習本次實驗考試,覺得自己在編寫程序方面取得了很大的進步,在思維方式上有了新的突破,覺得自己在動手解決遇到的問題方面有所提高。對于程序的理解運用和修改也有了長足進步。對硬件設(shè)施的認識比如在插線上也有很大的提高。 </p><p>  2、收獲和心得體會。</p>&l

40、t;p>  在本次實驗考試中,通過這段時間的學習與操作,鍛煉了我們的動手能力,我學到了不少知識,同時對單片既有了進一步的了解與認識,我們在實踐中不斷的學習,不段的完善,最終解決了過程中的各種問題,克服了各種困難,此次課程設(shè)計也使我對單片機有了更大的興趣,同時也發(fā)現(xiàn)了我們在學習過程中的不足,在和同伴合作的過程中也知道了團結(jié)互助,共同完成了這次任務(wù),有苦也有樂。在以后的日子里,我會在自己的專業(yè)范圍內(nèi)充分利用握的單片機知識去解決更多的實

溫馨提示

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

評論

0/150

提交評論