單片機應用進階--俄羅斯方塊游戲板--開發(fā)詳細介紹-經(jīng)典開發(fā)流程.ppt

上傳人:w****2 文檔編號:17806219 上傳時間:2020-12-07 格式:PPT 頁數(shù):46 大?。?.95MB
收藏 版權(quán)申訴 舉報 下載
單片機應用進階--俄羅斯方塊游戲板--開發(fā)詳細介紹-經(jīng)典開發(fā)流程.ppt_第1頁
第1頁 / 共46頁
單片機應用進階--俄羅斯方塊游戲板--開發(fā)詳細介紹-經(jīng)典開發(fā)流程.ppt_第2頁
第2頁 / 共46頁
單片機應用進階--俄羅斯方塊游戲板--開發(fā)詳細介紹-經(jīng)典開發(fā)流程.ppt_第3頁
第3頁 / 共46頁

下載文檔到電腦,查找使用更方便

9.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《單片機應用進階--俄羅斯方塊游戲板--開發(fā)詳細介紹-經(jīng)典開發(fā)流程.ppt》由會員分享,可在線閱讀,更多相關(guān)《單片機應用進階--俄羅斯方塊游戲板--開發(fā)詳細介紹-經(jīng)典開發(fā)流程.ppt(46頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、基于 8052單片機和 8 16點陣屏 俄羅斯方塊游戲板 點擊圖片進入 Step 1.硬件構(gòu)成 介紹游戲板所用主要器件及其要實現(xiàn)的功能 1.1 核心處理器 -STC80C52RC 1.2 8x8單色點陣 -LG12088BH-W 1.3 4-to-16 Line Decoder-MM74HC154 1.4 四位八段共陽數(shù)碼管 -LG5641BH 1.5 同向鎖存器 -SN74HC573AN 1.6 開關(guān)按鍵 1.7 焊接實物圖: Step 2.仿真軟件輔助設計 Proteus 7.10仿真模塊展示 Step 3.C程序模塊簡要說明 開發(fā)概覽 Step 1.硬件構(gòu)

2、成及功能簡介 1.核心處理器 STC80C52RC 8051-based Fullly Static 24MHz CMOS controller with 32 I/O Lines 3 Timers/Counters 8 Interrupts/2 Priority Levels UART Three-Level Program Memory Lock 8K Bytes Flash Memory 128 Bytes On-chip RAM 功能:整個游戲板的控制中心 1.核心處理器 最小系統(tǒng)電路 12MHz晶振 RC復位電路 5V直流電源

3、Step 1.硬件構(gòu)成及功能簡介 2.8x8單色點陣 LG12088BH-W 主要參數(shù) 驅(qū)動電流: 20 5mA 顏色:紅色 規(guī)格: 8 8黑底 數(shù)量: 2 信號源:由譯碼器提供 16行掃描信號,由鎖存器提供 8位 顯示信號和驅(qū)動電流。 功能:提供 8 16個像素點的顯示屏,為游戲提供必要的 圖形顯示模塊。 Step 1.硬件構(gòu)成及功能簡介 3.4-to-16 Line Decoder MM74HC154 關(guān)鍵參數(shù) 真值表 引腳圖 Step 1.硬件構(gòu)成及功能簡介 3.4-to-16 Line Decoder 信號源: P2低四位 (

4、P1.0至 P1.3),使能 E1接 P2.7, E2接地 功能:為 8 16點陣提供 16行低電平掃描信號。 Step 1.硬件構(gòu)成及功能簡介 4.四位八段共陽數(shù)碼管 LG5641BH 主要參數(shù): 驅(qū)動電流: 10mA左右 信號源:用兩塊鎖存器分別控制位選信號和段選信號。 功能:為游戲板提供必要的分數(shù)顯示模塊。 Step 1.硬件構(gòu)成及功能簡介 5.同向鎖存器 SN74HC573AN 關(guān)鍵參數(shù) 真值表: 引腳圖: 驅(qū)動性:可驅(qū)動數(shù)碼管和點陣正常點亮 數(shù)量: 3塊 Step 1.硬件構(gòu)成及功能簡介 5.同向鎖存器 . 作為點陣顯示信號輸送和驅(qū)動

5、的鎖存器 (一塊 ) 信號源:單片機 P3I/O 功能:給點陣送顯示信號并提供驅(qū)動電流。 (LE接地 ) Step 1.硬件構(gòu)成及功能簡介 5.同向鎖存器 . 作為 P0口拓展和數(shù)碼管位選、段選信號輸送以及驅(qū)動 電流提供鎖存器 (兩塊 )。 信號源:單片機 P0口 (已上拉 10K電阻 )。 兩個鎖存控制端接在單片機 P2口。 功能:為數(shù)碼管送入段選信號和位選信號,提供電流驅(qū)動 Step 1.硬件構(gòu)成及功能簡介 6.開關(guān)按鍵 一個自鎖開關(guān):用作整個游戲板的開關(guān) (帶發(fā)光二極管 )。 六個按鍵:一個用作復位鍵,其余五個用作人為

6、控制輸入。 信號源:人為擊按。 功能: Start/Suspend鍵:游戲開始和暫??刂? Up鍵:控制形狀逆時針旋轉(zhuǎn) Left和 Right鍵:控制形狀左右移動一格 Down鍵:控制形狀快速下降 Step 1.硬件構(gòu)成及功能簡介 焊接實物圖: Step 1.硬件構(gòu)成及功能簡介 點陣和單片機正面 點陣和單片機反面 焊接實物圖: Step 1.硬件構(gòu)成及功能簡介 數(shù)碼管正面 數(shù)碼管反面 焊接實物圖: Step 1.硬件構(gòu)成及功能簡介 程 序 運 行 時 狀 態(tài) Proteus 7.10仿真模塊展示 單片機最小系統(tǒng)模塊 按鍵模塊 St

7、ep 2.仿真軟件輔助設計 Proteus 7.10仿真模塊展示 點陣顯示模塊 Step 2.仿真軟件輔助設計 Proteus 7.10仿真模塊展示 四位數(shù)字顯示模塊 Step 2.仿真軟件輔助設計 Proteus 7.10仿真模塊展示 仿真運行時 Proteus設計文件 視頻文件 Step 2.仿真軟件輔助設計 視頻文件 資料 簡單的操作示意 .avi Proteus設計文件 俄羅斯方塊 -高度仿真版 .DSN 詳細內(nèi)容見附件 Step 3.C程序模塊簡要說明 附件 1:Keil工程文件夾 俄羅斯方塊 keil文件 附件 2:C51程序文件 elsfk

8、.c 附件 3:C51程序文件 word版 俄羅斯方塊 C程序 .doc /***************************************************************************************** 名稱: 基于 8052單片機和 8X16點陣屏俄羅斯方塊游戲板 時間: 2012年 05月 23日 17時 單位:武漢理工大學信息學院電子 1003班 作者:電子那點事(新浪微博賬號,歡迎關(guān)注) *******************************************************************

9、**********************/ #include #include #include #define uchar unsigned char sbit slock=P27; //譯碼器輸出使能端 sbit upkey=P23; //“旋轉(zhuǎn)圖形 /向上 ” 按鍵 sbit leftkey=P21; //“左移 /向左 ” 按鍵 sbit rightkey=P22; //“右移 /向右 ” 按鍵 sbit downkey=P20; //“快速下移 /向下 ” 按鍵 sbit duan=P25; //數(shù)碼管段選信號所用鎖存器的鎖存允許端 sbit wei=P26; //數(shù)

10、碼管位選信號所用鎖存器的鎖存允許端 sbit startsuspendkey=P24; //“開始 /暫停 /繼續(xù) ” 多功能切換按鍵 Step 3.C程序模塊簡要說明 /***********************************圖形編碼機制介紹 ************************************** 1.由于俄羅斯方塊圖形的寬度和高度最多只有四位,所以要以 4X4為基本單元。 2.硬件采用 16行掃描、 8位送顯示信號 3.各個圖形的寬度不一致,所以要人為給圖形設定居中位置。 若圖形寬度為偶數(shù)可直接將其居中,若為奇數(shù)則靠左居中。 4.由于圖形

11、需要旋轉(zhuǎn),所以由基本的圖形會衍生出另外 3種圖形。 5.因此每個圖形應該給定 4個 8位的二進制碼,并放入一個二維數(shù)組里。 6.經(jīng)典俄羅斯方塊游戲里有 19種不同形狀的方塊,包括旋轉(zhuǎn)得到的。 7.數(shù)組的第一個下標為該圖形的編號 *****************************************************************************************/ uchar code allshape194= 0 x00,0 x00,0 x18,0 x18,0 x10,0 x10,0 x10,0 x10,0 x00,0 x00,0 x00,0

12、 x3c, 0 x00,0 x08,0 x18,0 x10,0 x00,0 x00,0 x30,0 x18,0 x00,0 x10,0 x18,0 x08, 0 x00,0 x00,0 x18,0 x30,0 x00,0 x08,0 x08,0 x18,0 x00,0 x00,0 x38,0 x08, 0 x00,0 x18,0 x10,0 x10,0 x00,0 x00,0 x20,0 x38,0 x00,0 x10,0 x10,0 x18, 0 x00,0 x00,0 x08,0 x38,0 x00,0 x18,0 x08,0 x08,0 x00,0 x00,0 x38,0 x20

13、, 0 x00,0 x00,0 x10,0 x38,0 x00,0 x08,0 x18,0 x08,0 x00,0 x00,0 x38,0 x10, 0 x00,0 x10,0 x18,0 x10; /****************************************************************************************/ Step 3.C程序模塊簡要說明 //數(shù)碼管數(shù)形顯示編碼 uchar code number10=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0

14、x90; //位選信號編碼,方便寫循環(huán)使用 uchar code weima4=0 x01,0 x02,0 x04,0 x08; //各個圖形的寬度屬性,用于判斷左移和右移的步格數(shù)上限 char shapewidth19=2,1,4,2,3,2,3,2,3,2,3,2,3,2,3,3,2,3,2; //旋轉(zhuǎn)圖形時,用于改變圖形的編號以實現(xiàn)圖形的切換 char shaperotate19=0,2,1,4,3,6,5,8,9,10,7,12,13,14,11,16,17,18,15; //用于存儲方塊降落后固定顯示的圖形信息 uchar staticdata20=0,0,0,0,0,0,

15、0,0,0,0,0,0,0,0,0,0,0,0,0,0 xff; //規(guī)定一次性消掉的行數(shù)的分數(shù)獎勵機制 uchar rate5=0,1,3,6,10; /****************************************************************************************/ Step 3.C程序模塊簡要說明 /*************************************全局變量聲明 ***************************************/ char y;//方塊位置屬性:底部

16、下落的高度, y=0時:剛剛出現(xiàn), y=15時:下落到屏幕最底部 char shapenum;//方塊形狀屬性:從 0到 18 int left; //方塊位置屬性:方塊偏離居中位置的格數(shù),不同的方塊 left值的上限不同 int mark; //玩家分數(shù)變量 int speed; //方塊下落速度變量 int initialspeed;//方塊下落的初始速度 int systemspeed;//系統(tǒng)下落速度,此值會隨著玩家分數(shù)的增加而減小,相應的下落速度會增大 int fastspeed;//當用戶按下 down鍵時,方塊下落速度為此值 int k;//一個全局循環(huán)變量, “

17、幀數(shù) ” 變量 int startcontrol=1;//開始畫面狀態(tài)指示變量,為 1時說明程序進入開機歡迎界面 int suspendcontrol=0;//游戲暫停與游戲繼續(xù)畫面狀態(tài)指示變量,為 1說明處在暫停界面。 int randnum;//隨機數(shù)變量,用于產(chǎn)生隨機方塊 /****************************************************************************************/ Step 3.C程序模塊簡要說明 /****************************************函數(shù)聲明 *

18、***************************************/ void delayms(int); //粗略延時函數(shù) uchar move(uchar,int);//對二進制碼實行移位,可為負值 void shapedisplay(); //對點陣掃描一場,對數(shù)碼管掃描一場,用于顯示圖形和數(shù)字 void keyscan();//對所有鍵盤掃描一次,并執(zhí)行相應運算和操作 uchar check(char,int);//用于檢查方塊將要下落的位置或是將要旋轉(zhuǎn)的位置是否有障礙 uchar shapedisappear();//用于消行,返回一次性消掉的行數(shù) numbe

19、rdisplay(int amark);//用于四位數(shù)字顯示 void startimage();//游戲等待開始畫面函數(shù) void overimage();//游戲結(jié)束后的畫面 void dataset();//對數(shù)據(jù)初始化,為游戲重新開始做準備 /****************************************************************************************/ Step 3.C程序模塊簡要說明 /*****************************************主函數(shù) ****************

20、*************************/ void main() char j; startimage(); //進入開機,函數(shù)內(nèi)有鍵盤掃描,只有按下 “ 開始 ” 鍵會退出函數(shù),否則不退 出 dataset(); //對數(shù)據(jù)進行初始化 while(1) //進入大循環(huán) k=speed; //確定顯示的幀數(shù) while(k--) keyscan(); //掃描鍵盤,放入高速循環(huán)語句中提高鍵盤的響應速度, 并檢測此時用戶是否有相應請求 shapedisplay(); //顯示圖形和數(shù)字 y++; //圖形下落一格 Step 3.C程序模塊簡要說明

21、 if(check(shapenum,left)) //在沒有顯示之前判斷將要下落的位置是否 有障礙物,如果有障礙就進入到 if語句中 if(y==1) //如果 y=1;說明方塊剛出現(xiàn)就遇到障礙物了, 這時游戲需結(jié)束 overimage(); //進入游戲結(jié)束畫面,此函數(shù)內(nèi)沒有鍵盤掃 描,運行一段時間會自動退出 startimage(); //又進入開機畫面 dataset(); //對數(shù)據(jù)進行初始化,將前一用戶數(shù)據(jù)清零 else //遇到障礙物,但還不至于圖形不能出現(xiàn) for(j=0;j0;i--) for(j=110;j0;j--); /*

22、***************************************************************************************/ uchar move(uchar aa,int anum) //移位函數(shù) if(anum=0) aa<=(-anum); return aa; /****************************************************************************************/ Step 3.C程序模塊簡要說明 void shapedisplay()

23、//顯示函數(shù) uchar j; for(j=y<3?3-y:0;j<4;j++) //顯示動態(tài)方塊 slock=1;P1=j+y-3;P3=move(allshapeshapenumj,left); slock=0;delayms(1);P3=0 x00; for(j=0;j<16;j++) //顯示靜態(tài)方塊 slock=1;P1=j;P3=staticdataj+3; slock=0;delayms(1);P3=0 x00; numberdisplay(mark); //分數(shù)顯示 /************************************

24、****************************************************/ Step 3.C程序模塊簡要說明 numberdisplay(int amark) //大數(shù)拆分并顯示,帶去無效零功能 char i; uchar num4; num0=amark/1000%10;num1=amark/100%10;num2=amark/10%10;num3=amark%10; if(amark<10) //顯示一位數(shù) for(i=3;i<4;i++) P0=0 xff; duan=1; P0=numbernumi; duan=0;

25、 P0=0 x00; wei=1; P0=weimai; wei=0; delayms(1); wei=1; P0=0 x00; wei=0; Step 3.C程序模塊簡要說明 else if(amark<100) //顯示兩位數(shù) for(i=2;i<4;i++) P0=0 xff; duan=1; P0=numbernumi; duan=0; P0=0 x00; wei=1; P0=weimai; wei=0; delayms(1); wei=1; P0=0 x00; wei=0; St

26、ep 3.C程序模塊簡要說明 else if(amark<1000) //顯示三位數(shù) for(i=1;i<4;i++) P0=0 xff; duan=1; P0=numbernumi; duan=0; P0=0 x00; wei=1; P0=weimai; wei=0; delayms(1); wei=1; P0=0 x00; wei=0; Step 3.C程序模塊簡要說明 else //顯示四位數(shù) for(i=0;i<4;i++) P0=0 xff; duan=1; P0=numbernumi; dua

27、n=0; P0=0 x00; wei=1; P0=weimai; wei=0; delayms(1); wei=1; P0=0 x00; wei=0; return 0; /****************************************************************************************/ Step 3.C程序模塊簡要說明 void keyscan() //鍵盤掃錨并執(zhí)行用戶輸入的指令 //按鍵無效條件: 1.左移超邊緣; 2.左移遇障礙; 3.處在歡迎界面; 4.處在暫停界面

28、if(leftkey==0 if(rightkey==0) left--; //按鍵命令:方塊右移一位 speed=systemspeed; while(!rightkey) shapedisplay(); Step 3.C程序模塊簡要說明 //按鍵無效條件: 1.翻轉(zhuǎn)超左右邊緣; 2.翻轉(zhuǎn)遇障礙; 3.處在歡迎界面; 4.進入暫停界面 if(upkey==0 i--; return j; //返回 0,說明沒有障礙 /*****************************************************

29、***********************************/ Step 3.C程序模塊簡要說明 uchar shapedisappear()//方塊落定后消掉拼滿的行,并使沒有拼滿的行整體下移填補空缺行 char i,j,r=4; for(i=0;i0;j--) staticdataj=staticdataj-1; i--,r--; return 4-r; //函數(shù)返回一次性消掉的行的數(shù)目 /*****************************************************************************

30、***********/ Step 3.C程序模塊簡要說明 void startimage() //開機歡迎畫面,在沒有按鍵作用的時候會不斷執(zhí)行 uchar i,j; startcontrol=1; while(startcontrol) for(i=10;i0;i--) for(j=0;j<16;j+=2) slock=1;P1=j;P3=0 xaa; slock=0;delayms(1);P3=0 x00; for(j=1;j0;i--) for(j=1;j<16;j+=2) slock=1;P1=j;P3=0 xaa; slock=0;d

31、elayms(1);P3=0 x00; for(j=0;j<16;j+=2) slock=1;P1=j;P3=0 x55; slock=0;delayms(1);P3=0 x00; keyscan(); //隨時響應用戶輸入 /****************************************************************************************/ Step 3.C程序模塊簡要說明 void overimage() //游戲結(jié)束畫面,分數(shù)會強制閃爍 8次,并自動結(jié)束 int i,j; f

32、or(j=0;j<8;j++) for(i=0;i<200;i++) numberdisplay(mark); delayms(500); /****************************************************************************************/ Step 3.C程序模塊簡要說明 void dataset() //數(shù)據(jù)全部清零,重新開始游戲 char j; startcontrol=1; suspendcontrol=0; y=0; left=0; shapenum=0; initialspeed=100; speed=initialspeed; systemspeed=initialspeed; fastspeed=5; randnum=rand()%19; shapenum=randnum; mark=0; for(j=0;j<19;j++) //清除點陣上的顯示數(shù)據(jù) staticdataj=0; /****************************************************************************************/ Step 3.C程序模塊簡要說明

展開閱讀全文
溫馨提示:
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

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


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