版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
基于單片機的貪吃蛇設計緒論1.1研究背景及意義時代在不斷的進步,人們的生活節(jié)奏也因此不斷加快,越來越多的人加入了經(jīng)濟化全球化的世界。人們不再只需要保持自己的小世界,加班、旅游已逐漸代替了人們的正常工作,成為我們必然的公務。同時,我們可以供隨時隨地的休閑娛樂,因而休閑類的小游戲已經(jīng)逐漸成為生活的必需品,漸漸得變得無所不在,滲入我們?nèi)粘I畹母鱾€部分。貪食蛇這款經(jīng)典的小游戲具有可塑性強、簡單易行、通俗易懂、操作方便、娛樂性強等特點,因此引來了不少人們的青睞。這款小游戲牢牢地把握住了人們追求娛樂的心理,看起來很簡單,但真正接觸的時候毫無違和感,甚至會感覺到其樂無窮,在人們不斷尋求探索更多的開心和樂趣下,游戲的到來給了追逐快樂的人,和現(xiàn)代人滿意的成功后,在巨大的壓力之下是一種很好的放松工具。當今的世界,科技在不斷地發(fā)展,尤其是微電子技術方面,計算機軟件技術和其應用技術的發(fā)展,將人們的生活變得多姿多彩,不在單調(diào)無趣。單片作為微型計算機大家族中不可或缺的一員,微型計算機以其良好的穩(wěn)定性,獨特的構(gòu)造,較低的成本在嵌入式領域中得到了廣泛應用。我希望可以通過這些年來所學的知識將它剖析出來,使它立體的呈現(xiàn)在面前,真正意義上的了解它的實質(zhì),明白它的精髓所在。在編程方面,能力不強的我,更應該努力地借助這次機會,通過研究,從實踐中提升自己的編程能力。故而,我選定了這個比較有意思的課題。1.2單片機發(fā)展狀況單片微型計算機,簡稱單片機(MCU)。它是在一塊半導體硅片上集成了振蕩器電路、中央處理單元、隨機存取存儲器、只讀存儲器、可編程定時器/計數(shù)器、并/串行I/O接口等,有的還包含了A/D轉(zhuǎn)換器??傃灾?,一個巴掌大小的單片機,具有一臺計算機的所有屬性,直接相當于一臺微型計算機。由于使用單片機時其通常在測控系統(tǒng)的核心部分并嵌入其中。所以,單片機也被稱作為嵌入式控制器EMCU(EmbeddedMicroControllerUnit)。單片機擁有集成度高、體積小、重量輕、處理功能強、電源簡單、低功耗、可靠性高、價格低廉、運算速度快、易擴展、易于使用、抗干擾能力強等特點。因此,在工業(yè)控制、通信系統(tǒng)等涉及到的一些領域,基本是到處都可以見到單片機的蹤影,其技術的開發(fā)和高水平的應用已逐漸變成一個國家工業(yè)化成就取得高低的關鍵。基于單片機的貪吃蛇設計全文共23頁,當前為第4頁。早在1974年,世界上第一塊單片機被美國的仙童公司研究生產(chǎn)出來,歷經(jīng)短短數(shù)幾十年的光陰,單片機便與日俱增,成批地涌現(xiàn)出來。截至現(xiàn)在,4位、8位、16位單片機都已經(jīng)被研究出現(xiàn)了,甚至32位的超大規(guī)模集成電路單的片機也已經(jīng)問世了,其性能也在不斷的升高,不斷被改善。在國內(nèi)的單片機,起步雖然比較晚,但其潛力已經(jīng)受到越來越多人的關注,特別是在工業(yè)控制、自動化儀器儀表、計算機系統(tǒng)接口、智能化外設等應用領域發(fā)展較為快速。單片機的應用,對于產(chǎn)品的升級,還有機電一體化都有重要的意義。在工業(yè)控制中的應用也十分廣泛,例如,用單片機可以構(gòu)成形式多樣的控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng),各種報警系統(tǒng),工廠流水線的智能化管芯片理與計算機聯(lián)網(wǎng)構(gòu)成的二級控制系統(tǒng)等。單片機在醫(yī)用設備中的用途亦相當廣泛,例如醫(yī)用呼吸機,各種分析儀,監(jiān)護儀,超聲診斷設備及病床呼叫系統(tǒng)等等。在通信行業(yè),這種應用顯得更加廣泛,手機從最初的只能實現(xiàn)基本通話,沒有其他任何功能,到現(xiàn)在任何一部手機都擁有各種強大的功能,含有各種不同的應用,單片機的功效被發(fā)揮的淋漓盡致??梢杂檬謾C來聽音樂,玩游戲,攝影等等,而手機游戲上貪吃蛇游戲就可以利用單片機來實現(xiàn)。即使最新型MCS-51單片機各種基本的內(nèi)核核心擴張和持續(xù)改進,但是51系列的單片機的應用依舊是我們國家的主流模式。基于單片機的貪吃蛇設計全文共23頁,當前為第4頁??v觀幾十年的單片機發(fā)展歷程,它的未來將向高性能,高速度,低電壓,低價格和閃存的方向發(fā)展。我們可以預見的是,單片機的未來將變得更加強大、集成度更高、可靠性更高、功耗更低、使用更方便,總之,它的未來是無可限量的。1.3LED發(fā)展狀況
LED,也就是發(fā)光二極管的英文縮寫,是一種固態(tài)的,能夠直接地把電轉(zhuǎn)變成光的半導體電子元件。這種電子元件最早出現(xiàn)在1962年,剛開始的時候只能發(fā)出低光度的紅光,之后慢慢地發(fā)展出其他的單色光,到現(xiàn)在,能發(fā)出的光已經(jīng)遍及可見光、紅外線還有紫外線,光度也得到了較大地提高。而其用途從最開始的作為指示燈、顯示板等,到現(xiàn)在被廣泛地應用于顯示器、電視機采光裝飾和照明等。它由含鎵(Ga)、砷(As)、磷(P)、氮(N)等的化合物制成。半導體晶片由兩部分組成,一部分是P型半導體,在它里面空穴占主導地位,另一端是N型半導體,在這邊主要是電子。但這兩種半導體連接起來的時候,它們之間就形成一個“P-N”結(jié)。當電流通過導線作用于這個晶片的時候,電子就會被推向P區(qū),在P區(qū)里電子跟空穴復合,然后就會以光子的形式發(fā)出能量,這就是LED發(fā)光的原理。半導體照明具有綠色環(huán)保的特點,使用壽命長,效率高,節(jié)能,抗惡劣環(huán)境,結(jié)構(gòu)簡單,體積小,重量輕,響應速度快,工作電壓低,安全性好的特點。因此,LED成為白熾燈、日光燈和節(jié)能燈后的第四代照明電光源,同時也被稱為21世紀綠色光源。由于LED具有單向?qū)щ娦?,因此它只能往一個方向?qū)?,這種現(xiàn)象被稱為正向偏置,也叫正向偏壓。LED的優(yōu)點是:節(jié)能、壽命長、防水、不易破損、低功耗、開關具有高速度、微型、高可靠性、光束集中等。它的不足是:顯色性較差、需要專門的驅(qū)動電路、起始的成本較高等,因此,傳統(tǒng)的照明也相對存在一些不足。近年來白光LED的發(fā)光效率有了顯著提高?;趩纹瑱C的貪吃蛇設計全文共23頁,當前為第5頁?;趩纹瑱C的貪吃蛇設計全文共23頁,當前為第5頁。1.4設計特點以下是課程設計的主要特點:1.功能定義,顧名思義是很重要的,尤其是對于讀程序的人來說,它顯得更為重要,在不斷地修改和完善該程序的過程中,也能清楚地明白程序中各個模塊的所起到的作用,從而大大地提高了程序的可讀性。2.主要從main()函數(shù)的功能入手。Main()函數(shù)的主要功能是啟動C源程序編譯,主要從main()函數(shù)開始讀函數(shù),可以將其他功能的函數(shù)理解的更加透徹。3.在源程序列表的第一幀,來分析程序所要達到的功能,選擇合適的數(shù)據(jù)結(jié)構(gòu),然后在模塊化程序,根據(jù)模塊的功能更加簡單合理地編寫函數(shù)。4.我也學到了很多的庫函數(shù)的作用,如很多對字符串進行處理的函數(shù),還有一些基本的功能我都有了一定的理解。5.它是獨立于特定的C語言教科書,重點是C語言的基本特征,以"不變"應"萬變",C語言覆蓋的重要基礎知識的實際運用,我們需要熟練地掌握C語言。6.根據(jù)實際出發(fā),本設計可以覆蓋所學的知識點,而且它比較能夠滿足工程的實際需求。再者,本次設計能夠激發(fā)我們學習的熱情,調(diào)動學習的積極性,可以根據(jù)實際編程的要求,提升實際分析問題的能力和編程能力,而且還可以使我們逐步養(yǎng)成良好的編程習慣。7.提供綜合實踐能力的的課程設計,以進一步鍛煉學生。同時,讓學生完成實驗的過程中,可以鍛煉相互合作的精神,取長補短,培養(yǎng)團隊意識。8.通過觀察網(wǎng)絡實例,循序漸進地幫助學生完成畢業(yè)設計。本次課程設計將要求、算法還有源程序單獨分開,給學生營造獨立思考問題的條件。在足夠理解要求和算法的前提下,充分了解學生的要求和算法,再設計自己的應用。同時,我也獲得了很多寶貴的經(jīng)驗:1)在設計之前,要確保對所設計的主題和內(nèi)容有一個系統(tǒng)的認識,了解設計的主題和內(nèi)容包含哪些資源。2)對于設計程序而言,在采用什么編程語言這方面并不是特別重要,核心在于思路要清晰和軟件流程圖要完整。所以,第一步是要搞清楚設計原理與思路,然后再畫出軟件流程圖,按這樣的步驟,設計起來就比較方便快捷了。2系統(tǒng)總體設計2.1設計要求基于單片機的貪吃蛇設計全文共23頁,當前為第6頁。作為最為經(jīng)典和最具有代表性的休閑小游戲之一的貪吃蛇,其玩法準則是:玩家想要控制蛇移動的方向,必須熟練地掌握上、下、左、右四個方向鍵,在一個個的小方格上吃掉出現(xiàn)的食物。蛇每吃完一次食物后,蛇身變相應地增長一節(jié),一節(jié)即為一個單位距離,蛇在游動時,碰到蛇身或者是屏幕框,都表示該游戲結(jié)束?;趩纹瑱C的貪吃蛇設計全文共23頁,當前為第6頁。2.2系統(tǒng)設計方案2.2.1硬件設計系統(tǒng)采用的硬件設備主要包括51系列單片機,8*8點陣屏等。本次課程設計單片機選擇的是由飛利浦公司生產(chǎn)的低功耗高性能的CMOS型8位單片機。之所以選擇它,是因為它擁有內(nèi)置的一次性可編程只讀存儲器的64K字節(jié)的隨機存取數(shù)據(jù)存儲器(RAM)和1K字節(jié)的隨機存取數(shù)據(jù)存儲器(RAM),它能夠滿足游戲?qū)Υ鎯臻g的要求。8*8點陣屏選擇的是ARK-SZ411288K,它能夠直接與CPU相連接。2.2.2軟件設計軟件方面主要為匯編語言、C語言、嵌入式操作系統(tǒng)。采用C語言編寫的程序能夠很容易地在不同類型的計算機之間進行移植[1]。在以后的發(fā)展中,各類型號的單片機種類會進一步增加,而開發(fā)工具和過程會逐步趨向于統(tǒng)一,軟件和硬件差別會更加難以區(qū)分[2]。本設計使用uVision3進行程序軟件編譯。只要看一下編譯后生成的匯編代碼,就能夠體會到KeilC51生成的目標代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解[3]。用uVision3軟件編寫程序時,由于uVision3一般只能修改語法上的錯誤,不好檢查算法上的問題,而且如果直接下到單片機里,會因為電路板的限制而使得調(diào)試不方便,所以,在這里,本設計選擇使用Proteus軟件進行電路的仿真。它運行與Windows操作系統(tǒng)上,可以繪制電路原理圖,仿真、分析各種模擬器件和集成電路,支持主流單片機系統(tǒng)和多種外圍芯片的仿真,提供軟件調(diào)試功能,支持第三方的軟件編譯和調(diào)試環(huán)境[4]。3系統(tǒng)硬件設計3.18*8LED點陣的原理說明 ARK-SZ411288K是本次課程設計所選用的點陣顯示模塊。它是一個8*8的點陣顯示模塊,總共由64個發(fā)光二極管組成,且每個發(fā)光二極管都處于行線和列線的交點上。當相對應的某一列置1電平,某一行置0電平,則位置所對應的二極管就變亮。值得一說的是,ARK-SZ411288K能夠與CPU直接連接,再根據(jù)其引腳說明,將其各個引腳與相對應的I/O口相連。3.2LED陣列驅(qū)動電路基于單片機的貪吃蛇設計全文共23頁,當前為第7頁。至少需要10~20mA的電流才能正向地點亮一顆LED,如果通過的電流不足夠大,那么LED所發(fā)出的光就比較暗。而無論是89C51單片機的I/O口,或是TTL、CMOS的輸出,高輸出電流并不是很高,才不過1~2毫安,故而,很難直接地對LED高態(tài)驅(qū)動。在這種時候,我們就需要增加額外的輔助驅(qū)動電路,本次課程設計選用的是74HC595,采用74HC595芯片來驅(qū)動LED可以有以下幾個優(yōu)點:速度快,功耗小,LED的數(shù)量隨意。既能夠控制LED的共陰極顯示器,也可以控制LED的共陽極顯示器,同時,還可以通過軟件來控制LED的亮度,并且在需要的時候,能夠關斷顯示,從而降低功耗,還能夠隨時喚醒顯示。采用74HC595設計的電路,軟硬件設計都相對比較簡單,而且功耗較低,驅(qū)動能力較強,所占用的I/O口線較少,成本較低,是一種應用十分靈活的設計方案?;趩纹瑱C的貪吃蛇設計全文共23頁,當前為第7頁。系統(tǒng)采用的硬件設備主要包括51系列單片機,8*8點陣屏等。51系列單片機采用了飛利浦(PHILIPS)公司生產(chǎn)的型號為P87C51RD2的低功耗高性能的CMOS型8位單片機。選擇它是因為,它內(nèi)置了64Kbytes的OTP只讀程序存儲器(RAM)和1Kbytes的隨機存取數(shù)據(jù)存儲器(RAM),能滿足游戲?qū)Υ鎯臻g的要求。另外配備了32個可編程的I/O端口,3個16位定時器/計數(shù)器,一個7中斷源4優(yōu)先級嵌套中斷結(jié)構(gòu),一個全雙工串行通信口,片振蕩器及時鐘電路[5]74HC595里含有串/并出移位寄存器和三態(tài)輸出鎖存器。寄存器和鎖存器有著各自的時鐘輸入(SCLK和SLCK),它們有效電平都是上升沿。當SCLK由低電平跳向高電平時,串行輸入數(shù)據(jù)(SDA)移入寄存器;當SLCK由低電平跳變?yōu)楦唠娖綍r,鎖存器將寄存器的數(shù)據(jù)置入。清除端(CLR)的低電平只對寄存器復位(QS為低電平),而對鎖存器無影響。當輸出允許控制(EN)為高電平時,并行輸出(Q0~Q7)為高阻態(tài),而串行輸出(QS)不受影響。74HC595最多需要5根控制線,即SDA、SCLK、SLCK、CLR和EN。其中,CLR能夠直接接到高電平,并且用軟件可以實現(xiàn)寄存器的清零;若是不需要用軟件改變亮度,則EN可以直接接到低電平,使用硬件來改變亮度。將余的三根線與單片機的I/O口相連,能夠控制LED。數(shù)據(jù)SDA口送入74HC595,在每個SCLK的上升沿,SDA口上的數(shù)據(jù)移入寄存器,在SCLK的第9個上升沿,數(shù)據(jù)開始從QS移出。如果把第二個74HC595的SDA和第一個74HC595的QS連接,數(shù)據(jù)移動到第二個74HC595中,按照此方法,逐次接下去,能夠接任意多個。所有的數(shù)據(jù)發(fā)送完畢后,給SLCK一個上升沿,將寄存器中的數(shù)據(jù)送入鎖存器中。如果EN為低電平,數(shù)據(jù)即從并口Q0~Q7輸出,把Q0~Q7與LED的8段相接,LED就可以實現(xiàn)顯示了。要想軟件改變LED的亮度,只需改變EN的占空比就行了[6]。其中,點陣的亮度可以使用改變輸入電壓來改變[7]。4系統(tǒng)軟件設計4.1系統(tǒng)主要模塊介紹基于單片機的貪吃蛇設計全文共23頁,當前為第8頁。貪吃蛇操作過程中有多種狀態(tài),采用宏定義,使各種狀態(tài)一目了然,思路清晰。同時再編寫代碼時,采用匈牙利命名規(guī)則命名宏,變量,函數(shù)名,方便閱讀修改[8]。基于單片機的貪吃蛇設計全文共23頁,當前為第8頁。4.1.1主函數(shù)模塊作為程序運行時縮影一般的存在,主函數(shù)是一個無限在循環(huán)的程序。它所需要完成的是對一系列硬件軟件的初始化,并且利用定時中斷來控制游戲的時鐘,還要調(diào)用其他模塊以完成按鍵的處理和蛇的運動。4.1.2按鍵模塊按鍵模塊包括兩個部分:按鍵檢測模塊和按鍵處理模塊。按鍵檢測模塊初始化按鍵對應的管腳,利用查詢方式檢測按鍵對應的變量值改變。按鍵處理模塊針對不同狀態(tài)下,對按鍵做出不同的處理。4.1.3蛇運動控制模塊該模塊負責控制蛇的運動和狀態(tài),包括在剛開始游戲時對蛇進行初始化,蛇運動時對蛇移動的處理,蛇吃掉出現(xiàn)的食物后的處理。4.2主程序工作流程系統(tǒng)中的應用軟件是根據(jù)系統(tǒng)功能要求設計的。按軟件的功能來分,可分為執(zhí)行軟件和監(jiān)控軟件。執(zhí)行軟件可以完成各種實質(zhì)性的功能,如測量、計算、顯示。打印、輸出、控制等;監(jiān)控軟件是專門用來協(xié)調(diào)各執(zhí)行模塊和操作者的關系,在系統(tǒng)軟件中充當組織調(diào)度角色。在軟件設計上,通常要考慮如下幾個方面問題:1.根據(jù)軟件的功能要求,將系統(tǒng)軟件分為幾個相對獨立的部分。整體結(jié)構(gòu)設計合理,明確,軟件開發(fā)簡單,還有合理的工作流程。2.每個功能程序要實現(xiàn)模塊化、子程序化。不僅方便調(diào)試,連接,也能方便移植和修改。3.編寫應用軟件之前,要先繪制出程序流程圖。4.要合理分配系統(tǒng)資源。C語言是一種結(jié)構(gòu)化的高級語言,其優(yōu)點是可讀性好,移植容易[9],是普遍使用的一種計算機語言。具體的實施步驟為:1.明確控制要求,繪制電路原理圖。2.參考相關文獻,檢查電路圖是否正確。3.根據(jù)電路原理圖焊接電路板,嘗試制作貪吃蛇模型。4.分析操作流程,繪制程序流程圖。5.編寫程序代碼,不斷改善。6.運用已學軟件,對程序進行初步調(diào)試。7.配合貪吃蛇硬件部分,并努力完善其功能,以達到設計要求?;趩纹瑱C的貪吃蛇設計全文共23頁,當前為第9頁。主程序工作流程如圖1所示:基于單片機的貪吃蛇設計全文共23頁,當前為第9頁。 圖1貪吃蛇流程圖系統(tǒng)上電后,首先初始化LED,然后初始化定時器,同時啟動定時器,再然后執(zhí)行程序主體邏輯,程序主體邏輯經(jīng)過一遍執(zhí)行后,立即檢查有無中斷發(fā)生。該游戲的中斷源有兩個,一個是定時器中斷驅(qū)動蛇自動向前,另一個是用戶通過控制按鍵來控制貪吃蛇移動的中斷,二者中任意一個中斷的發(fā)生都能夠使蛇的當前狀態(tài)發(fā)生改變。如果沒有中斷產(chǎn)生,主程序則繼續(xù)判斷蛇身是否相撞或者蛇頭是否碰到主屏幕;只要滿足以上所說任意條件,則表示結(jié)束游戲,不然游戲繼續(xù)執(zhí)行主體循環(huán)?;趩纹瑱C的貪吃蛇設計全文共23頁,當前為第10頁。該程序的入口地址是Main()函數(shù),從執(zhí)行程序的功能開始,將各個模塊串聯(lián)起來,以實現(xiàn)游戲的各種功能。首先完成軟件硬件的初始化任務然后進入一個循環(huán),反復檢測有無按鍵、處理按鍵、處理蛇運動、處理時鐘節(jié)拍這四件事情[10]。基于單片機的貪吃蛇設計全文共23頁,當前為第10頁。4.3游戲設計思想按設計要求可以得出,游戲的核心是解決LED顯示屏的顯示和蛇身的運動處理的問題。將貪吃蛇的每一節(jié)蛇身大小定義為一個單位矩陣,食物大小與一節(jié)蛇身大小相同,也是一個單位矩陣。當蛇開始運動時,需要解決以下幾個問題:1.蛇身的運動處理。用戶每按下一個鍵,蛇身都將開始進行柔體運動。所謂的柔體運動,就是指蛇的運動并不與整條蛇的運動方向一致,而是指在每個時鐘到來時,由蛇頭帶動每一個點陣的方向向下一個點陣傳播,然后自己向新的方向運動一步。運動之后,下一個點陣就得到了上一個點陣的方向,然后按照上一個方向運動同樣的一步。因此,它能夠立即填補上一點的位置,如此類推。在實際設計蛇運動的時候,我們需要把貪吃蛇蛇尾的那個點陣給去掉,然后在蛇頭的新方向上放一個點陣。所以,一個函數(shù)的定義是用來更新一個點的坐標,只要確定蛇頭或蛇尾的坐標還有其運動的方向,我們就可以調(diào)用此函數(shù)來更新蛇頭或蛇尾的坐標。與此同時,調(diào)用有關的顯示函數(shù)來達到對蛇運動處理的效果。2.在吃到食物后對蛇的處理。蛇頭和食物坐標相同時,則表示貪吃蛇吃到食物。如果吃到了食物,那么就在蛇頭的位置加上一個單位點陣,同時需要立即再更新下一個食物的坐標。3.隨機放置新的食物。貪吃蛇吃掉食物后,我們通過更新食物的坐標來產(chǎn)生新的食物。在放置食物時,我們需要調(diào)用一個判斷函數(shù)來判斷產(chǎn)生的新食物的坐標與蛇身是否重疊,如果重疊了,那么則需要重新放置,然后再重新判斷,直到產(chǎn)生的新的食物和蛇身坐標不相互重疊為止。4.死亡處理。蛇在運動時,如果蛇頭碰到顯示屏邊框或是蛇身,那就表示游戲結(jié)束了。4.4LED點陣初始化初始化LED點陣,就是把點陣內(nèi)所含有的全部信息清除,讓其沒有任何信息,內(nèi)部變空,然后在事先所指定的位置處顯示蛇的初始位置和食物的初始位置。初始化程序如下: voidInit() { for(i=3;i<SNAKE+1;i++) //SNAKE是蛇的最大長度 x[i]=100; for(i=3;i<SNAKE+1;i++) y[i]=100; //初始化 x[0]=4;y[0]=4;//果子 n=3;//蛇長n=-1 x[1]=1;y[1]=0;//蛇頭基于單片機的貪吃蛇設計全文共23頁,當前為第11頁。 x[2]=0;y[2]=0;//蛇尾1基于單片機的貪吃蛇設計全文共23頁,當前為第11頁。 addx=0;addy=0;//位移偏移 }4.5貪吃蛇的移動當食物沒有被蛇吃掉時,每前進一個單位點陣,蛇頭所要到的下一個單位點陣(即LED燈)變亮,相應地,蛇尾的那個LED燈就會熄滅。設計程序時,我們只需要把蛇尾那個點陣的坐標傳給蛇頭下一個點陣的坐標,然后再改變蛇尾的值就可以了。而蛇頭的下一個位置是根據(jù)蛇頭和偏移量來決定的,每次四個方向按鍵決定了蛇運動的偏移量,將蛇頭的位置加上偏移量的值就能夠得到新的蛇頭地位置。當蛇頭碰到周圍的屏幕邊框或者碰到自己的身體時,就表示蛇死了,并且游戲就此結(jié)束。其中游戲暫停的處理是通過關閉定時器2實現(xiàn)的[11-13]。4.6食物的隨機出現(xiàn)我們需要保證食物的出現(xiàn)是隨機的,此時就需要調(diào)用一個隨機函數(shù),而且還要保證食物出現(xiàn)的位與蛇的位置不同,即不能重疊,也不能超出點陣屏外,不然就需要重新確定食物的位置。在這里,我們采用程序中的定時計數(shù)器中的低八位TL0的數(shù)值,因為TL0在不斷地變化,所以在不同的時間點所產(chǎn)生的數(shù)值也不同,在這里使用C++語言中的stdlib.h文件庫,調(diào)用里面的隨機函數(shù)srand(),先用srand(TL0)獲得TL0的數(shù)值,再用rand()%8兩次,分別得到食物出現(xiàn)時的橫坐標和縱坐標。5聯(lián)調(diào)與測試5.1軟件調(diào)試基于單片機的貪吃蛇設計全文共23頁,當前為第12頁。使用uVision3作為該程序的軟件編譯器。在打開uVision3來編寫此程序時,由于uVision3通常只能改正語法上的錯誤,不好檢查算法上的問題,直接下到單片機里又會受到電路板的限制使得調(diào)試不方便,因此這里使用Proteus進行電路仿真。在實際操作時,我們可以先用Proteus軟件,在上面畫出硬件電路,當設計完電路后就可以進行下一步地仿真。先用鼠標雙擊單片機,再把用uVision3軟件編譯產(chǎn)生的.HEX文件設定為下載文件,點擊左下方的PLAY鍵就可以開始進行仿真了,按上下左右?guī)讉€方向鍵就可以完全控制蛇的運動方向,注意蛇的運動狀態(tài),保證其不碰觸蛇身還有點陣屏即可。當仿真出現(xiàn)ANALYSERERRORS時,就表示此時的電路有錯誤,下面的列表中詳細說明了是哪有錯誤,然后根據(jù)提示進行排錯,接著再進行仿真。當仿真完成后,就標志著這次設計已經(jīng)做的差不多了,大體框架已經(jīng)形成了。本設計仿真效果如圖2所示?;趩纹瑱C的貪吃蛇設計全文共23頁,當前為第12頁。 如圖2仿真圖在Proteus軟件畫出原理圖后,將已編譯好的源代碼文件調(diào)入,可此時我們可以在原理圖中看到實物的模擬運行狀態(tài)和過程。通過實驗我們可以得出,在使用Proteus進行仿真成功后再進行動手操作,可以大大地提高設計單片機系統(tǒng)的效率。Proteus支持單片機匯編語言的編輯/編譯/源碼級仿真,內(nèi)帶AVR、PIC的匯編編譯器,也可以與第三方集成編譯環(huán)境(如IAR、Keil和Hitech)結(jié)合,進行高級語言的源代碼級仿真和調(diào)試[14]。因此,Proteus有較高的推廣利用價值[15]。5.2硬件調(diào)試基于單片機的貪吃蛇設計全文共23頁,當前為第13頁。軟件調(diào)試和Proteus仿真完成后,就可以對硬件進行安裝。該設計依據(jù)原先設計好的電路原理圖進行總體上的布置,也可以再畫出其PCB圖,然后用人工搭電路的方法來安裝硬件電路。電路安裝時,要考慮受熱、元件大小等多方面的影響,在使用電烙鐵時,應掌握好焊接的時間,電烙鐵停留的時間太短,焊錫不易完全熔化,形成“虛焊”,而焊接時間太長又容易損壞元器件,每一兩秒內(nèi)要焊好一個焊點,若沒完成,寧愿等一會兒再焊一次。其次芯片的擺置要方便連線,焊接時要先把芯片拔出,等線接好了再插上去。在焊接時要考慮電路的抗干擾能力同時要充分考慮電源對單片機的影響。每焊接完一個模塊,要用萬能表根據(jù)電路圖檢查有沒有接錯、短路等現(xiàn)象,確認正確后再繼續(xù)下一個模塊[16]?;趩纹瑱C的貪吃蛇設計全文共23頁,當前為第13頁。本實驗采用USB接口供電,通過USB,能夠使單片機更加穩(wěn)定,在正常的工作范圍內(nèi)使得其能夠更好的工作。實物圖如下圖3所示: 圖3貪吃蛇實物圖基于單片機的貪吃蛇設計全文共23頁,當前為第14頁。
基于單片機的貪吃蛇設計全文共23頁,當前為第14頁。 貪吃蛇實物圖基于單片機的貪吃蛇設計全文共23頁,當前為第15頁。
基于單片機的貪吃蛇設計全文共23頁,當前為第15頁。結(jié)論與展望本次設計是基于51單片機的貪吃蛇游戲,可以挖掘出單片機的性能,使其得到充分的發(fā)揮,而且此次設計還能體現(xiàn)出嵌入式系統(tǒng)節(jié)能、功耗低、便攜性好的特點,使人們的日常生活變得更加輕松快樂,使身心得到了解放。本論文按照設計完成了以下工作:根據(jù)實際要求,對系統(tǒng)的硬件電路進行設計。以AT89C51作為其控制核心,擴展外圍電路,加入8*8LED點陣模塊,還有按鍵模塊等構(gòu)成此款游戲的硬件系統(tǒng)。這款小游戲是所有小游戲中較為簡單的一個,可是我卻花了較長的時間,直到動手時才后悔上課時沒有認真聽老師講解,尤其是結(jié)構(gòu)體,還有指針的部分,腦子里完全沒有印象,算是一片空白,還好經(jīng)過這段時間的努力,總體來說,把相關的一些知識大概看了一遍,也基本都掌握了相關的知識,接著就開始編程,說實在的,編程真的是一件很枯燥無味的事,但是為了這次設計,還是不得不堅持,根據(jù)老師所介紹的模塊化思想,分步來編寫。而編程又是一件高精度、高模范化的事,對我來說,這簡直就是鍛煉我的意志,稍微有點疏忽都可能會影響到整個編程,整個牽一發(fā)而動全身,在這個時候認真、仔細就顯得十分重要了。剛開始編程的時候,一般都會覺得編程十分無聊,但是當程序運行成功時,心底所產(chǎn)生的那種滿足感和喜悅是用語言完全不能表達出來的,直接是無法比擬的。通過這次設計,充分讓我認識到學習應該要更加著重實踐,不能只是懂得理論,要懂得制定計劃,然后想辦法去實現(xiàn)計劃,最后要及時地克服心理上的不良情緒,保持樂觀積極的態(tài)度去完成自己的任務。基于單片機的貪吃蛇設計全文共23頁,當前為第16頁。
基于單片機的貪吃蛇設計全文共23頁,當前為第16頁。附錄A:系統(tǒng)原理圖基于單片機的貪吃蛇設計全文共23頁,當前為第17頁。
基于單片機的貪吃蛇設計全文共23頁,當前為第17頁。附錄B:系統(tǒng)PCB圖基于單片機的貪吃蛇設計全文共23頁,當前為第18頁。
附錄C:系統(tǒng)仿真圖基于單片機的貪吃蛇設計全文共23頁,當前為第18頁?;趩纹瑱C的貪吃蛇設計全文共23頁,當前為第19頁。
附錄D:系統(tǒng)實物圖基于單片機的貪吃蛇設計全文共23頁,當前為第19頁?;趩纹瑱C的貪吃蛇設計全文共23頁,當前為第20頁。基于單片機的貪吃蛇設計全文共23頁,當前為第20頁。附錄E:系統(tǒng)源程序#include<reg51.h>#defineucharunsignedchar#defineSNAKE20//最大長度#defineTIME50//顯示延時時間#defineSPEED40//速度控制//#definekeyenable1sbitkeyenable=P3^6; //方向使能/*sbitkeyx=P0^1; //左右sbitkeyy=P0^2; //上下 *///sbitup=P0^0;sbitup=P3^1;//downsbitdown=P3^3;sbitright=P3^4;sbitleft=P3^2;ucharx[SNAKE+1];uchary[SNAKE+1];uchartime,n,i,e;//延時時間,當前蛇長,通用循環(huán)變量,當前速度 charaddx,addy;//位移偏移量/********************延時程序*********************/voiddelay(charMS){charus,usn;while(MS!=0){usn=0;while(usn!=0){us=0xff;while(us!=0){us--;};usn--;}MS--;}}/*******************************************判斷碰撞*******************************************/bitknock(){bitk;k=0;if(x[1]>7||y[1]>7)k=1;//撞墻for(i=2;i<n;i++)if((x[1]==x[i])&(y[1]==y[i]))k=1;//撞自己returnk;}/*****************上下左右鍵位處理*****************/voidturnkey()//interrupt0using2{//up=1;基于單片機的貪吃蛇設計全文共23頁,當前為第21頁。if(keyenable)基于單片機的貪吃蛇設計全文共23頁,當前為第21頁。{if(left){addy=0;if(addx!=1)addx=-1;elseaddx=1;}if(right){addy=0;if(addx!=-1)addx=1;elseaddx=-1;}if(up){addx=0;if(addy!=-1)addy=1;elseaddy=-1;}if(down){addx=0;if(addy!=1)addy=-1;elseaddy=1;}/*if(keyy){addy=0;//左右if(keyx)if(addx==-1)addx=-1;elseaddx=1;//左elseif(addx==1)addx=1;elseaddx=-1;//右}else{addx=0;//上下if(keyx)if(addy==1)addy=1;elseaddy=-1;//下elseif(addy==-1)addy=-1;elseaddy=1;//上 }*/}}/*****************乘方程序*****************/ucharmux(uchartemp){if(temp==7)return128;if(temp==6)return64;if(temp==5)return32;if(temp==4)return16;if(temp==3)return8;if(temp==2)return4;if(temp==1)retu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 開發(fā)需求委托合同(2篇)
- 建筑材料采購分包合同(2篇)
- 2024年注冊消防工程師題庫參考答案
- 二零二五年度汽車租賃擔保公司合同車輛作為抵押的擔保公司服務協(xié)議4篇
- 二零二五版特色小吃店轉(zhuǎn)讓與加盟協(xié)議4篇
- 二零二五年度智慧城市建設項目融資合同及違約賠償條款3篇
- 2025年度個人購房合同(含貸款及產(chǎn)權(quán)登記)4篇
- 平板燈施工方案
- 酸堿滅火器課程設計
- 2025年銷售合同臺帳模板(服裝行業(yè)專用)
- 2019級水電站動力設備專業(yè)三年制人才培養(yǎng)方案
- 室內(nèi)裝飾裝修施工組織設計方案
- 洗浴中心活動方案
- 送電線路工程施工流程及組織措施
- 肝素誘導的血小板減少癥培訓課件
- 韓國文化特征課件
- 抖音認證承諾函
- 清潔劑知識培訓課件
- 新技術知識及軍事應用教案
- 高等數(shù)學(第二版)
- 肺炎喘嗽的中醫(yī)護理常規(guī)
評論
0/150
提交評論