九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類(lèi) > DOC文檔下載  

畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)的微型游戲機(jī)--貪吃的蛇.doc

  • 資源ID:116533694       資源大?。?span id="24d9guoke414" class="font-tahoma">751.50KB        全文頁(yè)數(shù):3頁(yè)
  • 資源格式: DOC        下載積分:20積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要20積分
郵箱/手機(jī):
溫馨提示:
用戶(hù)名和密碼都是您填寫(xiě)的郵箱或者手機(jī)號(hào),方便查詢(xún)和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開(kāi),此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類(lèi)文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。

畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)的微型游戲機(jī)--貪吃的蛇.doc

北京理工大學(xué)珠海學(xué)院2006屆本科畢業(yè)生畢業(yè)設(shè)計(jì)(論文)基于單片機(jī)的微型游戲機(jī)貪吃的蛇摘 要 單片微型機(jī)簡(jiǎn)稱(chēng)單片機(jī),它是在一片芯片上集成了中央處理部件,存儲(chǔ)器、定時(shí)器/計(jì)數(shù)器和各種輸入輸出設(shè)備等接口部件。單片機(jī)是微機(jī)發(fā)展的一個(gè)重要的分支,自問(wèn)世以來(lái),性能不斷地改善和提高,加之單片機(jī)具有集成度高、功能強(qiáng)、速度快、體積小、功耗小、使用方便、性能可靠、價(jià)格便宜等優(yōu)點(diǎn),故在工業(yè)控制、數(shù)據(jù)采集和處理、通信系統(tǒng)、家用電器等領(lǐng)域的應(yīng)用日益廣泛。國(guó)內(nèi)雖然起步較晚,但單片機(jī)的潛力越來(lái)越被人們所重視,尤其在工業(yè)控制、自動(dòng)化儀器儀表、計(jì)算機(jī)系統(tǒng)接口、智能化外設(shè)等應(yīng)用領(lǐng)域發(fā)展很快。它的應(yīng)用對(duì)于產(chǎn)品升級(jí)換代、機(jī)電一體化都具有重要的意義,在工業(yè)生產(chǎn)中,電流、電壓、溫度、壓力、流量、流速和開(kāi)關(guān)量都是常用的主要被控參數(shù),被用于各種不同產(chǎn)品的生產(chǎn)。在通信行業(yè)更為廣泛利用,手機(jī)從只能基本通話(huà),到現(xiàn)在一臺(tái)手機(jī)擁有各種不同的功能,單片機(jī)得到了廣泛的應(yīng)用。手機(jī)可以聽(tīng)音樂(lè),聽(tīng)收音機(jī),玩游戲,照相片等等,比較流行的手機(jī)游戲貪吃蛇就能用單片機(jī)實(shí)現(xiàn)。關(guān)鍵詞:51單片機(jī) 貪吃蛇 游戲Based on single chip micro-game - greedy snakeABSTRACTSingle-chip microprocessor referred to as microcontrollers, which is integrated on a chip, a central processing unit, memory, timer / counters and a variety of input and output devices such as Interface Unit. SCM is a microprocessor development, an important branch, since its inception, performance, continuous improvement and increase, coupled with microcontroller with an integrated high, strong function, high speed, small size, power consumption, easy to use, reliable, cheap, etc. advantages, so in the industrial control, data acquisition and processing, communication systems, home appliances and other fields increasingly wide range of applications. Although the domestic late start, but the potential of SCM has been growing attention, especially in industrial control, automation instruments and meters, computer system interface, intelligent peripherals and other applications developed rapidly. Its application for the upgrading of products, mechanical and electrical integration, have important significance in industrial production, current, voltage, temperature, pressure, flow, flow rate and switching capacity are commonly used parameters of the main accused, was used for a variety production of different products. More extensive use of the communications industry, cell phone calls from can only be basic to the present, mobile phones have a variety of functions, single-chip has been widely used. Phone can listen to music, listening to the radio, play games, according to photos, etc., the more popular cell phone game Snake will be able to use SCM.Keyword:51singlechip snake game目 錄1 第一章 緒論11.1概述11.2選題背景11.3課題分析11.4思路設(shè)計(jì)12第二章 系統(tǒng)的基本組成和工作原理22.1系統(tǒng)的基本組成22.2系統(tǒng)的工作原理23第三章 顯示電路的選取和設(shè)計(jì)23.1游戲顯示的器件選擇23.2顯示功能的硬件電路34第四章 鍵盤(pán)掃描的電路設(shè)計(jì)44.1鍵盤(pán)掃描思路設(shè)計(jì)44.2鍵盤(pán)硬件電路設(shè)計(jì)45第五章 系統(tǒng)程序設(shè)計(jì)55.1編譯軟件55.2軟件設(shè)計(jì)工具55.3C51 優(yōu)化的 C 語(yǔ)言交叉編譯器105.4系統(tǒng)設(shè)計(jì)流程圖11參考文獻(xiàn)15附 錄16謝辭43IV 1 第一章 緒論1.1 概述本設(shè)計(jì)采用80C51核心的單片機(jī)最小系統(tǒng),80C51是MCS51系列單片機(jī)鐘CHMOS工藝的一個(gè)典型品種。另外,其他廠商以8051為基核開(kāi)發(fā)出CHMOS工藝單片機(jī)產(chǎn)品統(tǒng)稱(chēng)為80C51系列。貪吃蛇游戲采用ATS892的80C51系列的芯片,AT89S52具有8KB空間ROM,256B的RAW,4個(gè)并行接口,1個(gè)串行接口,3個(gè)定時(shí)計(jì)數(shù)器,6個(gè)中斷源。擁有大量的程序存儲(chǔ)空間,大大減輕了對(duì)程序的編寫(xiě)和算法的要求。豐富的硬件資源可使外圍電路變得更簡(jiǎn)單。1.2 選題背景貪吃蛇是家喻戶(hù)曉的益智類(lèi)小游戲,選擇這個(gè)題目一是為了將自己的所學(xué)知識(shí)加以運(yùn)用,二是一直以來(lái)貪吃蛇這個(gè)游戲就深深地吸引著我,它的制作方法對(duì)于以前的我而言都是很神秘的。我希望通過(guò)自己的所學(xué)知識(shí)把它剖析開(kāi)來(lái),真真正正的了解它的本質(zhì)和精髓。雖然我的編程能力不是很強(qiáng),但是我有信心,在這次學(xué)習(xí)中我將從實(shí)踐和實(shí)際的項(xiàng)目中提高自己的編程能力。因此我選定了這個(gè)題目。1.3 課題分析 貪吃蛇游戲設(shè)計(jì)主要硬件由單片機(jī)最小系統(tǒng),TFT彩屏,4X4矩陣鍵盤(pán),整個(gè)的游戲設(shè)計(jì)外圍電路比較少,主要核心在于游戲的程序設(shè)計(jì),本設(shè)計(jì)的游戲規(guī)則也參照現(xiàn)在手機(jī)流行的貪吃蛇游戲的規(guī)則去設(shè)計(jì),當(dāng)蛇吃到食物時(shí),蛇身就會(huì)自動(dòng)增加一格,食物隨機(jī)出現(xiàn)在屏幕上,當(dāng)蛇碰到墻壁時(shí),游戲結(jié)束。本設(shè)計(jì)需要考慮的問(wèn)題有以下幾個(gè):1. 顯示彩屏的選擇2. 保證游戲的流暢性和及時(shí)響應(yīng)性3. 游戲的設(shè)計(jì)應(yīng)該接近人性化4. 電路連接距離應(yīng)盡量短,避免信號(hào)線受外界干擾1.4 思路設(shè)計(jì) 游戲的運(yùn)行由矩陣鍵盤(pán)去控制,顯示由TFT彩色屏幕完成。本設(shè)計(jì)的鍵盤(pán)掃描電路不同于以往一般的矩陣鍵盤(pán),而由中斷掃描代替,當(dāng)有按鍵按下時(shí),才執(zhí)行掃描鍵盤(pán),這樣就可以節(jié)省很多CPU資源,同時(shí)也可以及時(shí)的反應(yīng)出按鍵操作。2 第二章 系統(tǒng)的基本組成和工作原理2.1 系統(tǒng)的基本組成 貪吃蛇游戲設(shè)計(jì)由三部分組成,屏幕顯示,最小系統(tǒng)及矩陣鍵盤(pán)。最小系統(tǒng)采用Atmel公司的51核的AT89S52芯片,AT89S52芯片具有8K的程序存儲(chǔ)器,256B的數(shù)據(jù)存儲(chǔ)器,已經(jīng)為程序的設(shè)計(jì)帶來(lái)了很大的方便,解決了因程序容量龐大而導(dǎo)致硬件選擇困難的問(wèn)題。同時(shí)也節(jié)約了設(shè)計(jì)成本,一塊AT89S52只需要5塊錢(qián)就足夠了,對(duì)于一般人來(lái)講是可以承受得了的。加上屏幕的應(yīng)用比較簡(jiǎn)單,有相應(yīng)的配套應(yīng)用命令子程序,減低了設(shè)計(jì)者重新編寫(xiě)屏幕應(yīng)用子程序的麻煩,同時(shí)設(shè)計(jì)者可根據(jù)自身設(shè)計(jì)需要,增添或修改程序,使得程序更完善。2.2 系統(tǒng)的工作原理 系統(tǒng)的程序設(shè)計(jì)分為一個(gè)主函數(shù),3個(gè)子函數(shù),子函數(shù)分別是鍵盤(pán)掃描函數(shù),貪吃蛇運(yùn)行子程序和TFT屏幕自帶的子程序。在主程序里只對(duì)LCD的初始化,中斷設(shè)備的初始化,然后死循環(huán)執(zhí)行貪吃蛇運(yùn)行程序。3 第三章 顯示電路的選取和設(shè)計(jì)3.1 游戲顯示的器件選擇 游戲設(shè)計(jì)的顯示屏可以有很多種的選擇,選擇不同的屏幕,程序的編寫(xiě)也隨之不同。屏幕可以選擇LCD128X64,8X8點(diǎn)陣LED,TFT彩色屏幕等等。 LCD128X64是比較通用,大眾化,容易使用的液晶屏,若采用LCD128X64液晶屏,則要用到8位的I/O口作數(shù)據(jù)傳送,6位I/O口作選通位,一共要用到14個(gè)I/O口,占用單片機(jī)最小系統(tǒng)的資源比較多,另外,LCD128X64每一個(gè)顯示格由8x8像素組成,若使用每一個(gè)顯示單元格作為貪吃蛇的蛇身顯示,顯然有點(diǎn)大,不美觀,若利用LCD128X64里可編輯每個(gè)單元格的顯示圖案的功能,將會(huì)使得編寫(xiě)程序變得很麻煩,而且CPU要執(zhí)行的程序顯然增加了很多。 8X8點(diǎn)陣LED比LCD128X64結(jié)構(gòu)更簡(jiǎn)單,不需要任何的指令集,即對(duì)I/O口直接輸出可以使用。若選用8X8點(diǎn)陣LED顯示屏,首先16位的I/O口已經(jīng)被占用,8X8的點(diǎn)陣能使用的范圍很少,對(duì)增強(qiáng)游戲的功能方面加以限制。 TFT彩色屏幕具有很強(qiáng)的顯示功能,能顯示262k顏色,屏幕由具有豐富的功能子程序,為使用者節(jié)省了不少時(shí)間,而且占用I/O口少,只用到5個(gè)I/O口。本設(shè)計(jì)將采用SSD1283A型號(hào)的彩屏。 SSD1283A的TFT驅(qū)動(dòng)器是一種智能都在同一個(gè)驅(qū)動(dòng)器,集成了電源電路,門(mén)驅(qū)動(dòng)器,內(nèi)存為單芯片驅(qū)動(dòng)器和源。它可以驅(qū)動(dòng)132號(hào)決議的RGB 132的一個(gè)小組26萬(wàn)色為a - TFT。 它也集成了控制器的功能和組成132高達(dá)39204個(gè)字節(jié)(132 132 18 / 8)圖形顯示數(shù)據(jù)RAM(GDDRAM),6800接口,這樣它與普通單片機(jī)通過(guò)8/9/16/18-bits系列/ 8080系列兼容的并行接口或串行接口和存儲(chǔ)數(shù)據(jù)的GDDRAM研究。輔助18位視頻接口(垂直同步,HSYNC,DOTCLK,啟用和RR0 - RR5,GG0 - GG5,BB0 - BB5)是SSD1283A納入圖像顯示動(dòng)畫(huà)。 只有外部電容器9只,它嵌入的DC - DC轉(zhuǎn)換器,振蕩器和電壓發(fā)生器提供一切必要的組件所需的電壓由外部的驅(qū)動(dòng)程序最低限度。通用的電壓產(chǎn)生電路包含驅(qū)動(dòng)液晶顯示器對(duì)電極。伽瑪控制電路的集成,也包括可通過(guò)軟件命令調(diào)整,以提供最大的靈活性和最佳的顯示質(zhì)量。3.2 顯示功能的硬件電路圖3-1 游戲顯示硬件電路圖 如圖所示,顯示電路占用了P00-P04口,僅占用了5個(gè)接口。P0口的每一位口線可以驅(qū)動(dòng)8個(gè)LSTTL負(fù)載。在作為通用I/O口時(shí),由于輸出驅(qū)動(dòng)電路是開(kāi)漏方式,有集電極的開(kāi)路(OC門(mén))電路或漏極電路驅(qū)動(dòng)是需外接上拉電阻,本設(shè)計(jì)采用4.7K的排電阻做上拉電阻,足以使P0口驅(qū)動(dòng)TFT液晶顯示屏。4 第四章 鍵盤(pán)掃描的電路設(shè)計(jì)4.1 鍵盤(pán)掃描思路設(shè)計(jì) 鍵盤(pán)是人機(jī)對(duì)話(huà)的一個(gè)重要的橋梁,通過(guò)按鍵控制單片機(jī)的操作。鍵盤(pán)的設(shè)計(jì)有兩種方式,一種是獨(dú)立鍵盤(pán),就是獨(dú)立每一個(gè)I/O口單獨(dú)連接一個(gè)按鈕,這樣的設(shè)計(jì)是最簡(jiǎn)單的,可是具有很大的局限性,因?yàn)閱纹瑱C(jī)的I/O口本身就很有限,而且8個(gè)按鍵需要8個(gè)I/O口,浪費(fèi)了單片機(jī)的資源。第二種方式是矩陣鍵盤(pán),矩陣鍵盤(pán)采用行列式結(jié)構(gòu)按鍵設(shè)置在行列的交點(diǎn)上。當(dāng)口線數(shù)量為8時(shí),可以將4根口線定義為行線,另4根口線的定義為列線,形成4X4鍵盤(pán),可以配置16個(gè)按鍵。同樣利用8根口線,矩陣鍵盤(pán)可以配置16個(gè)鍵,而獨(dú)立鍵盤(pán)只能配置8個(gè)按鍵,從此看出,矩陣鍵盤(pán)比獨(dú)立鍵盤(pán)擁有更豐富的性能。4.2 鍵盤(pán)硬件電路設(shè)計(jì)圖1-2矩陣鍵盤(pán)電路圖 如圖所示,矩陣鍵盤(pán)的行線連接P1口的前四位,列線連接P1口的后四位。矩陣鍵盤(pán)上某一鍵閉合時(shí),該鍵所對(duì)應(yīng)的行線和列線短接。此時(shí)該行線電平將由被短接的列線電平所決定。5 第五章 系統(tǒng)程序設(shè)計(jì)5.1 編譯軟件 關(guān)于程序的編寫(xiě),在C51單片機(jī)中,可以用匯編語(yǔ)言編寫(xiě)程序,也可以用C語(yǔ)言編寫(xiě)。匯編語(yǔ)言是一種用文字助記符來(lái)表示機(jī)器指令的符號(hào)語(yǔ)言,是最接近機(jī)器碼的一種語(yǔ)言,其主要優(yōu)點(diǎn)是占用資源少、程序執(zhí)行效率高,但是不同的CPU,其匯編語(yǔ)言可能有所差異,所以不易移植。C語(yǔ)言是一種結(jié)構(gòu)化的高級(jí)語(yǔ)言,其優(yōu)點(diǎn)是可讀性好,移植容易,是普遍使用的一種計(jì)算機(jī)語(yǔ)言,缺點(diǎn)是占用資源較多,執(zhí)行效率沒(méi)有匯編高。對(duì)于目前普遍使用的RISC架構(gòu)的8bit MCU來(lái)說(shuō),其內(nèi)部ROM、RAM、STACK等資源都有限,如果使用C語(yǔ)言編寫(xiě),一條C語(yǔ)言指令編譯后,會(huì)變成很多條機(jī)器碼,很容易出現(xiàn)ROM空間不夠、堆棧溢出等問(wèn)題。 綜合本設(shè)計(jì)的情況,由于編寫(xiě)程序容量并不是很大,而且對(duì)于初學(xué)者更好理解程序的設(shè)計(jì),故采用keilC 編譯器來(lái)完成程序的編寫(xiě)。5.2 軟件設(shè)計(jì)工具uVision2 集成開(kāi)發(fā)環(huán)境 uVision2 IDE是一個(gè)基于Window的開(kāi)發(fā)平臺(tái)包含一個(gè)高效的編輯器一個(gè)項(xiàng)目管理器和一個(gè)MAKE工具。uVision2 支持所有的KEIL 8051工具包括C編譯器,宏匯編器,連接/定位器 目標(biāo)代碼到HEX的轉(zhuǎn)換器。uVision2 通過(guò)以下特性加速你的嵌入式系統(tǒng)的開(kāi)發(fā)過(guò)程:1) 全功能的源代碼編輯器。2) 器件庫(kù)用來(lái)配置開(kāi)發(fā)工具設(shè)置。3) 項(xiàng)目管理器用來(lái)創(chuàng)建和維護(hù)你的項(xiàng)目。4) 集成的 MAKE 工具可以匯編 編譯和連接你的嵌入式應(yīng)用。5) 所有開(kāi)發(fā)工具的設(shè)置都是對(duì)話(huà)框形式的。6) 真正的源代碼級(jí)的對(duì) CPU和外圍器件的調(diào)試器。7) 高級(jí) GDI(AGDI)接口用來(lái)在目標(biāo)硬件上進(jìn)行軟件調(diào)試 以及和Monitor-51 進(jìn)行通信。 8) 與開(kāi)發(fā)工具手冊(cè)和器件數(shù)據(jù)手冊(cè)和用戶(hù)指南有直接的鏈接。 uVision2界面提供一個(gè)菜單,一個(gè)工具條以便你快速選擇命令按鈕,另外還有源代碼的顯示窗口,對(duì)話(huà)框和信息顯示uVision2允許同時(shí)打開(kāi)瀏覽多個(gè)源文件。 圖5-1開(kāi)發(fā)環(huán)境界面菜單條,工具條和快捷鍵 菜單條提供各種操作菜單,如:編輯操作,項(xiàng)目維護(hù),開(kāi)發(fā)工具選項(xiàng)設(shè)置,調(diào)試程序,窗口選擇和處理,在線幫助,工具條按鈕允許你快速地執(zhí)行uVision2命令。鍵盤(pán)快捷鍵(你自己可以配置)允許你執(zhí)行uVision命令。下面的表格列出了uVision2菜單項(xiàng)命令,工具條圖標(biāo),默認(rèn)的快捷鍵以及他們的描述:文件菜單和命令 File 菜單 快捷鍵 描述 New Ctrl+N 創(chuàng)建新文件 Open Ctrl+O 打開(kāi)已經(jīng)存在的文件 Close 關(guān)閉當(dāng)前文件 Save Ctrl+S 保存當(dāng)前文件 Save all 保存所有文件 Save as 另外取名保存 Device Database 維護(hù)器件庫(kù) Print Setup 設(shè)置打印機(jī) Print Ctrl+P 打印當(dāng)前文件 Print Preview 打印預(yù)覽 1-9 打開(kāi)最近用過(guò)的文件 Exit 退出 uVision2 提示是否保存文件 編輯菜單和編輯器命令(Edit) 菜單 快捷鍵 描述 Home 移動(dòng)光標(biāo)到本行的開(kāi)始 End 移動(dòng)光標(biāo)到本行的末尾 Ctrl+Home 移動(dòng)光標(biāo)到文件的開(kāi)始 Ctrl+End 移動(dòng)光標(biāo)到文件的結(jié)束 Ctrl+ 移動(dòng)光標(biāo)到詞的右邊 Ctrl+A 選擇當(dāng)前文件的所有文本內(nèi)容 Undo Ctrl+Z 取消上次操作 Redo Ctrl+Shift+Z 重復(fù)上次操作 Cut Ctrl+X 剪切所選文本 Ctrl+Y 剪切當(dāng)前行的所有文本 Copy Ctrl+C 復(fù)制所選文本 Paste Ctrl+V 粘貼 Indent 將所選文本右移一個(gè)制表鍵的距離 Selected Text Unindent 將所選文本左移一個(gè)制表鍵的距離 Selected Text Toggle Bookmark Ctrl+F2 設(shè)置/取消當(dāng)前行的標(biāo)簽Goto Next Bookmark F2 移動(dòng)光標(biāo)到下一個(gè)標(biāo)簽處 Goto Previous Bookmark Shift+F2 移動(dòng)光標(biāo)到上一個(gè)標(biāo)簽處 Clear All Bookmarks 清除當(dāng)前文件的所有標(biāo)簽 Find Ctrl+F 在當(dāng)前文件中查找文本 F3 向前重復(fù)查找 Shift+F3 向后重復(fù)查找 Ctrl+F3 查找光標(biāo)處的單詞 Ctrl+ 尋找匹配的大括號(hào),圓括號(hào),方括號(hào)(用此命令將光標(biāo)放到大括號(hào),圓括號(hào)或方括號(hào)的前面) Replace Ctrl+H 替換特定的字符 Find in Files 在多個(gè)文件中查找選擇文本命令 在 uVision2中, 你可以通過(guò)按住Shift鍵和相應(yīng)的光標(biāo)操作鍵來(lái)選擇文本 如 Ctrl+-是移動(dòng)光標(biāo)到下一個(gè)詞 那么 Ctrl+Shift+-就是選擇當(dāng)前光標(biāo)位置到下一個(gè)詞的開(kāi)始位置間的文本。 當(dāng)然 你也可以用鼠標(biāo)來(lái)選擇文本 操作如下: 要選擇 鼠標(biāo)操作 任意數(shù)量的文本 在你要選擇的文本上拖動(dòng)鼠標(biāo) 一個(gè)詞 雙擊此詞。 一行文本 移動(dòng)鼠標(biāo)到此行的最左邊,直到鼠標(biāo)變成右指向的箭頭,然后單擊。 多行文本 移動(dòng)鼠標(biāo)到此行的最左邊 直到鼠標(biāo)變成右指向的箭頭 然后相應(yīng)拖動(dòng)。 一個(gè)距形框中的文本 按住 Alt鍵 然后相應(yīng)拖動(dòng)鼠標(biāo)。 視圖菜單 View 菜單 快捷鍵 描述 Status Bar 顯示/隱藏狀態(tài)條 File Toolbar 顯示/隱藏文件菜單條 Build Toolbar 顯示/隱藏編譯菜單條 Debug Toolbar 顯示/隱藏調(diào)試菜單條 Project Window 顯示/隱藏項(xiàng)目窗口 Output Window 顯示/隱藏輸出窗口 Source Browser 打開(kāi)資源瀏覽器 Disassembly Window 顯示/隱藏反匯編窗口 Watch & Call 顯示/隱藏觀察和堆棧窗口 Stack Window Memory Window 顯示/隱藏存儲(chǔ)器窗口 Code Coverage Window 顯示/隱藏代碼報(bào)告窗口 Performance Analyzer Window 顯示/隱藏性能分析窗口 Symbol Window 顯示/隱藏字符變量窗口 Serial Window #1 顯示/隱藏串口 1 的觀察窗口 Serial Window #2 顯示/隱藏串口 2 的觀察窗口 Toolbox 顯示/隱藏自定義工具條 Periodic Window Update 程序運(yùn)行時(shí)刷新調(diào)試窗口 Workbook Mode 顯示/隱藏窗口框架模式 Options 設(shè)置顏色 字體 快捷鍵和編輯器的選項(xiàng) 調(diào)試菜單和調(diào)試命令 Debug 菜單 快捷鍵 描述 Start/Stop Ctrl+F5 開(kāi)始/停止調(diào)試模式 Debugging Go F5 運(yùn)行程序 直到遇到一個(gè)中斷 Step F11 單步執(zhí)行程序 遇到子程序則進(jìn)入 Step over F10 單步執(zhí)行程序 跳過(guò)子程序 Step out of Ctrl+F11 執(zhí)行到當(dāng)前函數(shù)的結(jié)束 Current function Stop Running ESC 停止程序運(yùn)行 Breakpoints 打開(kāi)斷點(diǎn)對(duì)話(huà)框 Insert/Remove 設(shè)置/取消當(dāng)前行的斷點(diǎn) Breakpoint Enable/Disable 使能/禁止當(dāng)前行的斷點(diǎn) Breakpoint Disable All 禁止所有的斷點(diǎn) Breakpoints Kill All 取消所有的斷點(diǎn) Breakpoints Show Next 顯示下一條指令 Statement Enable/Disable 使能/禁止程序運(yùn)行軌跡的標(biāo)識(shí) Trace Recording View Trace 顯示程序運(yùn)行過(guò)的指令 Records Memory Map 打開(kāi)存儲(chǔ)器空間配置對(duì)話(huà)框 Performance 打開(kāi)設(shè)置性能分析的窗口 Analyzer Inline Assembly 對(duì)某一個(gè)行重新匯編 可以修改匯編代碼 Function Editor 編輯調(diào)試函數(shù)和調(diào)試配置文件外圍器件菜單 Peripherals 菜單 快捷鍵 描述 Reset CPU 復(fù)位 CPU Interrupt, 打開(kāi)片上外圍器件的設(shè)置對(duì)話(huà)框 I/O-Ports, 話(huà)框的種類(lèi)及內(nèi)容依賴(lài)于你選擇CPU Serial, Timer, A/D Converter, D/A Converter, I2C Controller, CAN Controller, Watchdog工具菜單 Tool 利用工具菜單,你可以配置,運(yùn)行Gimpel PC-Lint,Siemens Easy-Case 和用戶(hù)程序通過(guò)Customize Tools Menu菜單,你可以添加你想要添加的程序。 菜單 快捷鍵 描述 Setup PC-Lint 配置 Gimpel Software的PC-Link程序 Lint 用 PC-Lint 處理當(dāng)前編輯的文件 Lint all C Source Files 用PC-Lint處理你項(xiàng)目中所有的C源代碼文件 Setup Easy-Case 配置 Siemens的 Easy-Case 程序 Start/Stop Easy-Case 運(yùn)行/停止 Siemens的 Easy-Case 程序 Show File (Line) 用Easy-Case 處理當(dāng)前編輯的文件 Customize Tools Menu 添加用戶(hù)程序到工具菜單中 5.3 C51 優(yōu)化的 C 語(yǔ)言交叉編譯器 Keil C51 交叉編譯器是一個(gè)基于ANSI C標(biāo)準(zhǔn)的針對(duì)8051系列MCU的C編譯器生成的可執(zhí)行代碼快速,緊湊。在運(yùn)行效率和速度上可以和匯編程序得到的代碼相媲美。 和匯編語(yǔ)言相比,用C語(yǔ)言這樣的高級(jí)語(yǔ)言有很多優(yōu)勢(shì),比如:1) 對(duì)處理器的指令集不必了解8051 CPU的基本結(jié)構(gòu)可以了解,但不是必須的。 2) 寄存器的分配以及各種變量和數(shù)據(jù)的尋址都由編譯器完成。 3) 程序擁有了正式的結(jié)構(gòu)(由C語(yǔ)言帶來(lái)的),并且能被分成多個(gè)單獨(dú)的子函數(shù)。這使整個(gè)應(yīng)用系統(tǒng)的結(jié)構(gòu)變得清晰,同時(shí)讓源代碼變得可重復(fù)使用。 4) 選擇特定的操作符來(lái)操作變量的能力提高了源代碼的可讀性 5) 可以運(yùn)用和人的思維很接近的詞匯和算法表達(dá)式 6) 編寫(xiě)程序和調(diào)試程序的時(shí)間得到很大程度的縮短 7) C 運(yùn)行連接庫(kù)包含一些標(biāo)準(zhǔn)的子程序 如 格式化輸出 數(shù)字轉(zhuǎn)換 浮點(diǎn)運(yùn)算 8) 由于程序的模塊結(jié)構(gòu)技術(shù) 使得現(xiàn)有的程序段可以很容易的包含到新的程序中去 9) ANSI標(biāo)準(zhǔn)的C語(yǔ)言是一種豐常方便的,獲得廣泛應(yīng)用的,在絕大部分系統(tǒng)中都能夠很容易得到的語(yǔ)言。 因此 如果需要 現(xiàn)有的程序可以很快地移植到其他的處理器上,節(jié)省投資。 5.4 系統(tǒng)設(shè)計(jì)流程圖開(kāi)始LCD屏幕初始化貪吃蛇設(shè)計(jì)初始化貪吃蛇運(yùn)行子程序圖5-2系統(tǒng)主程序流程圖 如圖所示,程序設(shè)計(jì)的主程序即main函數(shù)很簡(jiǎn)單,主要完成初始化工作,主要完成對(duì)LCD屏幕,貪吃蛇結(jié)構(gòu)的初始化,然后不斷運(yùn)行貪吃蛇游戲程序。下面逐一分析每一個(gè)子程序的設(shè)計(jì)。開(kāi)始初始化定時(shí)器繪制游戲初始界面初始化貪吃蛇參數(shù)結(jié)束圖5-3貪吃蛇初始化子程序流程圖定時(shí)器的作用在于產(chǎn)生隨機(jī)數(shù),用于隨機(jī)擺放食物,定時(shí)器的工作模式為模式一,即16位計(jì)數(shù)器,當(dāng)計(jì)數(shù)溢出時(shí),定時(shí)器中斷程序重裝計(jì)數(shù)初值,清除中斷標(biāo)志位。TFT顯示屏幕的顯示范圍是132x132個(gè)像素點(diǎn),定義貪吃蛇的活動(dòng)范圍為從左第7個(gè)像素到84個(gè)像素,從上第7個(gè)像素到120個(gè)像素。在屏幕的坐標(biāo)為(96,24)開(kāi)始顯示游戲得分值,坐標(biāo)為(96,97)顯示游戲的級(jí)數(shù)。初始化貪吃蛇參數(shù)是直接給貪吃蛇的結(jié)構(gòu)體賦初值。開(kāi)始根據(jù)按鍵選擇蛇的方向判斷蛇是否死亡判斷蛇是否最長(zhǎng)判斷蛇是否吃到食物蛇死亡界面過(guò)關(guān)界面放果子程序判斷是否有按鍵判斷是否有按鍵YNYN等待等待YNYNYN圖5-4貪吃蛇運(yùn)行子程序 貪吃蛇運(yùn)行子程序是整個(gè)程序設(shè)計(jì)的核心,首先由系統(tǒng)檢測(cè)是否有按鍵按下,確定有按鍵按下后,外部中斷程序自動(dòng)執(zhí)行,開(kāi)始掃描矩陣鍵盤(pán),得到鍵值,根據(jù)鍵值判斷貪吃蛇要走的方向。在游戲運(yùn)行的期間,系統(tǒng)不斷檢測(cè)蛇是否死亡,蛇是否已經(jīng)最長(zhǎng),蛇是否吃到了食物。若蛇已經(jīng)死亡,則蛇的死亡標(biāo)記位被置位,跳轉(zhuǎn)到死亡界面,檢測(cè)是否有按鍵按下,有就跳轉(zhuǎn)到游戲開(kāi)始界面,重新開(kāi)始游戲,無(wú)則等到有任意鍵按下。若檢測(cè)到蛇身的長(zhǎng)度已經(jīng)達(dá)到最長(zhǎng),則游戲的級(jí)數(shù)自動(dòng)升高一級(jí),游戲的級(jí)數(shù)越高,貪吃蛇移動(dòng)的速度越快。游戲的速度控制由延時(shí)程序決定,若延時(shí)程序延時(shí)短,則蛇移動(dòng)得快,若延時(shí)比較長(zhǎng),則蛇移動(dòng)得慢。若蛇已經(jīng)吃到食物,則在放食物的原來(lái)的坐標(biāo)會(huì)消除顯示,重新讀取計(jì)數(shù)器的值,通過(guò)計(jì)算得到要放置食物的坐標(biāo),在該坐標(biāo)上顯示食物。開(kāi)始P1低四位輸出1P1是否等于0 x0f結(jié)束延時(shí)P1是否等于0 x0f取出低四位P1輸出0 xf0取出高四位取出鍵值NYNY圖5-5鍵盤(pán)掃描子程序 由于該子程序出現(xiàn)在中斷服務(wù)程序當(dāng)中,不需要在主程序里重復(fù)運(yùn)行,所以為CPU省下了許多資源,只占用了INIT0口,在主程序當(dāng)中只需要執(zhí)行對(duì)中斷的設(shè)置和把P1置0 x0f輸出就可以了。在掃描程序當(dāng)中,首先P1輸出0 x0f,若有按鍵按下,則在P1口的低四位會(huì)有低電平出現(xiàn),在P1口的低四位分別連接著四個(gè)二極管的陰極,二極管的陽(yáng)極連接著中斷口P3.2和VCC,沒(méi)有按鍵按下的時(shí)候,P3.2呈現(xiàn)高電平,有按鍵按下的時(shí)候,四個(gè)二極管當(dāng)中至少有一個(gè)導(dǎo)通,P3.2的高電平被拉低,只要把P3.2設(shè)置成下降沿中斷響應(yīng)模式,那樣就可以進(jìn)入中斷服務(wù)程序。進(jìn)入中斷程序后,系統(tǒng)再次檢測(cè)P1口的電平是否等于0 x0f,若P1口的電平依然不等于0 x0f,則把讀到P1口的值的低四位保存起來(lái),再輸出0 xf0,讀取P1口的值,把高四位保存起來(lái)。根據(jù)高四位(列值)跟低四位(行值)的值計(jì)算出鍵值。參考文獻(xiàn)1 明浩:單片機(jī) C 語(yǔ)言入門(mén)教程J,2005 年電子報(bào)2 谷樹(shù)忠,閆勝利:PROTEL 2004 使用教程M,電子工業(yè)出版社第一版3 胡耀輝:單片機(jī)系統(tǒng)開(kāi)發(fā)實(shí)例經(jīng)典M,北京冶金工業(yè)出版社,20064 李軍:51系列單片機(jī)高級(jí)實(shí)例開(kāi)發(fā)指南M,北京航空航天大學(xué)出版社,20055 姚燕南:微型計(jì)算機(jī)原理M,安電子科技大學(xué)出版社6 謝嘉奎:電子線路M,高等教育出版社7 李秉操:機(jī)接口技術(shù)在工業(yè)控制中的應(yīng)用M, 陜西電子編輯部8 蔡美琴:MCS51單片機(jī)系統(tǒng)及其應(yīng)用M,高等教育出版社9 周利功:增強(qiáng)型80C51單片機(jī)速成和實(shí)戰(zhàn)M,北京航空航天大學(xué)出版社10 王天曦 ,李洪儒:電子技術(shù)工藝基礎(chǔ)M,清華大學(xué)出版社 200011 李光才,樓然笛:?jiǎn)纹瑱C(jī)課程設(shè)計(jì) 實(shí)例指導(dǎo)M,北京航空航天大學(xué)出版社 2004附 錄Main.c#include #include #include LCD_SSD1283.H#include SNAKE.hvoid main(void)LCD_ssd1283a_Init();Init_SNAKE();Interrupt0_Key();while(1)Run_SNAKE();Snake.c#include #include #include LCD_SSD1283.H#include SNAKE.h/=/ 使用結(jié)構(gòu)體定義變量 使程序的名稱(chēng)更加的清楚/=struct uchar X;uchar Y; uchar Yes;Food;/食物結(jié)構(gòu)體#define SNAKE_Max_Long 20 /最大長(zhǎng)度struct uchar XSNAKE_Max_Long;uchar YSNAKE_Max_Long;uchar Long; uchar Life; uchar Score;/蛇的分?jǐn)?shù)uchar Level;/蛇的等級(jí) Snake;/蛇結(jié)構(gòu)體uchar Key_V_temp=0; /取出上次按鍵值/函數(shù)功能:1ms延時(shí)函數(shù)/晶 振:11.0592Mvoid Delay_1mS(unsigned int n)unsigned int i;unsigned char j;for(i=0;in;i+)for(j=0;j120;j+) ;/函數(shù)名稱(chēng):void Init_time0 (void)/函數(shù)功能:初始化定時(shí)器1 用于產(chǎn)生隨機(jī)數(shù)種子 ,用于放置實(shí)物void Init_time0 (void)EA=1;ET1=1;TMOD|=0X10;TH1=0X00;TL1=0X00;TR1=1;void time1 (void) interrupt 3TH1=0X00;TL1=0X00;/函數(shù)名稱(chēng):Trun_On_Point Trun_Off_Point (uchar x,uchar y)/函數(shù)功能:點(diǎn)亮或者熄滅 一個(gè)點(diǎn)。用于顯示蛇身體/入口參數(shù):無(wú)/出口參數(shù):無(wú)/特別說(shuō)明:此 Trun_On,函數(shù)換成其他的就可以兼容其他的液晶/ 入8*8 點(diǎn)陣 12864 等void Trun_On_Point (uchar x,uchar y,uchar color)Bar(4*(x+2),(4*(y+2),(4*(x+3),(4*(y+3),color);void Trun_Off_Point (uchar x,uchar y)Bar(4*(x+2),(4*(y+2),(4*(x+3),(4*(y+3),0 xBE5F);/函數(shù)名稱(chēng):void Init_SNAKE(void) /函數(shù)功能:繪制游戲界面,初始化游戲等級(jí)等參數(shù)void Init_SNAKE(void) uchar i;Init_time0();/*繪制游戲界面*/CLR_Led_ssd1283a(0 xBE5F);Rectangle(8-1,8-1,84,120,0 xaa);/繪制一個(gè)矩形框, 0-127 LCD_Display(88,8,Score,0 xcc88,0 xBE5F);LCDShow_uCharNumber(96,24,Snake.Score,0 xcc88,0 xBE5F); LCD_Display(88,81,LEVEL,0 xcc88,0 xBE5F);LCDShow_uCharNumber(96,97,Snake.Level,0 xcc88,0 xBE5F);/*初始化蛇參數(shù)*/Snake.Long=2; /定義初始化蛇的長(zhǎng)度Snake.Life=0; /初始化蛇還活著Snake.Score=0;Food.Yes=1;Key_Value=0;for(i=0;iSnake.Long;i+)/將蛇給賦值Snake.Xi=i+2;Snake.Yi=2;for(i=0;iSnake.Long;i+)/將蛇給畫(huà)出來(lái)Trun_On_Point(Snake.Xi,Snake.Yi,0 xaa);/函數(shù)名稱(chēng):void Display_dead(uchar i) /函數(shù)功能:顯示死亡界面void Display_dead(uchar i)LCD_Display(10,40,GAME OVER,0 xcc88,0 xBE5F); while(Key_Value=i);Init_SNAKE();/函數(shù)名稱(chēng):void Display_Pass(uchar i)/函數(shù)功能:顯示過(guò)關(guān)界面void Display_Pass(uchar i)Snake.Level+;LCD_Display(18,40,You are,0 xcc88,0 xBE5F); LCD_Display(34,56,WIN!,0 xcc88,0 xBE5F); while(Key_Value=i);Init_SNAKE();/函數(shù)名稱(chēng):void Run_SNAKE(void)/函數(shù)功能:蛇運(yùn)動(dòng)函數(shù) (游戲精華)void Run_SNAKE(void)uchar i=0;/*根據(jù)按鍵選擇蛇的運(yùn)動(dòng)方向*/if(Key_Value=Key_Right&Key_V_temp!=Key_Left)|(Key_Value=Key_Left&Key_V_temp=Key_Right)Trun_Off_Point(Snake.X0,Snake.Y0); /先把蛇尾給熄滅掉 for(i=0;iSnake.Long-1;i+) /蛇身都是它前一段的蛇身的位置Snake.Xi=Snake.Xi+1;Snake.Yi=Snake.Yi+1; Snake.XSnake.Long-1=Snake.XSnake.Long-2+1;Snake.YSnake.Long-1=Snake.YSnake.Long-2+0; /蛇頭向你要求的方向移動(dòng)for(i=0;iSnake.Long;i+) /這個(gè)讓蛇顯示出來(lái)的函數(shù)Trun_On_Point(Snake.Xi,Snake.Yi,0 xaa);Key_V_temp=Key_Right;if(Key_Value=Key_Left&Key_V_temp!=Key_Right)|(Key_Value=Key_Right&Key_V_temp=Key_Left)Trun_Off_Point(Snake.X0,Snake.Y0); /先把蛇尾給熄滅掉 for(i=0;iSnake.Long-1;i+) /蛇身都是它前一段的蛇身的位置Snake.Xi=Snake.Xi+1;Snake.Yi=Snake.Yi+1; Snake.XSnake.Long-1=Snake.XSnake.Long-2-1;Snake.YSnake.Long-1=Snake.YSnake.Long-2+0; /蛇頭向你要求的方向移動(dòng)for(i=0;iSnake.Long;i+) /這個(gè)讓蛇顯示出來(lái)的函數(shù)Trun_On_Point(Snake.Xi,Snake.Yi,0 xaa);Key_V_temp=Key_Left;if( Key_Value=Key_Up&Key_V_temp!=Key_Down)|( Key_Value=Key_Down&Key_V_temp=Key_Up)Trun_Off_Point(Snake.X0,Snake.Y0); /先把蛇尾給熄滅掉 for(i=0;iSnake.Long-1;i+) /蛇身都是它前一段的蛇身的位置Snake.Xi=Snake.Xi+1;Snake.Yi=Snake.Yi+1; Snake.XSnake.Long-1=Snake.XSnake.Long-2+0;Snake.YSnake.Long-1=Snake.YSnake.Long-2-1; /蛇頭向你要求的方向移動(dòng)for(i=0;iSnake.Long;i+) /這個(gè)讓蛇顯示出來(lái)的函數(shù)Trun_On_Point(Snake.Xi,Snake.Yi,0 xaa);Key_V_temp=Key_Up;if( Key_Value=Key_Down&Key_V_temp!=Key_Up)|( Key_Value=Key_Up&Key_V_temp=Key_Down)Trun_Off_Point(Snake.X0,Snake.Y0); /先把蛇尾給熄滅掉 for(i=0;iSnake.Long-1;i+) /蛇身都是它前一段的蛇身的位置Snake.Xi=Snake.Xi+1;Snake.Yi=Snake.Yi+1; Snake.XSnake.Long-1=Snake.XSnake.Long-2+0;Snake.YSnake.Long-1=Snake.YSnake.Long-2+1; /蛇頭向你要求的方向移動(dòng)for(i=0;i=19|Snake.YSnake.Long-1=28)/判蛇頭是否撞到墻壁Snake.Life=1;for(i=3;iSnake.Long;i+)/從第三節(jié)開(kāi)始判斷蛇頭是否咬到自己if(Snake.Xi=Snake.X0&Snake.Yi=Snake.Y0)Snake.Life=1;if(Snake.Life=1) /

注意事項(xiàng)

本文(畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)的微型游戲機(jī)--貪吃的蛇.doc)為本站會(huì)員(good****022)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話(huà):18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!