單片機應用進階--俄羅斯方塊游戲板--開發(fā)詳細介紹-經典開發(fā)流程.ppt
《單片機應用進階--俄羅斯方塊游戲板--開發(fā)詳細介紹-經典開發(fā)流程.ppt》由會員分享,可在線閱讀,更多相關《單片機應用進階--俄羅斯方塊游戲板--開發(fā)詳細介紹-經典開發(fā)流程.ppt(46頁珍藏版)》請在裝配圖網上搜索。
1、基于 8052單片機和 8 16點陣屏 俄羅斯方塊游戲板 點擊圖片進入 Step 1.硬件構成 介紹游戲板所用主要器件及其要實現(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 開關按鍵 1.7 焊接實物圖: Step 2.仿真軟件輔助設計 Proteus 7.10仿真模塊展示 Step 3.C程序模塊簡要說明 開發(fā)概覽 Step 1.硬件構
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.硬件構成及功能簡介 2.8x8單色點陣 LG12088BH-W 主要參數(shù) 驅動電流: 20 5mA 顏色:紅色 規(guī)格: 8 8黑底 數(shù)量: 2 信號源:由譯碼器提供 16行掃描信號,由鎖存器提供 8位 顯示信號和驅動電流。 功能:提供 8 16個像素點的顯示屏,為游戲提供必要的 圖形顯示模塊。 Step 1.硬件構成及功能簡介 3.4-to-16 Line Decoder MM74HC154 關鍵參數(shù) 真值表 引腳圖 Step 1.硬件構成及功能簡介 3.4-to-16 Line Decoder 信號源: P2低四位 (
4、P1.0至 P1.3),使能 E1接 P2.7, E2接地 功能:為 8 16點陣提供 16行低電平掃描信號。 Step 1.硬件構成及功能簡介 4.四位八段共陽數(shù)碼管 LG5641BH 主要參數(shù): 驅動電流: 10mA左右 信號源:用兩塊鎖存器分別控制位選信號和段選信號。 功能:為游戲板提供必要的分數(shù)顯示模塊。 Step 1.硬件構成及功能簡介 5.同向鎖存器 SN74HC573AN 關鍵參數(shù) 真值表: 引腳圖: 驅動性:可驅動數(shù)碼管和點陣正常點亮 數(shù)量: 3塊 Step 1.硬件構成及功能簡介 5.同向鎖存器 . 作為點陣顯示信號輸送和驅動
5、的鎖存器 (一塊 ) 信號源:單片機 P3I/O 功能:給點陣送顯示信號并提供驅動電流。 (LE接地 ) Step 1.硬件構成及功能簡介 5.同向鎖存器 . 作為 P0口拓展和數(shù)碼管位選、段選信號輸送以及驅動 電流提供鎖存器 (兩塊 )。 信號源:單片機 P0口 (已上拉 10K電阻 )。 兩個鎖存控制端接在單片機 P2口。 功能:為數(shù)碼管送入段選信號和位選信號,提供電流驅動 Step 1.硬件構成及功能簡介 6.開關按鍵 一個自鎖開關:用作整個游戲板的開關 (帶發(fā)光二極管 )。 六個按鍵:一個用作復位鍵,其余五個用作人為
6、控制輸入。 信號源:人為擊按。 功能: Start/Suspend鍵:游戲開始和暫??刂? Up鍵:控制形狀逆時針旋轉 Left和 Right鍵:控制形狀左右移動一格 Down鍵:控制形狀快速下降 Step 1.硬件構成及功能簡介 焊接實物圖: Step 1.硬件構成及功能簡介 點陣和單片機正面 點陣和單片機反面 焊接實物圖: Step 1.硬件構成及功能簡介 數(shù)碼管正面 數(shù)碼管反面 焊接實物圖: Step 1.硬件構成及功能簡介 程 序 運 行 時 狀 態(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 詳細內容見附件 Step 3.C程序模塊簡要說明 附件 1:Keil工程文件夾 俄羅斯方塊 keil文件 附件 2:C51程序文件 elsfk
8、.c 附件 3:C51程序文件 word版 俄羅斯方塊 C程序 .doc /***************************************************************************************** 名稱: 基于 8052單片機和 8X16點陣屏俄羅斯方塊游戲板 時間: 2012年 05月 23日 17時 單位:武漢理工大學信息學院電子 1003班 作者:電子那點事(新浪微博賬號,歡迎關注) *******************************************************************
9、**********************/ #include #include #include #define uchar unsigned char sbit slock=P27; //譯碼器輸出使能端 sbit upkey=P23; //“旋轉圖形 /向上 ” 按鍵 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、需要旋轉,所以由基本的圖形會衍生出另外 3種圖形。 5.因此每個圖形應該給定 4個 8位的二進制碼,并放入一個二維數(shù)組里。 6.經典俄羅斯方塊游戲里有 19種不同形狀的方塊,包括旋轉得到的。 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; //旋轉圖形時,用于改變圖形的編號以實現(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ù)變量,用于產生隨機方塊 /****************************************************************************************/ Step 3.C程序模塊簡要說明 /****************************************函數(shù)聲明 *
18、***************************************/ void delayms(int); //粗略延時函數(shù) uchar move(uchar,int);//對二進制碼實行移位,可為負值 void shapedisplay(); //對點陣掃描一場,對數(shù)碼管掃描一場,用于顯示圖形和數(shù)字 void keyscan();//對所有鍵盤掃描一次,并執(zhí)行相應運算和操作 uchar check(char,int);//用于檢查方塊將要下落的位置或是將要旋轉的位置是否有障礙 uchar shapedisappear();//用于消行,返回一次性消掉的行數(shù) numbe
19、rdisplay(int amark);//用于四位數(shù)字顯示 void startimage();//游戲等待開始畫面函數(shù) void overimage();//游戲結束后的畫面 void dataset();//對數(shù)據初始化,為游戲重新開始做準備 /****************************************************************************************/ Step 3.C程序模塊簡要說明 /*****************************************主函數(shù) ****************
20、*************************/ void main() char j; startimage(); //進入開機,函數(shù)內有鍵盤掃描,只有按下 “ 開始 ” 鍵會退出函數(shù),否則不退 出 dataset(); //對數(shù)據進行初始化 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)就遇到障礙物了, 這時游戲需結束 overimage(); //進入游戲結束畫面,此函數(shù)內沒有鍵盤掃 描,運行一段時間會自動退出 startimage(); //又進入開機畫面 dataset(); //對數(shù)據進行初始化,將前一用戶數(shù)據清零 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.翻轉超左右邊緣; 2.翻轉遇障礙; 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() //游戲結束畫面,分數(shù)會強制閃爍 8次,并自動結束 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ù)據全部清零,重新開始游戲 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ù)據 staticdataj=0; /****************************************************************************************/ Step 3.C程序模塊簡要說明
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025《增值稅法》高質量發(fā)展的增值稅制度規(guī)范增值稅的征收和繳納
- 深入學習《中華人民共和國科學技術普及法》推進實現(xiàn)高水平科技自立自強推動經濟發(fā)展和社會進步
- 激揚正氣淬煉本色踐行使命廉潔從政黨課
- 加強廉潔文化建設夯實廉政思想根基培育風清氣正的政治生態(tài)
- 深入學習2024《突發(fā)事件應對法》全文提高突發(fā)事件預防和應對能力規(guī)范突發(fā)事件應對活動保護人民生命財產安全
- 2023年四年級數(shù)學上冊第一輪單元滾動復習第10天平行四邊形和梯形作業(yè)課件新人教版
- 2023年四年級數(shù)學上冊第14單元階段性綜合復習作業(yè)課件新人教版
- 2023年四年級數(shù)學上冊易錯清單十五課件新人教版
- 2023年四年級數(shù)學上冊易錯清單七課件西師大版
- 2023年五年級數(shù)學下冊易錯清單六作業(yè)課件北師大版
- 2023年五年級數(shù)學下冊易錯清單二作業(yè)課件北師大版
- 2023年五年級數(shù)學下冊四分數(shù)的意義和性質第10課時異分母分數(shù)的大小比較作業(yè)課件蘇教版
- 2023年五年級數(shù)學下冊周周練四作業(yè)課件北師大版
- 2023年五年級數(shù)學下冊六折線統(tǒng)計圖單元復習卡作業(yè)課件西師大版
- 2023年四年級數(shù)學上冊6除數(shù)是兩位數(shù)的除法單元易錯集錦一作業(yè)課件新人教版