創(chuàng)意貪吃蛇模型

一、硬件設(shè)計(jì) 1、8*8LED點(diǎn)陣的原理說(shuō)明 本設(shè)計(jì)采用的點(diǎn)陣顯示模塊是ARK-SZ411288K,其原理結(jié)構(gòu)圖如圖1所示。ARK-SZ411288K顯示模塊是8*8點(diǎn)陣的顯示模塊,從圖1中可以看出,8*8點(diǎn)陣共需要64個(gè)發(fā)光二極管組成,且每個(gè)發(fā)光二極管是放置在行線和列線的交叉點(diǎn)上,當(dāng)對(duì)應(yīng)的某一列置1電平,某一行置0電平,則相應(yīng)的 8*8LED點(diǎn)陣的原理圖 二極管就亮。ARK-SZ411288K可與CPU直接連接,根據(jù)引腳說(shuō)明,將其各個(gè)引腳與相應(yīng)的I/O口連接。 2、主程序工作流程 主程序工作流程如圖3所示,系統(tǒng)上電后首先對(duì)LED進(jìn)行初始化,接著對(duì)定時(shí)器初始化,并啟動(dòng)定時(shí)器,接著執(zhí)行程序主體邏輯,程序主體邏輯執(zhí)行一遍后檢查是否有中斷發(fā)生。中斷源有兩個(gè),一個(gè)是驅(qū)動(dòng)貪吃蛇自動(dòng)前行的定時(shí)中斷,另一個(gè)是用戶控制貪吃蛇移動(dòng)方向的鍵盤中斷,任意中斷的到來(lái)都將改變貪吃蛇的當(dāng)前狀態(tài)。若當(dāng)前沒(méi)有中斷發(fā)生,主程序繼續(xù)判斷蛇頭是否碰壁或頭尾相撞,若是,結(jié)束游戲,否則繼續(xù)執(zhí)行程序主體循環(huán)。 
主程序工作流程 3、LED點(diǎn)陣初始化 對(duì)點(diǎn)陣初始化,先把點(diǎn)陣所有的信息清空,讓其不顯示任何信息,再在指定的位置顯示蛇所處的最初位置和第一個(gè)果實(shí)的位置。初始化程序如下: - void Init()
- {
- for (i = 3; i < SNAKE + 1; i++) //SNAKE是蛇的最大長(zhǎng)度
- x[i] = 100;
- for (i = 3; i < SNAKE + 1; i++)
- y[i] = 100; //初始化
- x[0] = 4; y[0] = 4; //果子
- n = 3; //蛇長(zhǎng) n=-1
- x[1] = 1; y[1] = 0; //蛇頭
- x[2] = 0; y[2] = 0; //蛇尾1
- addx = 0; addy = 0; //位移偏移
- }
復(fù)制代碼
4、貪吃蛇的移動(dòng) 當(dāng)蛇沒(méi)有吃到任何食物時(shí),每次步進(jìn)蛇頭的將要到的下一個(gè)LED燈點(diǎn)亮,而蛇尾那個(gè)LED燈會(huì)滅掉,程序設(shè)計(jì)時(shí)只要將蛇尾那點(diǎn)位置的值傳給蛇頭下一個(gè)位置的值,再改變蛇尾的值即可。而蛇頭下一個(gè)位置根據(jù)蛇頭和偏移量來(lái)確定,每次上下左右按鍵決定了蛇步進(jìn)的偏移量,只要將蛇頭的位置加上偏移量的值即得到新的蛇頭位置。當(dāng)蛇頭碰到四周的墻壁或者碰到自己的身體,小蛇就立即斃命并結(jié)束游戲。
5、食物的隨機(jī)出現(xiàn) 食物的出現(xiàn)是一種隨機(jī)行為,所以必須做一個(gè)隨機(jī)數(shù),而且食物出現(xiàn)的位置不能與蛇的位置相同,也不能超出墻外,否則就要重置食物。這里使用程序中的定時(shí)計(jì)數(shù)器的低八位 TL0的數(shù)值,由于TL0不斷變化,不同的時(shí)間點(diǎn)數(shù)值不同,我這里使用的是C++語(yǔ)言里的stdlib.h文件庫(kù),使用里面的隨機(jī)函數(shù)srand(),先利用srand(TL0)獲得TL0的數(shù)值,再利用兩次rand()%8分別得到食物出現(xiàn)的橫縱坐標(biāo)的位置。
三、調(diào)試及仿真 先在Proteus上繪制硬件電路(并未畫出驅(qū)動(dòng)電路),電路設(shè)計(jì)完成后就可以進(jìn)行仿真。先雙擊單片機(jī),把用uVision3編譯生成的HEX文件指定為下載文件,點(diǎn)擊PLAY鍵即可進(jìn)行仿真。當(dāng)出現(xiàn)ANALYSER ERRORS時(shí),表示電路有錯(cuò)誤,列表中說(shuō)明了具體的錯(cuò)誤,必須要先排錯(cuò)才可以進(jìn)行仿真.
四、原理圖

五、程序代碼
全部資料51hei下載地址:
1095.doc
(158.5 KB, 下載次數(shù): 58)
2018-4-24 18:46 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
貪吃蛇.rar
(10.58 KB, 下載次數(shù): 87)
2018-4-25 03:13 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|