




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 基于51單片機(jī)與8*8點(diǎn)陣的貪吃蛇游戲機(jī)開(kāi)發(fā)目錄一、硬件設(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)COLPINROWNO.PINjN0._71二ATATJafl_AT_ATAT-上,當(dāng)對(duì)應(yīng)的某一列置1電平,某一行置0電平,則相應(yīng)的圖18*8LED點(diǎn)陣的原理圖二極管就亮。ARK-SZ411288K可與CPU直接連接,根據(jù)引腳說(shuō)明,將其各個(gè)引腳與相應(yīng)的I/O口連接。2、LE
2、D陣列驅(qū)動(dòng)電路正向點(diǎn)亮一顆LED,至少也得1020毫安,若電流不夠大,貝VLED不夠亮。而不管是8051的輸入/輸出口,還是TTL、CMOS的輸出端,其高態(tài)輸出電流都不是很高,不過(guò)12毫安而已,因此,很難直接高態(tài)驅(qū)動(dòng)LED。這時(shí)候就需要額外的驅(qū)動(dòng)電路,本設(shè)計(jì)采用的是74HC595,用74HC595芯片驅(qū)動(dòng)LED有以下特點(diǎn):速度較快,功耗較小,LED的數(shù)目多少隨意,既可以控制共陰極的LED顯示器,也可以控制共陽(yáng)極的LED顯示器,可以軟件控制LED的亮度,還可以在必要的時(shí)候關(guān)斷顯示(數(shù)據(jù)保留),以減小功耗,并可隨時(shí)喚醒顯示。用它設(shè)計(jì)的電路,不僅軟硬件設(shè)計(jì)簡(jiǎn)單,而且功耗低,驅(qū)動(dòng)能力強(qiáng),占用的I/O口
3、線較少,是一種造價(jià)低廉,應(yīng)用靈活的設(shè)計(jì)方案。物理與信息科學(xué)學(xué)院 QB1016QC2*15QD314QE芻74HC59513QF5QG611QH|7圖274HC595管腳圖1074HC595內(nèi)含8位串入、串/并出移位寄存器和8位三態(tài)輸出鎖存有各自的時(shí)鐘輸入(SCLK和SLCK),都是上升沿有效。當(dāng)SCLK從低VCC0AR(KSCKSCLR器。寄存器和鎖存器分別,串行輸入數(shù)據(jù)(SDA)移入寄存器;當(dāng)SLCK從低到高電平跳變時(shí),寄存器的數(shù)據(jù)置入鎖存器。清除端(CLR)的低電平只對(duì)寄存器復(fù)位(QS為低電平),而對(duì)鎖存器無(wú)影響。當(dāng)輸出允許控制(EN)為高電平時(shí),并行輸出(Q0Q7)為高阻態(tài),而串行輸出(
4、QS)不受影響。74HC595最多需要5根控制線,即SDA、SCLK、SLCK、CLR和EN。其中CLR可以直接接到高電平,用軟件來(lái)實(shí)現(xiàn)寄存器清零;如果不需要軟件改變亮度,EN可以直接接到低電平,而用硬件來(lái)改變亮度。把其余三根線和單片機(jī)的I/O口相接,即可實(shí)現(xiàn)對(duì)LED的控制。數(shù)據(jù)SDA口送入74HC595,在每個(gè)SCLK的上升沿,SDA口上的數(shù)據(jù)移入寄存器,在SCLK的第9個(gè)上升沿,數(shù)據(jù)開(kāi)始從QS移出。如果把第一個(gè)74HC595的QS和第二個(gè)74HC595的SDA相接,數(shù)據(jù)即移入第二個(gè)74HC595中,照此一個(gè)一個(gè)接下去,可接任意多個(gè)。數(shù)據(jù)全部送完后,給SLCK一個(gè)上升沿,寄存器中的數(shù)據(jù)即置入
5、鎖存器。此時(shí)如果EN為低電平,數(shù)據(jù)即從并口Q0Q7輸出,把Q0Q7與LED的8段相接,LED就可以實(shí)現(xiàn)顯示了。要想軟件改變LED的亮度,只需改變EN的占空比就行了1。二、軟件設(shè)計(jì)1、主程序工作流程主程序工作流程如圖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主程序工作
6、流程/SNAKE是蛇的最大長(zhǎng)度/初始化/果子/蛇長(zhǎng)n=-12、LED點(diǎn)陣初始化對(duì)點(diǎn)陣初始化,先把點(diǎn)陣所有的信息清空,讓其不顯示任何信息,再在指定的位置顯示蛇所處的最初位置和第一個(gè)果實(shí)的位置。初始化程序如下:voidInit()for(i=3;iSNAKE+1;i+)xi=100;for(i=3;iSNAKE+1;i+)yi=100;x0=4;y0=4;n=3;x1=1;y1=0;/蛇頭x2=0;y2=0;/蛇尾1addx=0;addy=0;/位移偏移3、貪吃蛇的移動(dòng)當(dāng)蛇沒(méi)有吃到任何食物時(shí),每次步進(jìn)蛇頭的將要到的下一個(gè)LED燈點(diǎn)亮,而蛇尾那個(gè)LED燈會(huì)滅掉,程序設(shè)計(jì)時(shí)只要將蛇尾那點(diǎn)位置的值傳給蛇
7、頭下一個(gè)位置的值,再改變蛇尾的值即可。而蛇頭下一個(gè)位置根據(jù)蛇頭和偏移量來(lái)確定,每次上下左右按鍵決定了蛇步進(jìn)的偏移量,只要將蛇頭的位置加上偏移量的值即得到新的蛇頭位置。當(dāng)蛇頭碰到四周的墻壁或者碰到自己的身體,小蛇就立即斃命并結(jié)束游戲。4、食物的隨機(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(TLO)獲得TL0的數(shù)值,再利用兩次r
8、and()%8分別得到食物出現(xiàn)的橫縱坐標(biāo)的位置。三、調(diào)試及仿真程序軟件編譯器使用uVision3。在用uVision3編寫單片機(jī)程序時(shí),因uVision3往往只能修改語(yǔ)法上的錯(cuò)誤,對(duì)于算法上的問(wèn)題不好檢查,而直接下到單片機(jī)里又受電路板的限制而不方便調(diào)試,因此這里使用Proteus進(jìn)行電路仿真。該軟件具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)仿真、RS232動(dòng)態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能,同時(shí)有各種虛擬儀器,如示波器、邏輯分析儀、信號(hào)發(fā)生器等。先在Proteus上繪制硬件電路(并未畫出驅(qū)動(dòng)電路),電路設(shè)計(jì)完成后就可以進(jìn)行仿真。先雙擊單片機(jī),把用
9、uVision3編譯生成的HEX文件指定為下載文件,點(diǎn)擊PLAY鍵即可進(jìn)行仿真。當(dāng)出現(xiàn)ANALYSERERRORS時(shí),表示電路有錯(cuò)誤,列表中說(shuō)明了具體的錯(cuò)誤,必須要先排錯(cuò)才可以進(jìn)行仿真。本設(shè)計(jì)仿真效果如圖4所示。SCTAL1C2X1CRYSTAL:TE:7I1-巴4TTZW空.-FZZh1Pg-5nP2-*pi.irrzBPZi.hWP2JA11P2.*/A12P3.&ViJHp.TiirrrP2.TW1SCT13工B33JbpP1J31HI2卩23+Pi*SP1S6riJ3F173pnu-ADoPn.1/AD1PnZfAD2pnjADiPD.AD*P口S*ADSPD.9AD6Pn.?/AD7
10、PUP=LZ.1PjP2p14?ZZF213PZ_i3*FZZ3PZ3UE:DP3.imDP32iTffTpPWTITTl-PZ5圖4系統(tǒng)測(cè)試效果圖軟件調(diào)試及Proteus仿真完成后就進(jìn)行硬件的安裝。本設(shè)計(jì)按照原先設(shè)計(jì)好的電路圖進(jìn)行總體上的布置,采用人工搭電路的方法進(jìn)行硬件的安裝。安裝時(shí)要考慮受熱、穩(wěn)固等多方面的影響使用電烙鐵時(shí)要控制好焊接的時(shí)間,電烙鐵停留的時(shí)間太短,焊錫不易完全熔化,形成“虛焊,”而焊接時(shí)間太長(zhǎng)又容易損壞元器件,每一兩秒內(nèi)要焊好一個(gè)焊點(diǎn),若沒(méi)完成,寧愿等一會(huì)兒再焊一次。其次芯片的擺置要方便連線,焊接時(shí)要先把芯片拔出,等線接好了再插上去。在焊接時(shí)要考慮電路的抗干擾能力同時(shí)要充
11、分考慮電源對(duì)單片機(jī)的影響。每焊接完一個(gè)模塊,要用萬(wàn)能表根據(jù)電路圖檢查有沒(méi)有接錯(cuò)、短路等現(xiàn)象,確認(rèn)正確后再繼續(xù)下一個(gè)模塊2。附錄:代碼#include#defineucharunsignedcharsbitdown=P3l;#defineSNAKE20/最大長(zhǎng)度#defineTIME50/顯示延時(shí)時(shí)間#defineSPEED71/速度控制sbitkeyenable=P36/方向使能sbitkeyy=P02;/上下*/sbitup=P33;/downsbitright=P32;sbitleft=P34;ucharxSNAKE+1;ucharySNAKE+1;uchartime,n,i,e;/延時(shí)時(shí)
12、間,當(dāng)前蛇長(zhǎng),通用循環(huán)變量,當(dāng)前速度charaddx,addy;/位移偏移量延時(shí)程序*/voiddelay(charMS)charus,usn;while(MS!=0)usn=0;while(usn!=0)us=0 xff;while(us!=0)us-;usn-;MS-;判斷碰撞g/bitknock()bitk;k=0;if(x17|y17)k=1;/撞墻for(i=2;in;i+)if(x1=xi)&(y1=yi)k=1;/撞自己returnk;/*上下左右鍵位處理*/voidturnkey()/interrupt0using2if(keyenable)if(left)addy=0;if(
13、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;/*乘方程序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
14、;if(temp=1)return2;if(temp=0)return1;return0;/*顯示時(shí)鐘顯示程序voidtimer0(uchark)while(k-)for(i=0;iSNAKE+1;i+)P2=mux(xi);P1=255-mux(yi);turnkey();/上下左右鍵位處理/顯示延遲delay(TIME);P2=0 x00;P1=0 xff;/*主程序voidmain(void)e=SPEED;P0=0 x00;P1=0 xff;P2=0 x00;P3=0 x00;while(1)/if(keyenable=1)P1=0 x00;P2=0 xff;elseP1=0 xff;P2=0 x00;for(i=3;iSNAKE+l;i+)xi=100;for(i=3;iSNAKE+l;i+)yi=100;/初始化/果子/蛇長(zhǎng)n=-1/蛇頭/蛇尾1/位移偏移x0=4;y0=4;n=3;x1=1;y1=0;x2=0;y2=0;addx=0;addy=0;/k=1;while(1)if(key
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 商品房預(yù)售抵押合同
- 筒倉(cāng)鋼管樓梯施工方案
- 變壓器采購(gòu)合同采購(gòu)合同
- 商鋪物業(yè)服務(wù)合同
- 酒店裝修改造施工方案
- 外墻面鋁鋼板加固施工方案
- 2025屆甘肅省蘭州市部分學(xué)校高三一模地理試題(原卷版+解析版)
- 計(jì)劃生育手術(shù)器械項(xiàng)目風(fēng)險(xiǎn)識(shí)別與評(píng)估綜合報(bào)告
- 2025年人力資源制度:04 -藝人簽約合同書
- 高考英語(yǔ)作文練習(xí)紙(標(biāo)準(zhǔn)答題卡)
- 教科版二年級(jí)科學(xué)下冊(cè)(做一個(gè)指南針)教育教學(xué)課件
- GB/T 19519-2014架空線路絕緣子標(biāo)稱電壓高于1 000 V交流系統(tǒng)用懸垂和耐張復(fù)合絕緣子定義、試驗(yàn)方法及接收準(zhǔn)則
- GB/T 14996-2010高溫合金冷軋板
- 用地性質(zhì)分類表
- 電子技術(shù)基礎(chǔ)(數(shù)字部分 第五版 康華光)華中科大課件 第
- 公路工程概論全套課件
- 缺血性卒中和短暫性腦缺血發(fā)作的二級(jí)預(yù)防課件
- 貫入法砌筑砂漿抗壓強(qiáng)度檢測(cè)記錄
- 中醫(yī)外科學(xué)瘡瘍課件
- 互通立交的安全性評(píng)價(jià)要點(diǎn)與案例介紹
評(píng)論
0/150
提交評(píng)論