創新創業實踐(綜合創新型設計)
課程論文
題目名稱: 基于ARM9的貪吃蛇游戲設計
學院名稱: 自動化與電氣工程學院
專 業: 測控技術與儀器
課程設計任務書
課程設計題目:基于ARM9的貪吃蛇游戲設計
實踐教學要求與任務:
1、熟悉所確定的題目,從問題需求、程序結構、難點及關鍵技術等方面進行分析,形成系統的設計方案;
2、根據方案設計硬件電路;
3、軟件編程并調試;
4、完成課程設計報告,打印程序,給出運行結果。
工作計劃與進度安排:
第17周(1月6日-1月10日):布置設計任務,查資料,完成總體設計框架,完善設計內容,系統調試,驗收答辯。
摘 要 在電腦極大普及的今天,游戲是我們日常生活的重要娛樂方式。隨著科技的快速發展,時間的流逝,至從觀太陽、擺鐘到現在電子鐘,人類不斷研究,不斷創新紀錄。隨便計算機技術的發展,游戲行業越來越得到人們的關注,特別是在年輕人行列。現行的游戲一般是基于個人計算機的,像貪吃蛇這類小游戲在高檔掌上電腦或高檔電子消費品,但基于小型掌上低端游戲機在市場上卻幾乎沒有。 本文以飛利浦公司的LPC2124芯片板為平臺,在討論ARM體系結構和游戲開發的同時,設計并實現了貪吃蛇游戲機的軟件仿真。 綜上所述此類貪吃蛇游戲機具有使用方便,綠色安全,低功耗、成本低廉等諸多優點,符合電子儀器儀表的發展趨勢,具有廣闊的市場前景。
目 錄
創新創業實踐(綜合創新型設計)
課程論文
引言
1 ARM概述
2 ARM的開發環境
2.1 Keil介紹
2.2 ADS介紹
3 系統的硬件設計
3.1 電路設計框圖
3.2 系統硬件概述
3.3 系統主要硬件
3.3.1 LPC2124
3.3.2 LP3228顯示屏
3.3.3 用戶操作接口
4 軟件仿真
5 系統的軟件設計與實現
5.1 游戲說明
5.2 游戲結構設計
5.3 游戲具體設計
5.3.1 矩陣鍵盤按鍵掃描子程序
5.3.2 矩陣鍵盤處理子程序
5.3.3 LCD顯示子程序
5.3.4 主程序流程
6 程序測試
6.1 仿真測試
6.2 程序的局限性
7 總結
參考文獻
附 錄
附錄一 系統仿真電路圖
附錄二 程序文件清單
附錄三 使用說明書
引言基于ARM芯片的產品憑借其強大的功能、低廉的價格和體積小等優點,在許多領域得到了廣泛的應用。而當前在游戲開發中,ARM并沒有充分顯示出它的這些特點。而彩色液晶顯示器具有功耗低、顯示信息量大、顯示效果逼真等特點。所以若用彩色液晶顯示器為游戲提供界面一會受到歡迎。 液晶顯示屏LCD作為一種功耗低、體積小、無輻射的顯示器件,近幾年被廣泛應用于各式各樣的嵌入式電子產品中,LCD可分為段位式、字符式和點陣式三種,其中,段位式LCD和字符式LCD只能用于字符和數字的簡單顯示,不能滿足圖形曲線和漢字顯示的要求,而點陣式LCD不僅可以顯示字符、數字,還可以顯示各種圖形、曲線及漢字,并且可以實現屏幕上下左右滾動動畫功能,分區開窗口、反轉、閃爍等功能,用途十分廣泛,為了簡化液晶顯示電路的設計和應用,生產廠家通常將液晶顯示單元、顯示控制器,顯示內存和顯示驅動電路等裝配在一起,做成液晶顯示模塊LCD Module(LCM)。 目前,基于ARM芯片的產品遍布人類生活空間,在移動娛樂工具上應用廣泛,特別在手機游戲制作方面越來越收人們的歡迎。 1 ARM概述 ARM(Advanced RISC Machines),既可以認為是一個公司的名字,也可以認為是對一類微處理器的通稱,還可以認為是一種技術的名字。 1991 年ARM 公司成立于英國劍橋,主要出售芯片設計技術的授權。目前,采用ARM 技術知識產權(IP)核的微處理器,即我們通常所說的ARM 微處理器,已遍及工業控制、消費類電子產品、通信系統、網絡系統、無線系統等各類產品市場,基于ARM 技術的微處理器應用約占據了32位RISC 微處理器75%以上的市場份額,ARM 技術正在逐步滲入到我們生活的各個方面。ARM 公司是專門從事基于RISC 技術芯片設計開發的公司,作為知識產權供應商,本身不直接從事芯片生產,靠轉讓設計許可由合作公司生產各具特色的芯片,世界各大半導體生產商從ARM公司購買其設計的ARM 微處理器核,根據各自不同的應用領域,加入適當的外圍電路,從而形成自己的ARM 微處理器芯片進入市場。目前,全世界有幾十家大的半導體公司都使用ARM 公司的授權,因此既使得ARM 技術獲得更多的第三方工具、制造、軟件的支持,又使整個系統成本降低,使產品更容易進入市場被消費者所接受,更具有競爭力。 ARM公司出售芯片技術授權給半導體公司,ARM核因為具有高性能、低成本、低功耗的特點而被廣采用。這樣在全球范圍內圍繞著ARM技術形成了從一個芯片設計、生產、銷售,工具軟件設計與開發,系統軟件開發以及應用軟件開發的龐大產業鏈。說ARM代表著以ARM為核心的軟硬件開發技術也不為過。 2 ARM的開發環境2.1 Keil介紹 uVision3集成開發環境(uVision3 IDE)是一個窗口化的軟件開發平臺,它集成了功能強大的編輯器、工程管理器以及各種編譯工具(包括C編譯器、宏編譯器、鏈接/裝載器和十六進制文件轉換器)。uVision3包括以下功能組件,能加速嵌入式應用程序的開發過程: (1)功能強大的源代碼編輯器; (2)可根據開發工具配置的設備數據庫; (3)用于創建和維護工程的工程管理器; (4)集匯編、編譯和鏈接過程于一體的編譯工具; (5)用于設置開發工具配置的對話框; (6)真正集成高速CPU及片上外設模擬器的源碼級調試器; (7)高級GDI接口;可用于目標硬件的軟件調試和KEIL ULINK仿真器的連接; (8)用于下載應用程序到FLASH ROM中的FLASH編程器; (9)完善的開發工具手冊、設備數據手冊和用戶向導。 uVision3 IDE使用簡單、功能強大,是設計者完成設計任務的重要保證。uVision3 IDE還提供了大量的例程及相關信息,有助于開發人員快速開發嵌入式應用程序。 2.2 ADS介紹ADS 集成開發環境是 ARM 公司推出的 ARM 核微控制器集成開發工具,英文全稱為ARM Developer Suite,成熟版本為 ADS1.2。ADS1.2 支持 ARM10 之前的所有 ARM 系列微控制器,支持軟件調試及 JTAG 硬件仿真調試,支持匯編、C、C++源程序,具有編譯效率高、 系統庫功能強等特點, 可以在 Windows98、 Windows XP、 Windows2000 以及 RedHat Linux上運行。這里將簡單介紹使用 ADS1.2 建立工程,編譯連接設置,調試操作等等。最后還介紹了基于 LPC2200 系列 ARM7 微控制器的工程模板的使用,EasyJTAG 仿真器的安裝與使用。 ADS 1.2 由 6 個部分組成,如表2.1所示。 表 2.1 ADS1.2組成表 | | | | ARM匯編去,ARM的C、C++編譯器,Thumb的C、C++編譯器,ARM連接器 | | | | | | | | | | | | | 一些實用程序由CodeWarrior IDE 調用 | | | | 3系統的硬件設計3.1 電路設計框圖系統以LPC2124ARM芯片作為核心控制器件,外圍只有液晶顯示和鍵盤操作,且均為串行通信器件,使得系統線路簡單可靠性高。系統結構框圖3.1所示。
圖3.1系統結構框圖 3.2 系統硬件概述本電路由ARM芯片LPC2124為控制核心,具有在線編程功能,低功耗,能在3V超低壓工作;液晶顯示部份由LM2124液晶顯示器作為顯示,因其具有很多優點,被廣泛使用;按鍵部分我們使用矩陣鍵盤,因其使用方便,且便于記住,所以我們使用矩陣鍵盤而不是用獨立鍵盤。 3.3 系統主要硬件3.3.1 LPC2124LPC2124 是基于一個支持實時仿真和跟蹤的 16/32 位 ARM7TDMI-STM CPU 的微控制器,并帶有128/256 k字節(kB)嵌入的高速Flash存儲器。128位寬度的存儲器接口和獨特的加速結構使32位代碼能夠在最大時鐘速率下運行。對代碼規模有嚴格控制的應用可使用 16 位 Thumb 模式將代碼規模降低超過30%,而性能的損失卻很小。 由于LPC2124較小的 64腳封裝、極低的功耗、多個 32 位定時器、4 路 10 位ADC以及多達9個外部中斷使它們特別適用于工業控制、醫療系統、訪問控制和POS機。 在 64 腳的封裝中,最多可使用 46 個 GPIO。由于內置了寬范圍的串行通信接口,它們也非常適合于通信網關、協議轉換器、嵌入式軟modern以及其它各種類型的應用。 LPC2124是64管腳封裝的,其封裝圖如圖3.3所示。
圖3.3 LPC2124封裝圖 LPC2124里面最重要的組成部分是寄存器,其部分寄存器功能如表3-1所示。 表3.1 管腳連接映射 其管腳功能選擇寄存器如表3-2和表3-3所示。 表3.2 PINSEL0管腳選擇功能 | | | | | | | | | | | | | | | | | | | | | | | | SCL(  C) | | | | | | | SDA(  C) | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
表3.3 PINSEL1管腳選擇功能 3.3.2 LP3228顯示屏采用LM3228液晶顯示,其擁有微功耗無電磁輻射,壽命長,價格低,接口方便等一系列顯著特點,被廣泛應用于各種儀器儀表,測量顯示裝置,計算機顯示終端等方面。它是以點陣為單位組成的液晶顯示器,內部CMOS驅動,由日本東芝公司T6963C 控制集成電路,印制電路板和金屬支持框架所組成。LM3228液晶可以用來顯示字母,數字,漢字等,因此可以用LM3228液晶形象的模擬出貪吃蛇的形狀和它運動的情況。 LM3228的硬件結構圖如圖3.3所示。
圖3.3 LM3228的硬件結構圖 3.3.3 用戶操作接口用戶操作接口采用的是4×4矩陣鍵盤,用戶可以通過操縱鍵盤控制貪吃蛇的游動方向,控制方向如表3-4所示: 表3.4貪吃蛇方向控制
矩陣鍵盤原理圖如圖3.5所示: 圖3.5 矩陣鍵盤原理圖 矩陣鍵盤的工作原理如下: (1)先讀取鍵盤的狀態,得到按鍵的特征編碼。 先從P1口的高四位輸出低電平,低四位輸出高電平,從P1口的低四位讀取鍵盤狀態。再從P1口的低四位輸出低電平,高四位輸出高電平,從P1口的高四位讀取鍵盤狀態。將兩次讀取結果組合起來就可以得到當前按鍵的特征編碼。使用上述方法我們得到16個鍵的特征編碼。 (2)根據按鍵的特征編碼,查表得到按鍵的順序編碼。 將16個鍵的特征編碼按順序排成一張表,然后用當前讀得的特征編碼來查表,當表中有該特征編碼時,它的位置就是對應的順序編碼。 (3)根據特征編碼與順序編碼的對應關系就可以確定所按下的是哪一個鍵。 4 軟件仿真Proteus ISIS是英國Labcenter公司開發的電路分析與實物仿真軟件。它運行于Windows操作系統上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點是:①實現了單片機仿真和SPICE電路仿真相結合。具有模擬電路仿真、數字電路仿真、單片機及其外圍電路組成的系統的仿真、RS232動態仿真、I2C調試器、SPI調試器、鍵盤和LCD系統仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發生器等。②支持主流單片機系統的仿真。目前支持的單片機類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。③提供軟件調試功能。在硬件仿真系統中具有全速、單步、設置斷點等調試功能,同時可以觀察各個變量、寄存器等的當前狀態,因此在該軟件仿真系統中,也必須具有這些功能;同時支持第三方的軟件編譯和調試環境,如Keil C51 uVision2等軟件。④具有強大的原理圖繪制功能。該軟件是一款集單片機和SPICE分析于一身的仿真軟件,功能極其強大。 本次實中設計的貪吃蛇電路,電路核心是LPC2124,P0端接液晶顯示屏,P1端接的是控制按鍵,具體仿真電路圖請見附錄一。 5 系統的軟件設計與實現5.1 游戲說明游戲目標是控制貪吃蛇吃掉畫面中的目標豆,每吃掉一個目標豆就會加分,但同時貪吃蛇的尾巴會相應地長上一截,吃得越多,尾巴越長。游戲中,貪吃蛇碰上了自己的身體游戲即結束。分數增加到一定后,貪吃蛇移動的速度增加,從而逐步增加游戲的難度。 5.2 游戲結構設計游戲主要分為A、B、C三個模塊。 A模塊主要用于控制游戲的開始、暫停與結束,這些方法與其他程序相同。 B模塊主要用于完成游戲的主要功能,包括了蛇體控制,目標豆的擺放,游戲控制,屏幕繪制等。 C模塊主要用于完成蛇體在屏幕上的定位。 5.3 游戲具體設計5.3.1 矩陣鍵盤按鍵掃描子程序用戶設計行列鍵盤接口,一般常采用3種方法讀取鍵值。分別為:中斷式,掃描法和反轉法。 (1)中斷式:在鍵盤按下時產生一個外部中斷通知CPU,并由中斷處理程序通過不同的地址讀取數據線上的狀態,判斷哪個按鍵被按下。 (2)掃描法:對鍵盤上的某一行送低電平,其他行為高電平,然后讀取列值。若列值中有一位是低,則表明該行與低電平對應列的鍵被按下;否則,掃描下一行。 (3)反轉法:先將所有行掃描線輸出低電平,讀列值。若列值有一位是底,則表明有鍵按下,讀列值;然后所有列掃描線輸出低電平,再讀行值。根據讀到的值組合就可以查表得到鍵值。 在本次實訓中我們采用的是反轉法,其硬件連接請見圖3.5。 關鍵代碼如下所示,具體可見源代碼。 uint8 Keyboard_Scan(void) { uint8 keycode = 0xff; uint8 row; uint8 col; for(col=0;col<KEYBOARD_COLUMN;col++) { Column_Clear(col); for(row=0;row<KEYBOARD_ROW;row++) { if(Row_Status(row)==0) { keycode = row*KEYBOARD_ROW+col; } } Column_Set(col); } return keycode; } 5.3.2 矩陣鍵盤處理子程序 主要是對鍵盤掃描子程序返回的鍵值進行處理,為了程序化模塊化,處理返回的鍵值時調用了各個鍵的處理函數,這里就不給出具體的處理函數了,具體可見源代碼。 void Key_Process(uint8 num) //num為鍵盤掃描子程序返回的鍵值 { switch(num) { case 1:up();break; //向上 case 4:left();break; //向左 case 5:pause();break; //暫停 case 6:right();break; //向右 case 9:down(); break; //向下 default:move();break; //默認為自動移動 } } 5.3.3 LCD顯示子程序這部分的處理是在文件LOADBIT.C中完成。 子程序的功能為顯示單色圖形及漢字顯示。實現的流程是先將圖形轉換為對應的點陣數組,然后即可調用LM3228的設備驅動程序中的函數輸出驅動。 本次實訓中采用LM3228的顯示屏,圖形液晶模塊驅動程序要考慮它的操制器,要參考它的DataSheet來設計,這部分程序具體可見源代碼。 5.3.4 主程序流程
主程序 在main.c中,它的程序流程如圖5.3所示。圖5.3 主程序流 6 程序測試6.1 仿真測試由于ARM芯片管腳比較多,而且很多元器件都是貼片元件,做成電路板比較困難,由于資源等客觀限制,所以在這里只進行仿真測試。測試將粗略檢測貪吃蛇游戲的5項基本功能:向上,向下,向左,向右和暫停功能。這里將測試貪吃蛇向右運動的情況,如圖6.1所示。
圖6.1 貪吃蛇向右運動 測試結果:在按了矩陣鍵盤的”6”號鍵之后,貪吃蛇開始向右運動,測試成功。 然后再測試貪吃蛇小游戲的暫停和繼續功能,按了一次矩陣鍵盤的”5”號鍵之后,貪吃蛇停止運動,再按一次矩陣鍵盤的”5”號鍵,貪吃蛇又繼續運動,測試成功。 6.2 程序的局限性由于時間的局限性和個人能力的局限性,這個程序中檢測出不少局限性,如下所述。 (1)在算法實現上,未充分考慮貪吃蛇碰壁的情況,只是簡單的讓貪吃蛇穿過墻壁,沒做其他處理。 (2)貪吃蛇在運動時可以改變至相反方向,即存在掉頭情況。 (3)貪吃蛇吃到自己尾巴的時候,有時會分成兩截,有待改進。 7 總結本次實踐,我選的題目是基于LPC2124實現的貪吃蛇游戲機。因為課題貪吃蛇游戲比較難,此次實踐我多方請教同學。這次實踐,我們可謂歷經重重困難。第一階段是方案確定,我們花了大量時間采集資料,整理資料,首先是確定自己的課題,最后著手設計。在第二階段將我們的原理圖設計好。然后進入第三階段軟件的編程。但是在編寫程序時,困難時刻困擾著我,可能是因為自己平時不太注重動手能力的培養,在實踐過程中遇到了好多問題。我們通過虛心請教計算機專業的同學和老師,用自己所學的知識分析后及時改正錯誤,通過再次不斷的修改原理圖,請教,再修改程序,但是在程序編寫部分我還是困難重重。當自己著手編寫程序時,通過采集到的資料進行修改,通過不斷的運行調試,仿真。按照自己的設計構思,經過一系列的測試工作,我們終于解決了貪吃蛇小游戲中發生的部分錯誤,完善該小游戲的基本功能。在測試過程中,面對所遇到的問題,認真分析流程圖,根據原理圖,認真檢查程序流程,并觀察各寄存器的變化情況, 最終能基本實現貪吃蛇小游戲的功能。 由于此次實踐期間不是考試期間,時間不是很緊迫,但是我們還是分秒必爭,有時呆在科協一呆就是一天,經常晚上凌晨兩三點才回宿舍。這次實訓真的是對我們最大的考驗,困難問題的不斷出現,讓我們應付不過來,因為我們的堅持不懈,相信失敗是成功之母,功夫不負有心人,最后終于成功了,成功的喜悅讓人舒心。 通過這次實踐,我覺得對我來說本身就是一個提升。真理正是靠實踐而證明的,而成功就是靠自己的摸索而成功的。當自己遇到失敗的時候,不要心灰氣餒,沉著冷靜,認真分析原理,實在不懂虛心向老師和同學學習請教,終會有所收獲。 在做作品的過程中我學到了很多在課堂上學不到的東西,雖然說這次實踐很累。但是在這期間,我感覺真的是過得和充實,而且得到了許多寶貴的經驗,相信對我以后的軟件編程和專業的學習都會有很大的幫助。
參考文獻[1] 崔更申,孫安青.ARM嵌入式系統開發與實踐[M].北京:中國電力出版社,2008. [2] 田澤.嵌入式開發與應用[M].北京:北京航空航天大學出版社,2005. [3] 周立功等.ARM嵌入式系統基礎教程[M].北京:北京航空航天大學出版社,2005. [4] 譚浩強.C語言程序設計.北京:清華大學出版社,2002.
附 錄附錄一 系統仿真電路圖
附錄二 程序文件清單表1所示系統源程序文件清單如附。 表1 系統源程序文件清單
附錄三 使用說明書貪吃蛇小游戲簡單易玩,矩陣鍵盤的2 ,4,6, 8鍵分別使蛇向下,左,右,上方運動,按5鍵為暫停/繼續游戲,在游戲過程中貪吃蛇吃到東西身體會變長,身體長度長到一定程序貪吃蛇運動的速度就加快,游戲的難度就增加,總的來說這款貪吃蛇小游戲比其他的更簡單更容易上手。
完整的Word格式文檔51黑下載地址:
1506020210王浩宇.doc
(1000 KB, 下載次數: 59)
2018-11-29 12:43 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|