单片机应用进阶俄罗斯方块游戏板开发详细介绍经典开发流程ppt课件_第1页
单片机应用进阶俄罗斯方块游戏板开发详细介绍经典开发流程ppt课件_第2页
单片机应用进阶俄罗斯方块游戏板开发详细介绍经典开发流程ppt课件_第3页
单片机应用进阶俄罗斯方块游戏板开发详细介绍经典开发流程ppt课件_第4页
单片机应用进阶俄罗斯方块游戏板开发详细介绍经典开发流程ppt课件_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、点击图片进入开发概览开发概览Step 1.硬件构成及功能简介硬件构成及功能简介1.核心处理器核心处理器STC80C52RC 8051-based Fullly Static 24MHz CMOS controller with 32 I/O Lines3 Timers/Counters8 Interrupts/2 Priority Levels UARTThree-Level Program Memory Lock 8K Bytes Flash Memory128 Bytes On-chip RAM功能:整个游戏板的控制中心功能:整个游戏板的控制中心1.核心处理器核心处理器最小系统电路最小系统

2、电路12MHz晶振晶振RC复位电路复位电路5V直流电源直流电源Step 1.硬件构成及功能简介硬件构成及功能简介2.8x8单色点阵单色点阵 LG12088BH-W主要参数主要参数驱动电流:驱动电流:205mA颜色:红色颜色:红色规格:规格:88黑底黑底数量:数量:2信号源:由译码器提供信号源:由译码器提供16行扫描信号,由锁行扫描信号,由锁存器提供存器提供8位位 显示信号和驱动电流。显示信号和驱动电流。功能:提供功能:提供816个像素点的显示屏,为游戏个像素点的显示屏,为游戏提供必要的提供必要的 图形显示模块。图形显示模块。Step 1.硬件构成及功能简介硬件构成及功能简介3.4-to-16

3、Line DecoderMM74HC154关键参数关键参数真值表真值表引脚图引脚图Step 1.硬件构成及功能简介硬件构成及功能简介3.4-to-16 Line Decoder信号源:信号源:P2低四位低四位(P1.0至至P1.3),使能,使能E1接接P2.7,E2接地接地功能:为功能:为816点阵提供点阵提供16行低电平扫描信行低电平扫描信号。号。Step 1.硬件构成及功能简介硬件构成及功能简介4.四位八段共阳数码管四位八段共阳数码管LG5641BH主要参数:主要参数:驱动电流:驱动电流:10mA左右左右信号源:用两块锁存器分别控制位选信号信号源:用两块锁存器分别控制位选信号和段选信号。和

4、段选信号。功能:为游戏板提供必要的分数显示模块。功能:为游戏板提供必要的分数显示模块。Step 1.硬件构成及功能简介硬件构成及功能简介5.同向锁存器同向锁存器SN74HC573AN关键参数关键参数真值表:真值表:引脚图:引脚图:驱动性:可驱动数码管和点阵正常点亮驱动性:可驱动数码管和点阵正常点亮数量:数量:3块块Step 1.硬件构成及功能简介硬件构成及功能简介5.同向锁存器同向锁存器.作为点阵显示信号输送和驱动的锁存器作为点阵显示信号输送和驱动的锁存器(一块一块)信号源:单片机信号源:单片机P3I/O功能:给点阵送显示信号并提供驱动电流。功能:给点阵送显示信号并提供驱动电流。(LE接地接地

5、)Step 1.硬件构成及功能简介硬件构成及功能简介5.同向锁存器同向锁存器.作为作为P0口拓展和数码管位选、段选信号口拓展和数码管位选、段选信号输送以及驱动输送以及驱动 电流提供锁存器电流提供锁存器(两块两块)。信号源:单片机信号源:单片机P0口口(已上拉已上拉10K电阻电阻)。 两个锁存控制端接在单片机两个锁存控制端接在单片机P2口。口。功能:为数码管送入段选信号和位选信号,功能:为数码管送入段选信号和位选信号,提供电流驱动提供电流驱动Step 1.硬件构成及功能简介硬件构成及功能简介6.开关按键开关按键一个自锁开关:用作整个游戏板的开关一个自锁开关:用作整个游戏板的开关(带发带发光二极管

6、光二极管)。六个按键:一个用作复位键,其余五个用作六个按键:一个用作复位键,其余五个用作人为控制输入。人为控制输入。信号源:人为击按。信号源:人为击按。功能:功能:Start/Suspend键:游戏开始和暂停键:游戏开始和暂停控制控制 Up键:控制形状逆时针旋转键:控制形状逆时针旋转 Left和和Right键:控制形状左右移动一键:控制形状左右移动一格格 Down键:控制形状快速下降键:控制形状快速下降Step 1.硬件构成及功能简介硬件构成及功能简介焊接实物图:焊接实物图:Step 1.硬件构成及功能简介硬件构成及功能简介点阵和单片机正面点阵和单片机正面点阵和单片机反面点阵和单片机反面焊接实

7、物图:焊接实物图:Step 1.硬件构成及功能简介硬件构成及功能简介数码管正面数码管正面数码管反面数码管反面焊接实物图:焊接实物图:Step 1.硬件构成及功能简介硬件构成及功能简介程序运行时状程序运行时状态态Proteus 7.10仿真模块展示仿真模块展示单片机最小系统模块单片机最小系统模块按键模块按键模块Step 2.仿真软件辅助设计仿真软件辅助设计Proteus 7.10仿真模块展示仿真模块展示点阵显示模块点阵显示模块Step 2.仿真软件辅助设计仿真软件辅助设计Proteus 7.10仿真模块展示仿真模块展示四位数字显示模块四位数字显示模块Step 2.仿真软件辅助设计仿真软件辅助设计

8、Proteus 7.10仿真模块展示仿真模块展示仿真运行时仿真运行时Proteus设计文件设计文件视频文件视频文件Step 2.仿真软件辅助设计仿真软件辅助设计视频文件视频文件资料资料简单的操作示意简单的操作示意.aviProteus设计文件设计文件俄罗斯方块俄罗斯方块-高度仿真版高度仿真版.DSN详细内容见附件详细内容见附件Step 3.C程序模块简要说明程序模块简要说明附件附件1:Keil工程文件夹工程文件夹俄罗斯方块俄罗斯方块keil文件文件附件附件2:C51程序文件程序文件elsfk.c附件附件3:C51程序文件程序文件word版版俄罗斯方块俄罗斯方块C程序程序.doc/*称号:基于8

9、052单片机和8X16点阵屏俄罗斯方块游戏板时间:2019年05月23日17时单位:武汉理工大学信息学院电子1003班电子那点事新浪微博账号,欢迎关注)*/#include#include#include#define uchar unsigned charsbit slock=P27;/译码器输出使能端sbit upkey=P23;/“旋转图形/向上按键sbit leftkey=P21;/“左移/向左按键sbit rightkey=P22;/“右移/向右按键sbit downkey=P20;/“快速下移/向下按键sbit duan=P25;/数码管段选信号所用锁存器的锁存允许端sbit we

10、i=P26;/数码管位选信号所用锁存器的锁存允许端sbit startsuspendkey=P24;/“开场/暂停/继续多功能切换按键Step 3.C程序模块简要说明程序模块简要说明/*图形编码机制介绍*1.由于俄罗斯方块图形的宽度和高度最多只有四位,所以要以4X4为基本单元。2.硬件采用16行扫描、8位送显示信号3.各个图形的宽度不一致,所以要人为给图形设定居中位置。 若图形宽度为偶数可直接将其居中,若为奇数则靠左居中。4.由于图形需要旋转,所以由基本的图形会衍生出另外3种图形。5.因此每个图形应该给定4个8位的二进制码,并放入一个二维数组里。6.经典俄罗斯方块游戏里有19种不同形状的方块,

11、包括旋转得到的。7.数组的第一个下标为该图形的编号*/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 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

12、 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, 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程序模块简要说明程序模块简要说明/数码管数形显示编码uchar code number10=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0

13、 x92,0 x82,0 xf8,0 x80,0 x90;/位选信号编码,方便写循环使用uchar code weima4=0 x01,0 x02,0 x04,0 x08;/各个图形的宽度属性,用于判断左移和右移的步格数上限char shapewidth19=2,1,4,2,3,2,3,2,3,2,3,2,3,2,3,3,2,3,2;/旋转图形时,用于改变图形的编号以实现图形的切换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

14、,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 xff;/规定一次性消掉的行数的分数奖励机制uchar rate5=0,1,3,6,10;/*/Step 3.C程序模块简要说明程序模块简要说明/*全局变量声明*/char y;/方块位置属性:底部下落的高度,y=0时:刚刚出现,y=15时:下落到屏幕最底部char shapenum;/方块形状属性:从0到18int left; /方块位置属性:方块偏离居中位置的格数,不同的方块left值的上限不同int mark; /玩家分数变量int speed;/方块下落速度变量int initialspeed;/方块下落的初始速

15、度int systemspeed;/系统下落速度,此值会随着玩家分数的增加而减小,相应的下落速度会增大int fastspeed;/当用户按下down键时,方块下落速度为此值int k;/一个全局循环变量,“帧数变量int startcontrol=1;/开始画面状态指示变量,为1时说明程序进入开机欢迎界面int suspendcontrol=0;/游戏暂停与游戏继续画面状态指示变量,为1说明处在暂停界面。int randnum;/随机数变量,用于产生随机方块/*/Step 3.C程序模块简要说明程序模块简要说明/*函数声明*/void delayms(int);/粗略延时函数uchar mo

16、ve(uchar,int);/对二进制码实行移位,可为负值void shapedisplay(); /对点阵扫描一场,对数码管扫描一场,用于显示图形和数字void keyscan();/对所有键盘扫描一次,并执行相应运算和操作uchar check(char,int);/用于检查方块将要下落的位置或是将要旋转的位置是否有障碍uchar shapedisappear();/用于消行,返回一次性消掉的行数numberdisplay(int amark);/用于四位数字显示void startimage();/游戏等待开始画面函数void overimage();/游戏结束后的画面void data

17、set();/对数据初始化,为游戏重新开始做准备/*/Step 3.C程序模块简要说明程序模块简要说明/*主函数*/void main()char j;startimage();/进入开机,函数内有键盘扫描,只有按下“开场键会退出函数,否则不退出dataset();/对数据进行初始化while(1)/进入大循环k=speed;/确定显示的帧数while(k-)keyscan();/扫描键盘,放入高速循环语句中提高键盘的响应速度,并检测此时用户是否有相应请求shapedisplay();/显示图形和数字y+;/图形下落一格Step 3.C程序模块简要说明程序模块简要说明if(check(shap

18、enum,left)/在没有显示之前判断将要下落的位置是否有障碍物,如果有障碍就进入到if语句中if(y=1)/如果y=1;说明方块刚出现就遇到障碍物了,这时游戏需结束overimage();/进入游戏结束画面,此函数内没有键盘扫描,运行一段时间会自动退出startimage();/又进入开机画面dataset();/对数据进行初始化,将前一用户数据清零else/遇到障碍物,但还不至于图形不能出现for(j=0;j0;i-)for(j=110;j0;j-);/*/uchar move(uchar aa,int anum)/移位函数 if(anum=0)aa=(-anum);return aa;

19、/*/Step 3.C程序模块简要说明程序模块简要说明void shapedisplay()/显示函数uchar j;for(j=y3?3-y:0;j4;j+)/显示动态方块slock=1;P1=j+y-3;P3=move(allshapeshapenumj,left);slock=0;delayms(1);P3=0 x00;for(j=0;j16;j+)/显示静态方块slock=1;P1=j;P3=staticdataj+3;slock=0;delayms(1);P3=0 x00;numberdisplay(mark);/分数显示/*/Step 3.C程序模块简要说明程序模块简要说明numb

20、erdisplay(int amark)/大数拆分并显示,带去无效零功能char i;uchar num4;num0=amark/1000%10;num1=amark/100%10;num2=amark/10%10;num3=amark%10;if(amark10) /显示一位数for(i=3;i4;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 if(amark100) /显示两

21、位数for(i=2;i4;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 if(amark1000) /显示三位数for(i=1;i4;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程序模块简要说明程序模块简

22、要说明else/显示四位数for(i=0;i4;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; return 0;/*/Step 3.C程序模块简要说明程序模块简要说明void keyscan()/键盘扫锚并执行用户输入的指令/按键无效条件:1.左移超边缘;2.左移遇障碍;3.处在欢迎界面;4.处在暂停界面if(leftkey=0&(left(shapewidthshapenum(shapewidthshapenum3?shapewid

23、thshapenum5:shapewidthshapenum-6) &!check(shapenum,left-1)&startcontrol=0&suspendcontrol=0)delayms(10); if(rightkey=0)left-;/按键命令:方块右移一位speed=systemspeed;while(!rightkey)shapedisplay();Step 3.C程序模块简要说明程序模块简要说明/按键无效条件:1.翻转超左右边缘;2.翻转遇障碍;3.处在欢迎界面;4.进入暂停界面if(upkey=0&!check(shaperotateshapenum,left) &(le

24、ft(shapewidthshaperotateshapenum(shapewidthshaperotateshapenum=0)if(move(allshapeashapenumi,aleft)+staticdatay+i)!=(move(allshapeashapenumi,aleft)|staticdatay+i)j+;i-;return j;/返回0,说明没有障碍/*/Step 3.C程序模块简要说明程序模块简要说明uchar shapedisappear()/方块落定后消掉拼满的行,并使没有拼满的行整体下移填补空缺行char i,j,r=4;for(i=0;i0;j-)staticdataj=staticdataj-1;i-,r-;return 4-r;/函数返回一次

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论