單片機貪吃蛇課程設計報告模板_第1頁
單片機貪吃蛇課程設計報告模板_第2頁
單片機貪吃蛇課程設計報告模板_第3頁
單片機貪吃蛇課程設計報告模板_第4頁
單片機貪吃蛇課程設計報告模板_第5頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

/電氣與信息工程學院單片機課程設計報告設計題目:基于單片機的貪吃蛇設計專業:學生姓名:班級:指導教師:成績:2016年11月22日設計任務及要求基本功能:制作一個8*8點陣的貪吃蛇游戲.系統以單片機的C語言的軟件設計.系統通過LED點陣屏為載體顯示數據.并用五個輸入端表示五個控制鍵〔上下左右及加速。系統硬件部分由STC89C52RC單片機.8*8點陣屏.5個按鍵.軟件部分在keil環境下用C51語言編寫.包括游戲初始化蛇的節數.以及障礙墻壁.游戲結束時自動復位。具體要求:1、用四個按鈕控制貪吃蛇的行徑.一個按鈕控制貪吃蛇的加速.蛇的初始長度為2點.設置墻壁。2、蛇吃到長度為1點的食物時.自身長度增加1點。2、速度按鈕帶有一次加速.按兩下速度按鈕蛇的行進速度回到初始值。3、當蛇碰到墻壁或自己的身體時游戲結束。4、用proteus設計.仿真基于STC89C52RC單片機的8x8點陣貪吃蛇的硬件電路。5、游戲結束.系統自動復位。硬件電路設計本系統以STC89C52RC為核心.設置12MHz的晶振.使得單片機有合理的運行速度。LED點陣屏通過LED<發光二極管>組成.以燈珠亮滅來顯示程序的運行情況.是模塊化的顯示組件.本設計采用8*8共陽紅色點陣顯示屏.用來顯示貪吃蛇的游戲畫面。五個獨立按鍵控制蛇的游走方向<上下左右>和加速減速的功能。貪吃蛇是一款經典的小游戲.玩家通過按鍵操控貪吃蛇不斷地吃食物.蛇身逐漸伸長.當蛇碰到蛇身和墻壁時游戲結束。需要注意的是實際元件中.點陣的封裝不盡相同.因此需要測試出每個引腳的功能.以便正確連線。注意.每個像素點的額定電壓在3v左右.電壓過大將會徹底損壞。系統軟件設計軟件方面采用了C51編寫代碼.代碼編寫模塊如下圖:核心代碼主要為游戲處理、信息處理和按鍵處理。編寫游戲的功能代碼.先定義游戲的數據結構和常量。其中食物的數據結構采用結構體定義.兩個unsignedchar變量分別定義為食物的橫縱坐標;蛇的身體定義為長度最大值為20的數組.游戲中貪吃蛇長度達到39.游戲通關結束。游戲處理模塊為貪吃蛇在游玩過程中遇到的需要被處理的情況.主要實現的功能包括以下四個方面.即移動、食物、死亡和加速。1、移動開始開始是否按下方向鍵將節點坐標覆蓋到前一節點蛇頭節點橫坐標對應加減蛇頭節點縱坐標對應加減按鍵的方向是水平結束NYNY游戲開始后.貪吃蛇在固定的周期內會向前移動一格.此時"貪吃蛇"身體從尾巴至頭部每一個后序節點會向前序節點移動.后序節點移動完畢后.頭部會根據此時按鍵的方向對相應的橫縱坐標進行加減。2、食物放置開始開始蛇頭與食物坐標重合創建新的食物蛇身節數+1創建是否成功顯示新的食物結束NNYY貪吃蛇向前移動后.此時要判斷蛇頭是否與食物的橫縱坐標一一對應.如果不是則退出該模塊.進入下一模塊;如果是.則貪吃蛇的節數增加一。隨后將進入創建新的食物模塊.為了避免食物與貪吃蛇的節點坐標重復.食物在創建后要與貪吃蛇的每個節點的坐標一一比較.如果重合則重新創建食物的坐標.直到創建成功為止。3、加速處理開始開始加速鍵是否按下蛇加速結束NY在游戲過程中.貪吃蛇的初始速度很慢.為了提高游戲娛樂性.設置獨立按鍵加速鍵.當按下加速鍵.則貪吃蛇的移動速度即時間間隔變短.使游戲更具有挑戰性.當再按下則恢復原來的速度。4、結束開始開始結束蛇的節數最大蛇頭碰到墻壁蛇頭碰到蛇身NNNYYY貪吃蛇在向前移動后.有可能撞到墻壁或自己的身體.也有可能吃到食物.或者只是向前移動一格.移動完畢后如果吃到了食物.如果貪吃蛇的節數達到了最大值.那么玩家將會通關游戲.并且游戲退出.此時需要判斷游戲是否結束.一共有三種判別.前兩種為失敗結局.即撞到了墻壁或自己的身體.最后一種為通關結局.游戲將初始化。源代碼如下:#include<reg51.h>#defineucharunsignedchar#defineSNAKE20#defineTIME50#defineSPEED80sbitup=P3^3;sbitdown=P3^1;sbitright=P3^2;sbitleft=P3^4;sbitspeedup=P3^5;sbitLATCH1=P3^6;sbitLATCH2=P3^7;ucharx[SNAKE+1];uchary[SNAKE+1];uchartime,n,i,e;unsignedcharconstseg[]={0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81};unsignedcharcodewei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};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;}voidgameOver<>{ while<!i==8> { P2=0x00;P1=0xff; LATCH1=1;LATCH1=0;P2=wei[i]; LATCH2=1;LATCH2=0; P1=seg[i]; delay<1000>; i++;}}voidturnkey<>{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<!speedup>{e=e-40; while<e<=39> e=SPEED; }}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>return2;if<temp==0>return1;return0;}voidtimer0<uchark>{while<k-->{for<i=0;i<SNAKE+1;i++>{P2=mux<x[i]>;P1=255-mux<y[i]>;turnkey<>;delay<TIME>;P2=0x00;P1=0xff;}}}voidmain<void>{e=SPEED;P0=0x00;P1=0xff;P2=0x00;P3=0xff;while<1>{for<i=3;i<SNAKE+1;i++>x[i]=100;for<i=3;i<SNAKE+1;i++>y[i]=100;x[0]=4;y[0]=4;n=3;x[1]=1;y[1]=0;x[2]=0;y[2]=0;addx=0;addy=0;while<1>{if<!left||!right||!up||!down>break;timer0<1>;}while<1>{timer0<e>;if<knock<>>{gameOver<>;e=SPEED;break;}if<<x[0]==x[1]+addx>&<y[0]==y[1]+addy>>{n++;if<n==SNAKE+1>{n=3;for<i=3;i<SNAKE+1;i++>x[i]=100;for<i=3;i<SNAKE+1;i++>y[i]=100;}x[0]=x[n-2];y[0]=y[n-2];}for<i=n-1;i>1;i-->{x[i]=x[i-1];y[i]=y[i-1];}x[1]=x[2]+addx;y[1]=y[2]+addy;}}}四、調試結果與分析結果:本次設計未能在硬件上調試成功.但在proteus上的仿真可以實現。程序軟件編譯器使用uVision4。在用uVision4編寫單片機程序時.因uVisio4往往只能修改語法上的錯誤.對于算法上的錯誤不好檢查.而直接下載到單片機中又受電路板的限制不方便調試.所以采用Proteus仿真。先在Proteus上繪制出硬件電路.電路設計完成后就可以進行仿真。先雙擊單片機.把用uVis

溫馨提示

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

評論

0/150

提交評論