版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、南京郵電大學(xué)畢 業(yè) 論 文題 目:基于單片機(jī)設(shè)計(jì)推箱子游戲 專 業(yè): 學(xué)生姓名: 班級(jí)學(xué)號(hào): 指導(dǎo)教師: 指導(dǎo)單位: 南京郵電大學(xué)通信與信息工程學(xué)院 日期: 年 月 日至 年 月 日摘 要本論文主要介紹了基于AT89C52單片機(jī)推箱子游戲設(shè)計(jì)的游戲規(guī)則、硬件結(jié)構(gòu)、軟件代碼的編寫及工作原理,基于T6963C內(nèi)核的液晶模塊PG160128A液晶模塊的介紹,在仿真軟件上模擬出推箱子游戲。本系統(tǒng)是以單片機(jī)為其控制核心,以有源晶振構(gòu)成的電路作為時(shí)鐘信號(hào),通過方向鍵的選擇向單片機(jī)控制系統(tǒng)發(fā)出人物移動(dòng)控制命令,控制系統(tǒng)接收命令后做出一系列必要的判斷后,控制人物及箱子的移動(dòng)。論文分為兩大塊:一塊為游戲的硬件電
2、路組成部分,一塊為軟件程序設(shè)計(jì)部分。在硬件電路里主要包括有源晶振部分、方向控制部分及液晶顯示部分等與單片機(jī)的接線設(shè)計(jì);軟件編程方面主要是子程序和主程序的編寫,包括:初始化代碼、液晶驅(qū)動(dòng)代碼、方向鍵代碼、過關(guān)判斷代碼等等。關(guān) 鍵 詞:單片機(jī);推箱子;PG160128A;T6963C內(nèi)核ABSTRACTThis paper mainly introduces the based on single chip microcomputer AT89C52 tuixiangzi game design rules of the game, hardware structure, software cod
3、e compiling, and working principle of LCD module of T6963C kernel based PG160128A LCD module, simulate the tuixiangzi game on the simulation diagram.This system is based on single chip microcomputer as its control core, active crystals constitute the circuit as the clock signal, through the choice o
4、f the direction key issued a person move control command to the single-chip microcomputer control system, control system after the judgements made after a series of necessary receive commands, to control the movement of figures and boxes.Paper is divided into two areas: a piece of hardware circuit p
5、art of the game, a piece of software design part.In the hardware circuit mainly includes active crystals, direction control part and part, such as liquid crystal display (LCD) and the connection design of single chip microcomputer;Software programming are mainly subroutines and main program of the w
6、riting, including: the initialization code, LCD driver code, the direction key code, pass judgment and so on.Key words: single chip microcomputer; pushing; PG160128A;T6963C kernel目 錄第一章 緒論11.1游戲總體功能的設(shè)計(jì)11.2系統(tǒng)框圖11.3游戲設(shè)計(jì)的目的21.4游戲?qū)崿F(xiàn)的目標(biāo)21.5設(shè)計(jì)的基本要求2第二章 設(shè)計(jì)模塊3 2.1控制模塊3 2.2顯示模塊5 2.3T6963C指令集6 2.4Protues介紹8 2
7、.5Keil uVision4編譯環(huán)境介紹10第三章 游戲架構(gòu)12 3.1游戲基本元素12 3.2推箱子方向控制鍵12 3.3游戲關(guān)卡設(shè)計(jì)13 第四章 設(shè)計(jì)結(jié)果14 4.1編譯 14 4.2仿真圖19 4.3開機(jī)畫面20 4.4流程20 4.5游戲畫面23結(jié)束語26致謝27參考文獻(xiàn)28附錄29南京郵電大學(xué)通達(dá)學(xué)院2014屆本科生畢業(yè)設(shè)計(jì)(論文)第一章 緒論目前,在中國乃至世界,游戲產(chǎn)業(yè)已經(jīng)逐漸成為微控制器領(lǐng)域的一個(gè)相當(dāng)龐大以及重要的分支,而關(guān)于這方面的高級(jí)人才仍甚是缺乏,很多初學(xué)單片機(jī)的朋友都會(huì)對(duì)其龐大而復(fù)雜的機(jī)制感到困惑。本文以經(jīng)典的推箱子游戲規(guī)則為基礎(chǔ),趣味而有序地對(duì)這個(gè)游戲從需求分析到整
8、體方案進(jìn)行了全新的設(shè)計(jì)。1.1 游戲總體功能的設(shè)計(jì) 首先運(yùn)行游戲并載入相應(yīng)的地圖數(shù)據(jù),屏幕上出現(xiàn)一個(gè)推箱子工人,其周圍是預(yù)制好的地圖、圍墻人可以行走的通道、幾個(gè)可以移動(dòng)的箱子和游戲勝利結(jié)束時(shí)安放這些箱子的目標(biāo)位置。玩家通過鍵盤操縱推箱子工人的位置。當(dāng)工人靠近箱子并朝箱子位置移動(dòng)的時(shí)候,箱子在其移動(dòng)方向沒有被其他物件(箱子或者墻)所阻礙的情況下可以被移動(dòng),當(dāng)所有箱子被移到指定的安放位置后,則勝利通關(guān)并進(jìn)入下一關(guān)的游戲。這個(gè)游戲是個(gè)小型游戲,實(shí)現(xiàn)的功能比較簡單,不像大型游戲那樣功能復(fù)雜,他只要控制人物獎(jiǎng)箱子推到正確位置即可,難度隨著箱子的增多而加大,對(duì)于實(shí)現(xiàn)這樣一個(gè)功能,程序不是太復(fù)雜,用一塊單片
9、機(jī)足以達(dá)到目的。其次,他的控件比較少,只有四個(gè)方向鍵和一個(gè)開始鍵,這些控鍵在Proteus中用彈跳式按鍵代替即可。第三,游戲地圖相對(duì)比較少、畫面簡單,只有箱子、人物、磚頭等幾個(gè)圖形,這些在一個(gè)稍大的液晶屏上足以顯示,用不著電腦顯示屏。第四,就編程語言方面來說,編寫這樣一個(gè)簡單的小游戲不需要什么高級(jí)語言,C語言或者匯編語言足以完成,C語言是一種通用行的語言,編程靈活,可讀性強(qiáng),移植性好;匯編語言是一種直接面向硬件的基礎(chǔ)語言,最接近機(jī)器語言,執(zhí)行速度快(本游戲采用C語言編寫)。所以,單片機(jī)上運(yùn)行推箱子游戲在硬件和軟件兩個(gè)方面都是可行的。輸入模塊主控模塊160128顯示模塊1.2 根據(jù)設(shè)計(jì)目標(biāo),整個(gè)
10、系統(tǒng)框圖如圖1.1: 圖1.1 系統(tǒng)框圖1.3 游戲設(shè)計(jì)的目的單片機(jī)是一門實(shí)踐性很強(qiáng)的專業(yè)基礎(chǔ)課,通過課程設(shè)計(jì),達(dá)到進(jìn)一步理解單片機(jī)的硬件、軟件和綜合應(yīng)用方面的知識(shí),培養(yǎng)實(shí)踐能力和綜合應(yīng)用能力,開拓學(xué)習(xí)積極性、主動(dòng)性,學(xué)會(huì)靈活運(yùn)用已經(jīng)學(xué)過的知識(shí),并能不斷接受新的知識(shí)。培養(yǎng)大膽發(fā)明創(chuàng)造的設(shè)計(jì)理念,為今后就業(yè)打下良好的基礎(chǔ)。通過課程設(shè)計(jì),掌握以下知識(shí)和技能:1.單片機(jī)應(yīng)用系統(tǒng)的總體方案的設(shè)計(jì);2.單片機(jī)應(yīng)用系統(tǒng)的硬件設(shè)計(jì);3.單片機(jī)應(yīng)用系統(tǒng)的軟件程序設(shè)計(jì);4.單片機(jī)開發(fā)系統(tǒng)的應(yīng)用和調(diào)試能力。1.4 游戲?qū)崿F(xiàn)目標(biāo)推箱子是一個(gè)經(jīng)典游戲,目的是在訓(xùn)練邏輯思考能力。在一個(gè)規(guī)定區(qū)域中,要求把木箱放到指定的位
11、置,稍不小心就會(huì)出現(xiàn)箱子無法移動(dòng)或者通道被堵住的情況,所以需要巧妙的利用有限的空間和通道,合理安排移動(dòng)的次序和位置,才能順利的完成任務(wù)。1.5 設(shè)計(jì)的基本要求利用單片機(jī)進(jìn)行硬件開發(fā),必須具備用Keil C51編程能力和用Proteus進(jìn)行仿真設(shè)計(jì)的能力。這使得單片機(jī)開發(fā)相對(duì)變得容易。我們利用課余時(shí)間裝載上述軟件,學(xué)會(huì)使用軟件進(jìn)行C51程序編程和單片機(jī)電路原理圖仿真。一般而言,使用Keil C51集成調(diào)試軟件建立自己的一個(gè)程序要經(jīng)過如下幾個(gè)步驟:建立一個(gè)工程項(xiàng)目文件;為工程選擇一個(gè)目標(biāo)器件(如AT89C52);為工程項(xiàng)目設(shè)定相關(guān)的軟件和硬件的調(diào)試環(huán)境(如軟件仿真或在線調(diào)試等);創(chuàng)建源程序文件并輸
12、入、編輯程序源代碼(匯編格式或C語言格式);保存所創(chuàng)建的源程序項(xiàng)目文件并添加到項(xiàng)目中;程序文件的編譯與連接及調(diào)試。Proteus軟件可以進(jìn)行單片機(jī)系統(tǒng)仿真設(shè)計(jì),繪制電路原理圖并進(jìn)行單片機(jī)仿真。使用Proteus軟件的一般步驟如下:根據(jù)單片機(jī)電路原理圖拾取元器件;將元器件放置到繪圖區(qū);在繪圖區(qū)對(duì)元器件進(jìn)行布局并連接;將程序文件置入單片機(jī)進(jìn)行軟件調(diào)試。第二章 設(shè)計(jì)模塊2.1 控制模塊選用ATMEL公司 生產(chǎn)的AT89C52為主控芯片,它是是一個(gè)低電壓,高性能CMOS 8位單片機(jī),主要功能特性如下:1、兼容MCS51指令系統(tǒng);2、8k可反復(fù)擦寫(大于1000次)Flash ROM;3、32個(gè)雙向I/
13、O口;4、256x8bit內(nèi)部RAM;5、3個(gè)16位可編程定時(shí)/計(jì)數(shù)器中斷;6、時(shí)鐘頻率0-24MHz;7、2個(gè)串行中斷,可編程UART串行通道;8、2個(gè)外部中斷源,共8個(gè)中斷源;9、2個(gè)讀寫中斷口線,3級(jí)加密位;10、低功耗空閑和掉電模式,軟件設(shè)置睡眠和喚醒功能;本次課設(shè)選用PDIP封裝的 AT89C52芯片,其引腳功能如圖2.1所示,圖2.2為最小系統(tǒng): 圖2.1 引腳功能AT89C52 有256 個(gè)字節(jié)的內(nèi)部RAM,80H-FFH 高128 個(gè)字節(jié)與特殊功能寄存器(SFR)地址是重疊的,也就是高128字節(jié)的RAM 和特殊功能寄存器的地址是相同的,但物理上它們是分開的。當(dāng)一條指令訪問7FH
14、 以上的內(nèi)部地址單元時(shí),指令中使用的尋址方式是不同的,也即尋址方式?jīng)Q定是訪問高128 字節(jié)RAM 還是訪問特殊功能寄存器。如果指令是直接尋址方式則為訪問特殊功能寄存器。例如,下面的直接尋址指令訪問特殊功能寄存器0A0H(即P2 口)地址單元。MOV 0A0H,#data間接尋址指令訪問高128 字節(jié)RAM,例如,下面的間接尋址指令中,R0 的內(nèi)容為0A0H,則訪問數(shù)據(jù)字節(jié)地址為0A0H,而不是P2 口(0A0H)。MOV R0,#data堆棧操作也是間接尋址方式,所以,高128 位數(shù)據(jù)RAM 亦可作為堆棧區(qū)使用。定時(shí)器0和定時(shí)器1:AT89C52的定時(shí)器0和定時(shí)器1 的工作方式與AT89C51
15、 相同。圖2.2 最小系統(tǒng)U1:AT89C52,DIPf封裝;C1,C2:22pf瓷片電容C3:10uf電解電容;X1:12M晶振R1:10K金屬膜電阻2.2 顯示模塊PG160128A為一個(gè)128行160列的點(diǎn)陣液晶屏,他能顯示各種字符、圖形、漢子,基于T6963C內(nèi)核控制,自帶字符庫,同時(shí)用戶也可以自己建立漢字。圖形庫,其在Proteus中的元器件圖形如圖2.3:圖2.3 PG16128A各引腳的的功能描述如表2.1:表2.1 PG160128A引腳功能引腳序列引腳名稱引腳功能描述1FG信號(hào)設(shè)計(jì)引腳,此引腳為一個(gè)輸出引腳,在電路連接時(shí)為空2VDD電源引腳,外接5v工作電壓3VSS地引腳,接
16、地4CON功能不詳,在電路連接時(shí)懸空5WR寫信號(hào)腳,當(dāng)引腳為低電平時(shí)數(shù)據(jù)寫入T6963C中6RD讀信號(hào)腳,當(dāng)引腳為低電平時(shí)數(shù)據(jù)從T6963C中讀出7CE使能信號(hào)腳,正常工作時(shí)此腳接地,當(dāng)為高電平時(shí)CPU不能與T6963C通信8C/D指令,數(shù)據(jù)信號(hào)腳:當(dāng)引腳為高電平且WR=L時(shí)可以寫入指令;當(dāng)引腳為高電平且RD=L時(shí)可以讀T6963C狀態(tài);當(dāng)引腳為低電平且WR=L時(shí)可以寫入數(shù)據(jù);當(dāng)引腳為低電平且RD=L時(shí)可以讀出數(shù)據(jù)1118 D0D7數(shù)據(jù)引腳,用于液晶屏與單片機(jī)之間的數(shù)據(jù)通信10RET復(fù)位引腳,低電平有效,起復(fù)位作用,器件內(nèi)部集成了上拉電阻,正常工作時(shí)此引腳接電源19FS1字形選擇引腳FS1,用
17、于選擇字形,當(dāng)為高電平時(shí)是5*8點(diǎn)陣字體,當(dāng)為低電平時(shí)是8*8點(diǎn)陣字體 2.3 T6963C指令集T6963C是一個(gè)LCD控制器,可設(shè)計(jì)為用于液晶顯示器控制驅(qū)動(dòng)芯片和數(shù)據(jù)顯示的存取器。該控制器有一個(gè)8位并行數(shù)據(jù)總線,控制線的讀取或?qū)懭胪ㄟ^微控制器接口實(shí)現(xiàn),可以直接連接到TMPZ80微處理器中。它有一個(gè)128字節(jié)的字符發(fā)生器也可以控制外部顯示RAM中的數(shù)據(jù),達(dá)64k字節(jié)。配置的文字,圖形和外部字符發(fā)生器RAM數(shù)據(jù)能很容易控制其顯示在窗口中,可以自由移動(dòng)、分配內(nèi)存范圍。該器件支持非常廣泛的字符格式,液晶顯示器允許通過編程設(shè)置選擇不同的組合。他可以用于文字,圖形和結(jié)合文本模式及其他各種屬性的功能。T
18、6963C共分為十大類,26條指令,詳細(xì)信息如表2.2表2.2 T6963C指令集指令類型有無參數(shù)D7D0引腳值指令說明指針設(shè)置D1/D200100001光標(biāo)指針設(shè)置D1水平位置(低7位有效)D2垂直位置(低5位有效)00100010CGRAM偏置位置設(shè)置D1地址(低5位有效)D2=00H00100100地址指針位;D1低字節(jié);D2高字節(jié)顯示區(qū)域設(shè)置D1/D201000000文本區(qū)首址;D1低字節(jié);D2高字節(jié)01000001文本區(qū)寬度字節(jié)數(shù)D1=字節(jié)數(shù),D2=00H01000011圖形區(qū)首址D1低字節(jié);D2高字節(jié)01000011圖形區(qū)寬度(字節(jié)數(shù))D1=字節(jié)數(shù),D2=00H顯示方式設(shè)置無100
19、00000邏輯“或”合成10000001邏輯“異或”合成10000011邏輯“與”合成10000100文本特征顯示開關(guān)無1001N3N2N1N090H顯示開關(guān);N0=1/0光標(biāo)閃爍啟用/禁用N1=1/0光標(biāo)顯示啟用/禁用;N2=1/0文本顯示啟用/禁用;N3=1/0圖形顯示啟用/禁用光標(biāo)形狀選擇 無10100N2N1N00xA0-0xA7表示光標(biāo)占的行數(shù)屏讀無11100000屏讀數(shù)據(jù)一次讀D111000000數(shù)據(jù)寫,地址加111000001數(shù)據(jù)讀,地址加111000010數(shù)據(jù)寫,地址減111000011數(shù)據(jù)讀,地址減111000100數(shù)據(jù)寫,地址不變11000101數(shù)據(jù)讀,地址不變數(shù)據(jù)自動(dòng)讀、
20、寫方式設(shè)置無10110000自動(dòng)寫設(shè)置10110001自動(dòng)讀設(shè)置10110010自動(dòng)寫結(jié)束10110011自動(dòng)讀結(jié)束屏拷貝無11101000屏拷貝位操作無1111N3N2N1N0N3=1置1N3=0清 2.4 Proteus介紹單片機(jī)系統(tǒng)設(shè)計(jì)包含硬件和軟件設(shè)計(jì),調(diào)試過程一般分為軟件調(diào)試、硬件調(diào)試和系統(tǒng)調(diào)試個(gè)過程,傳統(tǒng)設(shè)計(jì)方法需在三者之間反復(fù)修改調(diào)試,如硬件電路有問題需重新修改硬件電路設(shè)計(jì),調(diào)試費(fèi)時(shí)費(fèi)力,且浪費(fèi)硬件資源,為解決上述問題本文在單片機(jī)系統(tǒng)的設(shè)計(jì)過程中引入了Protues仿真軟件。Protues軟件是英國Labcenter electronics公司出版的EDA工具軟件。它不僅具有其它
21、EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。Protues不僅可將許多單片機(jī)實(shí)例功能形象化,也可將許多單片機(jī)實(shí)例運(yùn)行過程形象化。前者可在相當(dāng)程度上得到實(shí)物演示實(shí)驗(yàn)的效果,后者則是實(shí)物演示實(shí)驗(yàn)難以達(dá)到的效果。 它的元器件、連接線路等卻和傳統(tǒng)的單片機(jī)實(shí)驗(yàn)硬件高度對(duì)應(yīng)。這在相當(dāng)程度上替代了傳統(tǒng)的單片機(jī)實(shí)驗(yàn)教學(xué)的功能,例:元器件選擇、電路連接、電路檢測、電路修改、軟件調(diào)試、運(yùn)行結(jié)果等。課程設(shè)計(jì)、畢業(yè)設(shè)計(jì)是學(xué)生走向就業(yè)的重要實(shí)踐環(huán)節(jié)。由于protu
22、es提供了實(shí)驗(yàn)室無法相比的大量的元器件庫,提供了修改電路設(shè)計(jì)的靈活性、提供了實(shí)驗(yàn)室在數(shù)量、質(zhì)量上難以相比的虛擬儀器、儀表,因而也提供了培養(yǎng)學(xué)生實(shí)踐精神、創(chuàng)造精神的平臺(tái)隨著科技的發(fā)展,“計(jì)算機(jī)仿真技術(shù)”已成為許多設(shè)計(jì)部門重要的前期設(shè)計(jì)手段。它具有設(shè)計(jì)靈活,結(jié)果、過程的統(tǒng)一的特點(diǎn)??墒乖O(shè)計(jì)時(shí)間大為縮短、耗資大為減少,也可降低工程制造的風(fēng)險(xiǎn),相信在單片機(jī)開發(fā)應(yīng)用中protues也能茯得愈來愈廣泛的應(yīng)用。Protues軟件具有其它EDA工具軟件(例:multisim)的功能。這些功能是:(1)原理布圖(2)PCB自動(dòng)或人工布線(3)SPICE電路仿真革命性的特點(diǎn):(1)互動(dòng)的電路仿真。用戶甚至可以實(shí)時(shí)
23、采用諸如RAM,ROM,鍵盤,馬達(dá),LED,LCD,AD/DA,部分SPI器件,部分IIC器件。(2)仿真處理器及其外圍電路??梢苑抡?1系列、AVR、PIC、ARM、等常用主流單片機(jī)。還可以直接在基于原理圖的虛擬原型上編程,再配合顯示及輸出,能看到運(yùn)行后輸入輸出的效果。配合系統(tǒng)配置的虛擬邏輯分析儀、示波器等,Protues建立了完備的電子設(shè)計(jì)開發(fā)環(huán)境。具有3大功能模塊:(1)個(gè)易用而又功能強(qiáng)大的ISIS原理布圖工具;(2)PROSPICE混合模型SPICE仿真;(3) ARES PCB設(shè)計(jì);Protues提供了豐富的資源: (1)protues可提供的仿真元器件資源:仿真數(shù)字和模擬、交流和直
24、流等數(shù)千種元器件,有30多個(gè)元件庫。(2)protues可提供的仿真儀表資源 :示波器、邏輯分析儀、虛擬終端、SPI調(diào)試器、I2C調(diào)試器、信號(hào)發(fā)生器、模式發(fā)生器、交直流電壓表、交直流電流表。理論上同一種儀器可以在一個(gè)電路中隨意的調(diào)用。(3)除了現(xiàn)實(shí)存在的儀器外,protues還提供了一個(gè)圖形顯示功能,可以將線路上變化的信號(hào),以圖形的方式實(shí)時(shí)地顯示出來,其作用與示波器相似,但功能更多。這些虛擬儀器儀表具有理想的參數(shù)指標(biāo),例如極高的輸入阻抗、極低的輸出阻抗。這些都盡可能減少了儀器對(duì)測量結(jié)果的影響。(4)protues可提供的調(diào)試手段protues提供了比較豐富的測試信號(hào)用于電路的測試。這些測試信號(hào)
25、包括模擬信號(hào)和數(shù)字信號(hào)。軟件仿真:支持當(dāng)前的主流單片機(jī),如51系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、68000系列等。1)提供軟件調(diào)試功能2)提供豐富的外圍接口器件及其仿真RAM,ROM,鍵盤,馬達(dá),LED,LCD,AD/DA,部分SPI器件,部分IIC器件。這樣很接近實(shí)際。在訓(xùn)練學(xué)生時(shí),可以選擇不同的方案,這樣更利于培養(yǎng)學(xué)生。3) 提供豐富的虛擬儀器利用虛擬儀器在仿真過程中可以測量外圍電路的特性,培養(yǎng)學(xué)生實(shí)際硬件的調(diào)試能力。4) 具有強(qiáng)大的原理圖繪制功能電路功能仿真:在PROTUES繪制好原理圖后,調(diào)入已編譯好的目標(biāo)代碼文件:*.HEX,
26、可以在protues的原理圖中看到模擬的實(shí)物運(yùn)行狀態(tài)和過程。2.5 Keil uVision4編譯環(huán)境介紹Keil uVision4集成開發(fā)環(huán)境是Keil Software,Inc/Keil Elektronik GmbH開發(fā)的基于80C51內(nèi)核的微處理器軟件開發(fā)平臺(tái),內(nèi)嵌多種符合當(dāng)前工業(yè)標(biāo)準(zhǔn)的開發(fā)工具,可以從工程建立到管理、編譯、鏈接、目標(biāo)代碼的生成、軟件仿真、硬件仿真等完整的開發(fā)流程尤其是C編譯工具在產(chǎn)生代碼的準(zhǔn)確性和效率方面達(dá)到了較高的水平,而且可以附加靈活的控制選項(xiàng),在開發(fā)大型項(xiàng)目時(shí)非常理想。Keil C51集成開發(fā)環(huán)境的主要功能有以下幾點(diǎn):1:uVision4 for Windows
27、:是一個(gè)集成開發(fā)環(huán)境,它將項(xiàng)目管理、源代碼編輯和程序調(diào)試等組合在一個(gè)功能強(qiáng)大的環(huán)境中;2:C51國際標(biāo)準(zhǔn)化C交叉編譯器:從C源代碼產(chǎn)生可重定位的目標(biāo)模塊;3:A51宏匯編器:從80C51匯編源代碼產(chǎn)生可重定位的目標(biāo)模塊;4:BL51鏈接器/定位器:組合由C51和A51產(chǎn)生的可重定位的目標(biāo)模塊,生成絕對(duì)目標(biāo)模塊;5:LIB51庫管理器:從目標(biāo)模塊生成連接器可以使用庫文件;6:OH51目標(biāo)文件至HEX格式的轉(zhuǎn)換器,從絕對(duì)目標(biāo)模塊生成Intel Hex文件;7:RTX_51實(shí)時(shí)操作系統(tǒng):簡化了復(fù)雜的實(shí)時(shí)應(yīng)用軟件項(xiàng)目的設(shè)計(jì)。uVision4支持所有的Keil80C51的工具軟件,包括C51編譯器、宏匯
28、編器、鏈接程序等操作。1:C51編譯器和A51匯編器由uVision4 IDE創(chuàng)建源文件,可以被C51編譯器或A51匯編器處理,生成可重定位的object文件。KkeilC51編譯器遵照ANSIC語言標(biāo)準(zhǔn),支持C應(yīng)用的所有標(biāo)準(zhǔn)特性。另外,還增加了幾個(gè)可以直接支持80C51結(jié)構(gòu)的特性。KeilA51宏匯編器支持80C51及派生系列的所有指令集。2:LIB51庫管理器LIB51庫管理器可以從由匯編器和編譯器創(chuàng)建的目標(biāo)文件建立目標(biāo)庫。這些庫是按規(guī)定格式排列的目標(biāo)模塊,可在以后被鏈接器所使用。當(dāng)鏈接器處理一個(gè)庫時(shí),僅僅使用了庫中程序使用了的目標(biāo)模塊而不是全部加以引用。3:BL51連接器/定位器BL51
29、連接器使用從庫中提取出來的目標(biāo)模塊和有編譯器、匯編生成的目標(biāo)模塊,創(chuàng)建一個(gè)絕對(duì)地址目標(biāo)模塊。絕對(duì)地址目標(biāo)文件或模塊包括不可重定位的代碼和數(shù)據(jù)。所以的代碼和數(shù)據(jù)都被固定在具體的存儲(chǔ)單元中。4:uVision4軟件調(diào)試器uVision4軟件調(diào)試器能十分理想地進(jìn)行快速、可靠的程序調(diào)試。調(diào)試器包括一個(gè)高速模擬器,可以使用它模擬整個(gè)80C51系統(tǒng),包括片上外圍器件和外部硬件。當(dāng)從器件數(shù)據(jù)庫選擇器件時(shí),這個(gè)器件的屬性會(huì)被自動(dòng)配置。5:uVision4硬件調(diào)試器uVision4調(diào)試器提供了幾種在實(shí)際目標(biāo)硬件上測試程序的方法。安裝MON51目標(biāo)監(jiān)控器的目標(biāo)系統(tǒng),并通過Monitor_51接口下載程序。6:RT
30、X51實(shí)時(shí)操作系統(tǒng)RTX51實(shí)時(shí)操作系統(tǒng)是針對(duì)80C51為控制器系列的一個(gè)多任務(wù)內(nèi)核。RTX51實(shí)時(shí)內(nèi)核簡化了需要對(duì)實(shí)時(shí)事件進(jìn)行反應(yīng)的復(fù)雜應(yīng)用的系統(tǒng)設(shè)計(jì)、編程和調(diào)試。這個(gè)內(nèi)核完全集成在C51編譯器中,使用非常簡單。任務(wù)描述表和操作系統(tǒng)的一致性有BL51鏈接/定位器自動(dòng)進(jìn)行控制。此外,uVision4還具有強(qiáng)大的軟件環(huán)境、友好的操作界面和簡單快捷的操作方法,主要表現(xiàn)在以下幾點(diǎn):豐富的菜單欄;可以快速選擇命令按鈕的工具欄;一些源代碼文件窗口;對(duì)話框窗口;直觀明了的信息顯示窗口。第三章 游戲架構(gòu)3.1 游戲基本元素出現(xiàn)在顯示畫面中的游戲元素在液晶上以一個(gè)字符顯示,即88的點(diǎn)陣。在字模提取軟件設(shè)計(jì)各個(gè)
31、元素,并獲得元素的顯示碼。顯示碼的每8位構(gòu)成字符的一行,8行就有8個(gè)字節(jié)。圖3.1 游戲元素圖3.1中從左至右依次為:1人物, 2磚頭,3箱子,4目的地,5完成后。 圖3.2 界面元素3.2 推箱子方向控制鍵用按鍵執(zhí)行人物或箱子移動(dòng)時(shí),先判斷游戲緩存數(shù)組人物位置(人物在圖像中的位置用curx,cury表示)移動(dòng)的下一個(gè)位置的元素,為空格或目的時(shí),僅執(zhí)行人移動(dòng)操作;為箱子時(shí),要接著判斷箱子的下一個(gè)位置的元素,若為空格則執(zhí)行推箱子的操作,若為目的時(shí)執(zhí)行推箱子操作且相應(yīng)元素變成成功;為成功時(shí),要接著判斷箱子的下一個(gè)位置的元素,若為空格擇執(zhí)行推箱子的操作,若為目的時(shí)執(zhí)行推箱子操作且相應(yīng)元素變成成功;判
32、斷完畢后,及時(shí)更新游戲畫面緩存數(shù)組,并記錄當(dāng)前人物位置。上下左右操作類似,可參照向上移動(dòng)的函數(shù)注釋理解其它移動(dòng)函數(shù)。 圖3.3 方向控制鍵3.3 游戲關(guān)卡設(shè)計(jì)游戲每關(guān)都是在88個(gè)字符組成的區(qū)域中進(jìn)行的,只要在每一個(gè)字符顯示相應(yīng)的元素,就可以組成游戲界面。定義一個(gè)三維數(shù)組code level88,存儲(chǔ)每一關(guān)每一個(gè)字符位上要顯示的元素。為增加游戲的趣味性和難度,設(shè)置的關(guān)口,逐漸增加箱子的個(gè)數(shù)和移動(dòng)難度。推箱子游戲的關(guān)口設(shè)置需要及時(shí)更新不同關(guān)口的游戲界面。因此,在人物及箱子移動(dòng)過后,必須判斷是否完成本關(guān)口的任務(wù),而及時(shí)進(jìn)入下一關(guān)。我們?cè)谠O(shè)計(jì)程序時(shí),首先檢測初始畫面數(shù)組level88中目的4、成功5的
33、位置,然后在檢測在游戲當(dāng)前畫面緩存數(shù)組level_temp中相應(yīng)位置是否均為成功5。若相應(yīng)位置均為成功5,設(shè)置一個(gè)標(biāo)志位,判斷該標(biāo)志位為1時(shí),則將游戲當(dāng)前畫面緩存數(shù)組level_temp更新為下一關(guān)數(shù)據(jù)。第4章 設(shè)計(jì)結(jié)果4.1 編譯1)打開Keil uVision4后點(diǎn)擊project,在彈出的下拉菜單中選中新建選項(xiàng),如圖4.1 圖4.1 新建project2)然后選擇要保存的路徑,輸入一個(gè)文件的名字,比如”zyj”保存在程序文件夾中,如下圖4.2,點(diǎn)擊保存。圖4.2 保存文件3)這時(shí)會(huì)彈出一個(gè)新窗口,需要選擇單片機(jī)的型號(hào),根據(jù)使用的單片機(jī)型號(hào)選擇,我這里使用的是AT89C52,選中后,如下圖
34、4.3,右邊欄是對(duì)AT89C52的說明,然后點(diǎn)擊確定。圖4.3 選中單片機(jī)4)完成以上步驟,屏幕如下圖4.4顯示。圖4.4 完成界面5)單機(jī)“File”菜單,在下拉菜單中選擇”NEW“選項(xiàng),如下圖4.5如果已經(jīng)寫好了c文件直接添加即可。圖4.5 新建file圖4.6 新建完成后6)如圖4.7打開工程項(xiàng)目,點(diǎn)擊”view”菜單下的”project window”選項(xiàng),就會(huì)如圖4.8顯示。圖4.7 打開工程項(xiàng)目圖4.8 顯示左側(cè)框圖在建立目標(biāo)文件前,首先要將文件添加到組里去,具體操作如下:將鼠標(biāo)箭頭移至左邊項(xiàng)目窗口中的“Source Group 1”前,在點(diǎn)擊鼠標(biāo)右擊,在彈出的菜單項(xiàng)中選擇“Add
35、 files to Group”,在彈出的對(duì)話框中選擇剛才編輯保存好的原程序文件;需要點(diǎn)擊“文件類型”右側(cè)文本框中的倒三角,在彈出的下拉菜單中選擇“All files”,然后再找到源程序文件。點(diǎn)擊“Add”按鈕,再在彈出的對(duì)話框中選擇文件類型,如“c source file”;再點(diǎn)擊“Close”按鈕。此時(shí)可以在“Source Group 1”下看到源程序文件圖標(biāo),如下圖4.9顯示。圖4.9 打開源程序文件完成上述操作后方可進(jìn)入建立目標(biāo)文件。通常先點(diǎn)編譯當(dāng)前文件“Translate current file”再建立目標(biāo)文件“Build target”;或直接點(diǎn)擊重建目標(biāo)文件“Rebuild a
36、ll target files”。即可生成我們需要的后綴名為hex的十六進(jìn)制文件。編譯結(jié)果如圖4.10所示。圖4.10 編譯結(jié)果4.2 仿真圖在proteus搭建的仿真圖如圖4.11:圖4.11 仿真圖控制開關(guān)上下左右用于人物的控制,中間sw1開關(guān)用于啟動(dòng)游戲,游戲中需要4個(gè)控制鍵和1個(gè)確定鍵,可以采用5個(gè)獨(dú)立按鍵接入單片機(jī)進(jìn)行控制,由單片機(jī)的P3.2口檢測按鍵按下的信號(hào)。液晶顯示屏幕用PG160128A來顯示游戲畫面,主控模塊用AT89C52單片機(jī)。為液晶顯示屏分配單片機(jī)的P2共8個(gè)數(shù)據(jù)口,P3.0-P3.2共3個(gè)控制口;為按鍵電路分配P1.0-P1.4共5個(gè)I/O接口;將5個(gè)開關(guān)接入與門電
37、路,并輸出至單片機(jī)的P3.3外部中斷接口。4.3 開機(jī)畫面開機(jī)畫面是用畫圖程序制作的一個(gè)128像素64像素的單色位圖,并用取模軟件提取該圖像的點(diǎn)陣信息,共1024字節(jié)。使用T6963C的寫數(shù)據(jù)地址自動(dòng)加1的命令寫入上述全部1024字節(jié)的數(shù)據(jù),顯示開機(jī)畫面。如圖4.12圖4.12 開機(jī)畫面4.4 流程游戲中,程序循環(huán)執(zhí)行按鍵掃描程序,并做出相應(yīng)判斷。整個(gè)程序中,最關(guān)鍵的部分是要根據(jù)玩家的輸入,控制小人、箱子的移動(dòng)。定義一個(gè)二維數(shù)組,用于保存當(dāng)前游戲狀態(tài)每個(gè)字符位的元素,當(dāng)玩家按鍵輸入時(shí),改變?cè)摂?shù)組中相應(yīng)得數(shù)據(jù),再將此二維數(shù)組每個(gè)數(shù)據(jù)代碼的元素顯示出來,就可以出現(xiàn)小人,箱子移動(dòng)的效果。每關(guān)開始,進(jìn)
38、行游戲初始化。將關(guān)卡數(shù)據(jù)寫入上述二維數(shù)組中,并記入小人的位置(man_x,man_y)。人物位置顯示目的地4原位置上面顯示人物1end向上按鍵被按下人物上面的位置是空白0或者是目的地41人物位置原來是目的地4或箱子在目的地5人物位置顯示空白0是否否圖4.13 游戲流程圖程序只要根據(jù)小人移動(dòng)方向周圍的元素信息,結(jié)合游戲規(guī)則,只要判斷能夠移動(dòng)箱子、小人的情況,才顯示出來,而不用對(duì)不能移動(dòng)的情況進(jìn)行判定,這大大簡化了程序的編寫。 流程圖4.13,圖4.14以向上移動(dòng)為例。圖4.13,圖4.14中數(shù)字標(biāo)號(hào)參照?qǐng)D3.1。人物上面的位置是箱子31否人物再上面的位置是空的0人物位置原來是目的地4或箱子在目的
39、地的52人物位置顯示目的地4人物上面的位置顯示人物1再上面的位置顯示箱子3end人物位置顯示空白人物上面的位置是目的地4人物位置原來是目的地4或箱子在目的地的5人物位置顯示目的地4人物位置顯示空白人物上面的位置顯示人物1再上面的位置顯示箱子在目的地上5end2是是是是否否否否圖4.14 流程框圖4.5 游戲畫面圖4.15 第一關(guān)游戲截圖第一關(guān)設(shè)計(jì)比較簡單,人物及箱子的路線可以直觀的看出,通過控制上下左右四個(gè)方向鍵能輕易的將箱子推到目的地。圖4.16 第二關(guān)游戲畫面通過和第一關(guān)對(duì)比,明顯發(fā)現(xiàn)比第一關(guān)稍有難度,人物及箱子的路線很難看出,需要稍作一些嘗試才能完成。圖4.17 第三關(guān)游戲畫面為了增加第
40、三關(guān)的難度,這一關(guān)卡設(shè)計(jì)了兩個(gè)箱子,需要將兩個(gè)箱子都推到目的地才能通過,而箱子的順序沒有要求。結(jié)束語本設(shè)計(jì)能夠通過四個(gè)鍵來控制箱子移動(dòng),一個(gè)鍵做開關(guān),如果可以移動(dòng)則移動(dòng)方向同時(shí)跟蹤顯示人物的位置及刷新動(dòng)態(tài)數(shù)組的內(nèi)容。如果到了最后一關(guān)則自動(dòng)返回第一關(guān)。在最近這段時(shí)間,我不斷修改原理圖和程序,直到程序和仿真基本滿足要求,期間也是很辛苦,畢竟獨(dú)立完成這樣的畢業(yè)設(shè)計(jì),開始的時(shí)候不知如何下手,沒有頭緒,只能一步一步去摸索。這次的畢業(yè)設(shè)計(jì)雖然困難重重,但這少有的經(jīng)歷使我學(xué)會(huì)了更多,努力做,用心學(xué),還怕什么。致 謝這段時(shí)間里,指導(dǎo)老師和身邊的一些同學(xué)給了我很大的幫助。在此,我要感謝這些給過我?guī)椭娜?。同時(shí)要
41、感謝一起做畢設(shè)的其他同學(xué),大家一起交流,相互鼓勵(lì),使我的畢設(shè)進(jìn)行的很順利。還要感謝宿舍的姐妹們,為我創(chuàng)造了一個(gè)溫馨、舒適的宿舍環(huán)境,保證了我的休息和睡眠,使我以良好的精神狀態(tài)投入到畢業(yè)設(shè)計(jì)當(dāng)中。最后,感謝百忙中抽出時(shí)間來審閱論文、出席論文答辯的各位老師們。參考文獻(xiàn)1 趙建領(lǐng).51單片機(jī)開發(fā)與應(yīng)用技術(shù)詳解M.電子工業(yè)出版社,20092 趙建領(lǐng).零基礎(chǔ)學(xué)單片機(jī)C語言程序設(shè)計(jì)M.機(jī)械工業(yè)出版社,20093 李學(xué)禮.基于Proteus的8051單片機(jī)實(shí)例教程M.電子工業(yè)出版社,20084 梁炳東.單片機(jī)原理與應(yīng)用M.人民郵電出版社,20095 不亦心.電子制作J .20106 吳飛青.單片機(jī)原理與應(yīng)用
42、實(shí)踐指導(dǎo)M.機(jī)械工業(yè)出版社,20097 馬忠梅.單片機(jī)的C語言應(yīng)用程序設(shè)計(jì)M.北京航空航天大學(xué)出版社,20088 朱清慧.PROTEUS教程-電子線路設(shè)計(jì)、制版與仿真M.清華大學(xué)出版 社,20099 張齊.單片機(jī)系統(tǒng)設(shè)計(jì)與開發(fā)-基于PROTEUS單片機(jī)仿真和C語言編程M.機(jī)械工業(yè)出版社,200810 黃近秋黃惠洪.微型電腦應(yīng)用J.201011 Syed R. Rizvi.Microcontroller Programming:An IntroductionM. CRC Press,c201212 Inter. MCS-51 family of single-chip microcomputer
43、s users manualM. 1990附錄主函數(shù)#include #include data.h#include order.h#include lcdinit.c#include function.cvoid int1(void) interrupt 2keyboard();int main()uchar i=1;error0=0;error1=0;error2=0;delay(50);EA=1;IT1=1;EX1=1;/wirte_bg();/*液晶初始化函數(shù)(文本區(qū)首地址D1,文本區(qū)首地址D2, 文本區(qū)寬度, 圖形區(qū)首地址D1, 圖形區(qū)首地址D2, 圖形區(qū)寬度, 光標(biāo)形狀, 顯示方式
44、, 顯示開關(guān))*/lcd_init(0x00,0x00,0x14,0x50,0x01,0x14,0x00,MOD_XOR,0x0c);/wirte_bg();set_cgram();wirte_cgrom();cls();start();cls();pushbox();guan();while(1)return(0);#define uchar unsigned char#define LCD_CHAR 0x14sbit cd = P30;/*通道選擇*/sbit rd = P31;/*讀操作信號(hào)*/sbit wr = P32;/*寫操作信號(hào)*/sbit error0 = P15; /*出錯(cuò)提
45、示1*/sbit error1 = P16; /*出錯(cuò)提示2*/sbit error2 = P17; /*出錯(cuò)提示3*/*讀狀態(tài)*/uchar read_state()uchar temp;P2 = 0xff;cd = 1;rd = 0;temp = P2;rd = 1;return(temp);/*STA0指令讀寫狀態(tài),STA1數(shù)據(jù)讀寫狀態(tài) 判斷函數(shù)*/void lcd_enable()uchar i;for(i = 10; i 0; i-)if(read_state() & 0x03) = 0x03)break;if(i=0)error0=1;/*若i=0,說明錯(cuò)誤*/else error
46、0=0;/*STA2數(shù)據(jù)自動(dòng)讀狀態(tài) 判斷函數(shù)*/void atrd_enable()uchar i;for(i = 10; i 0; i-)if(read_state() & 0x04) = 0x04)break;if(i=0)error1=1;/*若i=0,說明錯(cuò)誤*/else error1=0;/*STA3數(shù)據(jù)自動(dòng)寫狀態(tài) 判斷函數(shù)*/void atwr_enable()uchar i;for(i = 10; i 0; i-)if(read_state() & 0x08) = 0x08)break;if(i=0)error2=1;/*若i=0,說明錯(cuò)誤*/else error2=0;/*寫無
47、參數(shù)函數(shù)*/void write_cmd0(uchar cmd)lcd_enable();cd=1;P2=cmd;wr=0;wr=1;/*寫單參數(shù)函數(shù)*/void write_cmd1(uchar data1, uchar cmd)lcd_enable();cd=0;P2=data1;wr=0;wr=1;lcd_enable();cd=1;P2=cmd;wr=0;wr=1;/*寫雙參數(shù)函數(shù)*/void write_cmd2(uchar data1, uchar data2, uchar cmd)lcd_enable();cd=0;P2=data1;wr=0;wr=1;lcd_enable();cd=0;P2=data2;wr=0;wr=1;lcd_enable();cd=1;P2=cmd;wr=0;wr=1;/*寫數(shù)據(jù)函數(shù)*/void write_data(uchar data0)lcd_enable();cd=1;P2=data0;wr=0;wr=1;/*讀數(shù)據(jù)函數(shù)*/uchar read_data()char temp;lcd_enable();cd = 0;P2 = 0xff;rd = 0;temp = P2;rd = 1;return(temp);/*若返回0,可能錯(cuò)誤*/*自動(dòng)寫開始*/void auto_write()wr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版土建項(xiàng)目施工人員勞動(dòng)合同范本9篇
- 2025年倉儲(chǔ)果蔬存儲(chǔ)合同
- 2025年智能社區(qū)內(nèi)新型消費(fèi)體驗(yàn)商鋪?zhàn)赓U合同2篇
- 2025年分銷代理合作模板書
- 2025年醫(yī)療支持服務(wù)合作協(xié)議
- 2025年主題公寓租賃協(xié)議
- 2025年危險(xiǎn)品運(yùn)輸報(bào)關(guān)報(bào)檢協(xié)議
- 2025年作品使用授權(quán)合同
- 2025版外墻內(nèi)保溫系統(tǒng)施工與節(jié)能監(jiān)測合同3篇
- 2025版信用卡醫(yī)療借款服務(wù)協(xié)議3篇
- 安全常識(shí)課件
- 河北省石家莊市2023-2024學(xué)年高一上學(xué)期期末聯(lián)考化學(xué)試題(含答案)
- 小王子-英文原版
- 新版中國食物成分表
- 2024年山東省青島市中考生物試題(含答案)
- 河道綜合治理工程技術(shù)投標(biāo)文件
- 專題24 短文填空 選詞填空 2024年中考英語真題分類匯編
- 再生障礙性貧血課件
- 產(chǎn)后抑郁癥的護(hù)理查房
- 2024年江蘇護(hù)理職業(yè)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 電能質(zhì)量與安全課件
評(píng)論
0/150
提交評(píng)論