基于基于8052880528××1616点阵屏点阵屏俄罗斯方块游戏板俄罗斯方块游戏板点击图片进入片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件Step 1.Step 1.硬件构成硬件构成——介绍游戏板所用主要器件及其要实现的功能介绍游戏板所用主要器件及其要实现的功能 1.1 1.1 核心处理器核心处理器-STC80C52RC-STC80C52RC 1.2 8x8 1.2 8x8单色点阵单色点阵-LG12088BH-W-LG12088BH-W 1.3 4-to-16 Line Decoder-MM74HC154 1.3 4-to-16 Line Decoder-MM74HC154 1.4 1.4 四位八段共阳数码管四位八段共阳数码管-LG5641BH-LG5641BH 1.5 1.5 同向锁存器同向锁存器-SN74HC573AN-SN74HC573AN 1.6 1.6 开关按键开关按键 1.7 1.7 焊接实物图:焊接实物图:Step 2.Step 2.仿真软件辅助设计仿真软件辅助设计——Proteus 7.10Proteus 7.10仿真模块展示仿真模块展示Step 3.CStep 3.C程序模块简要说明程序模块简要说明开发概览开发概览片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件Step 1.硬件构成及功能简介硬件构成及功能简介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.核心处理器核心处理器最小系统电路最小系统电路Ø12MHz晶振ØRC复位电路Ø5V直流电源Step 1.硬件构成及功能简介硬件构成及功能简介片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件2.8x8单色点阵单色点阵 LG12088BH-W主要参数Ø驱动电流:20±5mAØ颜色:红色Ø规格:8×8黑底Ø数量:2信号源:由译码器提供信号源:由译码器提供1616行扫描信号,由锁存器提供行扫描信号,由锁存器提供8 8位位 显示信号和驱动电流。
显示信号和驱动电流功能:提供功能:提供8×168×16个像素点的显示屏,为游戏提供必要的个像素点的显示屏,为游戏提供必要的 图形显示模块图形显示模块Step 1.硬件构成及功能简介硬件构成及功能简介片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件3.4-to-16 Line DecoderMM74HC154关键参数Ø真值表Ø引脚图Step 1.硬件构成及功能简介硬件构成及功能简介片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件3.4-to-16 Line Decoder信号源:信号源:P2P2低四位低四位(P1.0(P1.0至至P1.3)P1.3),使能,使能E1E1接接P2.7P2.7,,E2E2接地接地功能:为功能:为8×168×16点阵提供点阵提供1616行低电平扫描信号行低电平扫描信号Step 1.硬件构成及功能简介硬件构成及功能简介片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件4.四位八段共阳数码管四位八段共阳数码管LG5641BH主要参数:Ø驱动电流:10mA左右 信号源:用两块锁存器分别控制位选信号和段选信号信号源:用两块锁存器分别控制位选信号和段选信号。
功能:为游戏板提供必要的分数显示模块功能:为游戏板提供必要的分数显示模块Step 1.硬件构成及功能简介硬件构成及功能简介片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件5.同向锁存器同向锁存器SN74HC573AN关键参数Ø真值表:Ø引脚图:Ø驱动性:可驱动数码管和点阵正常点亮Ø数量:3块Step 1.硬件构成及功能简介硬件构成及功能简介片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件5.同向锁存器同向锁存器Ⅰ.Ⅰ.作为点阵显示信号输送和驱动的锁存器作为点阵显示信号输送和驱动的锁存器( (一块一块) ) 信号源:单片机信号源:单片机P3I/OP3I/O功能:给点阵送显示信号并提供驱动电流功能:给点阵送显示信号并提供驱动电流LE(LE接地接地) )Step 1.硬件构成及功能简介硬件构成及功能简介片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件5.同向锁存器同向锁存器Ⅱ.Ⅱ.作为作为P0P0口拓展和数码管位选、段选信号输送以及驱动口拓展和数码管位选、段选信号输送以及驱动 电流提供锁存器电流提供锁存器( (两块两块) ) 信号源:单片机信号源:单片机P0P0口口( (已上拉已上拉10K10K电阻电阻) )。
两个锁存控制端接在单片机两个锁存控制端接在单片机P2P2口功能:为数码管送入段选信号和位选信号,提供电流驱动功能:为数码管送入段选信号和位选信号,提供电流驱动Step 1.硬件构成及功能简介硬件构成及功能简介片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件6.开关按键开关按键Ø一个自锁开关:用作整个游戏板的开关(带发光二极管)Ø六个按键:一个用作复位键,其余五个用作人为控制输入信号源:人为击按信号源:人为击按功能:功能:Start/SuspendStart/Suspend键:游戏开始和暂停控制键:游戏开始和暂停控制 UpUp键:控制形状逆时针旋转键:控制形状逆时针旋转 LeftLeft和和RightRight键:控制形状左右移动一格键:控制形状左右移动一格 DownDown键:控制形状快速下降键:控制形状快速下降 Step 1.硬件构成及功能简介硬件构成及功能简介片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件焊接实物图:焊接实物图:Step 1.硬件构成及功能简介硬件构成及功能简介点阵和单片机正面点阵和单片机正面点阵和单片机反面点阵和单片机反面片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件焊接实物图:焊接实物图:Step 1.硬件构成及功能简介硬件构成及功能简介数码管正面数码管正面数码管反面数码管反面片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件焊接实物图:焊接实物图:Step 1.硬件构成及功能简介硬件构成及功能简介程程序序运运行行时时状状态态片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件Proteus 7.10仿真模块展示仿真模块展示单片机最小系统模块单片机最小系统模块按键模块按键模块Step 2.仿真软件辅助设计仿真软件辅助设计片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件Proteus 7.10仿真模块展示仿真模块展示点阵显示模块点阵显示模块Step 2.仿真软件辅助设计仿真软件辅助设计片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件Proteus 7.10仿真模块展示仿真模块展示四位数字显示模块四位数字显示模块Step 2.仿真软件辅助设计仿真软件辅助设计片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件Proteus 7.10仿真模块展示仿真模块展示仿真运行时仿真运行时[ [ProteusProteus设计文件设计文件][][视频文件视频文件] ]Step 2.仿真软件辅助设计仿真软件辅助设计视频文件视频文件资料资料\简单的操作示意简单的操作示意.aviProteus设计文件设计文件俄罗斯方块俄罗斯方块-高度仿真版高度仿真版.DSN片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件详细内容见附件详细内容见附件Step 3.C程序模块简要说明程序模块简要说明附件附件1:Keil工程文件夹工程文件夹俄罗斯方块俄罗斯方块\keil文件文件附件附件2:C51程序文件程序文件elsfk.c附件附件3:C51程序文件程序文件word版版俄罗斯方块俄罗斯方块C程序程序.doc片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件/*****************************************************************************************名称:《基于8052单片机和8X16点阵屏俄罗斯方块游戏板》时间:2012年05月23日17时单位:武汉理工大学信息学院电子1003班作者:电子那点事(新浪微博账号,欢迎关注)*****************************************************************************************/#include#include#include#define uchar unsigned charsbit slock=P2^7;//译码器输出使能端sbit upkey=P2^3;//“旋转图形/向上”按键sbit leftkey=P2^1;//“左移/向左”按键sbit rightkey=P2^2;//“右移/向右”按键sbit downkey=P2^0;//“快速下移/向下”按键sbit duan=P2^5;//数码管段选信号所用锁存器的锁存允许端sbit wei=P2^6;//数码管位选信号所用锁存器的锁存允许端sbit startsuspendkey=P2^4;//“开始/暂停/继续”多功能切换按键Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件/***********************************图形编码机制介绍**************************************1.由于俄罗斯方块图形的宽度和高度最多只有四位,所以要以4X4为基本单元。
2.硬件采用16行扫描、8位送显示信号3.各个图形的宽度不一致,所以要人为给图形设定居中位置 若图形宽度为偶数可直接将其居中,若为奇数则靠左居中4.由于图形需要旋转,所以由基本的图形会衍生出另外3种图形5.因此每个图形应该给定4个8位的二进制码,并放入一个二维数组里6.经典俄罗斯方块游戏里有19种不同形状的方块,包括旋转得到的7.数组的第一个下标为该图形的编号*****************************************************************************************/uchar code allshape[19][4]={0x00,0x00,0x18,0x18,0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x3c, 0x00,0x08,0x18,0x10,0x00,0x00,0x30,0x18,0x00,0x10,0x18,0x08, 0x00,0x00,0x18,0x30,0x00,0x08,0x08,0x18,0x00,0x00,0x38,0x08, 0x00,0x18,0x10,0x10,0x00,0x00,0x20,0x38,0x00,0x10,0x10,0x18, 0x00,0x00,0x08,0x38,0x00,0x18,0x08,0x08,0x00,0x00,0x38,0x20, 0x00,0x00,0x10,0x38,0x00,0x08,0x18,0x08,0x00,0x00,0x38,0x10, 0x00,0x10,0x18,0x10};/****************************************************************************************/Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件//数码管数形显示编码uchar code number[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//位选信号编码,方便写循环使用uchar code weima[4]={0x01,0x02,0x04,0x08};//各个图形的宽度属性,用于判断左移和右移的步格数上限char shapewidth[19]={2,1,4,2,3,2,3,2,3,2,3,2,3,2,3,3,2,3,2};//旋转图形时,用于改变图形的编号以实现图形的切换char shaperotate[19]={0,2,1,4,3,6,5,8,9,10,7,12,13,14,11,16,17,18,15}; //用于存储方块降落后固定显示的图形信息uchar staticdata[20]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0xff};//规定一次性消掉的行数的分数奖励机制uchar rate[5]={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;//方块下落的初始速度int systemspeed;//系统下落速度,此值会随着玩家分数的增加而减小,相应的下落速度会增大int fastspeed;//当用户按下down键时,方块下落速度为此值int k;//一个全局循环变量,“帧数”变量int startcontrol=1;//开始画面状态指示变量,为1时说明程序进入开机欢迎界面int suspendcontrol=0;//游戏暂停与游戏继续画面状态指示变量,为1说明处在暂停界面。
int randnum;//随机数变量,用于产生随机方块/****************************************************************************************/Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件/****************************************函数声明****************************************/void delayms(int);//粗略延时函数uchar move(uchar,int);//对二进制码实行移位,可为负值void shapedisplay(); //对点阵扫描一场,对数码管扫描一场,用于显示图形和数字void keyscan();//对所有键盘扫描一次,并执行相应运算和操作uchar check(char,int);//用于检查方块将要下落的位置或是将要旋转的位置是否有障碍uchar shapedisappear();//用于消行,返回一次性消掉的行数numberdisplay(int amark);//用于四位数字显示void startimage();//游戏等待开始画面函数void overimage();//游戏结束后的画面void dataset();//对数据初始化,为游戏重新开始做准备/****************************************************************************************/Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件/*****************************************主函数*****************************************/void main(){char j;startimage();//进入开机,函数内有键盘扫描,只有按下“开始”键会退出函数,否则不退出dataset();//对数据进行初始化while(1){//进入大循环k=speed;//确定显示的帧数while(k--){keyscan();//扫描键盘,放入高速循环语句中提高键盘的响应速度,并检测此时用户是否有相应请求shapedisplay();//显示图形和数字}y++;//图形下落一格Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件if(check(shapenum,left)){//在没有显示之前判断将要下落的位置是否有障碍物,如果有障碍就进入到if语句中if(y==1){//如果y=1;说明方块刚出现就遇到障碍物了,这时游戏需结束overimage();//进入游戏结束画面,此函数内没有键盘扫描,运行一段时间会自动退出startimage();//又进入开机画面dataset();//对数据进行初始化,将前一用户数据清零}else{//遇到障碍物,但还不至于图形不能出现for(j=0;j<4;j++){//将下落形状的值赋给固定图形,形成停留显示的效果staticdata[y+j]+=move(allshape[shapenum][j],left);}Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件mark+=rate[shapedisappear()];//消掉已拼满的函数,并记录所得分数y=0;//为下一个方块赋属性值:从第一行出现left=0;//为下一个方块赋属性值:居中显示randnum=rand()%19;shapenum=randnum;//为下一个方块赋属性值:给定形状systemspeed=initialspeed-10*(mark/40);//计算相应分数下的系统速度值,分数越高,速度越快speed=systemspeed;//将此值赋给速度控制量}}}}/****************************************************************************************/Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件/***************************************自定义函数***************************************/void delayms(int xms)//粗略的延时函数{int i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--);}/****************************************************************************************/uchar move(uchar aa,int anum)//移位函数{ if(anum>=0)aa<<=anum;elseaa>>=(-anum);return aa;}/****************************************************************************************/Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件void shapedisplay()//显示函数{uchar j;for(j=y<3?3-y:0;j<4;j++){//显示动态方块slock=1;P1=j+y-3;P3=move(allshape[shapenum][j],left);slock=0;delayms(1);P3=0x00;}for(j=0;j<16;j++){//显示静态方块slock=1;P1=j;P3=staticdata[j+3];slock=0;delayms(1);P3=0x00;}numberdisplay(mark);//分数显示}/****************************************************************************************/Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件numberdisplay(int amark)//大数拆分并显示,带去无效零功能{char i;uchar num[4];num[0]=amark/1000%10;num[1]=amark/100%10;num[2]=amark/10%10;num[3]=amark%10;if(amark<10){ //显示一位数for(i=3;i<4;i++){P0=0xff;duan=1;P0=number[num[i]];duan=0;P0=0x00;wei=1;P0=weima[i];wei=0;delayms(1);wei=1;P0=0x00;wei=0;}}Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件else if(amark<100){ //显示两位数for(i=2;i<4;i++){P0=0xff;duan=1;P0=number[num[i]];duan=0;P0=0x00;wei=1;P0=weima[i];wei=0;delayms(1);wei=1;P0=0x00;wei=0;}}Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件else if(amark<1000){ //显示三位数for(i=1;i<4;i++){P0=0xff;duan=1;P0=number[num[i]];duan=0;P0=0x00;wei=1;P0=weima[i];wei=0;delayms(1);wei=1;P0=0x00;wei=0;}}Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件else{//显示四位数for(i=0;i<4;i++){P0=0xff;duan=1;P0=number[num[i]];duan=0;P0=0x00;wei=1;P0=weima[i];wei=0;delayms(1);wei=1;P0=0x00;wei=0;} } return 0;/****************************************************************************************/Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件void keyscan()//键盘扫锚并执行用户输入的指令{//按键无效条件:1.左移超边缘;2.左移遇障碍;3.处在欢迎界面;4.处在暂停界面if(leftkey==0&&(left<(shapewidth[shapenum]<3?3:2))&&!check(shapenum,left+1)&& startcontrol==0&&suspendcontrol==0){delayms(10);if(leftkey==0){left++;//按键命令:方块左移一位speed=systemspeed;while(!leftkey){shapedisplay();}}}Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件//按键无效条件:1.右移超边缘;2.右移遇障碍;3.处在欢迎界面;4.处在暂停界面if(rightkey==0 &&(left>(shapewidth[shapenum]<3?shapewidth[shapenum]5:shapewidth[shapenum]-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(shaperotate[shapenum],left) &&(left<(shapewidth[shaperotate[shapenum]]<3?4:3)) &&(left>(shapewidth[shaperotate[shapenum]]<3? shapewidth[shaperotate[shapenum]]-6:shapewidth[shapenum]-7)) &&startcontrol==0&&suspendcontrol==0){delayms(10);if(upkey==0){shapenum=shaperotate[shapenum];//按键命令:将翻转后的图形编号赋给要显示的图形编号speed=systemspeed;while(!upkey){shapedisplay();}}}Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件if(downkey==0&&speed!=fastspeed&&startcontrol==0&&suspendcontrol==0){ delayms(10);//按键无效条件:1.已经进入快速下降状态;2.处在欢迎界面;3.进入暂停界面if(downkey==0){speed=fastspeed;//按键命令:将方块下落速度加快k=speed;while(!downkey){shapedisplay();}}}if(startsuspendkey==0&&startcontrol==1&&suspendcontrol==0){delayms(10);//按键有效条件:1.处在开始欢迎界面;2.处在暂停界面if(startsuspendkey==0){startcontrol=0; suspendcontrol=0;//按键命令:使进入继续游戏状态while(!startsuspendkey){}}}Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件 if(startsuspendkey==0&&startcontrol==0&&suspendcontrol==0){delayms(10);//按键无效条件:1.处在开始欢迎界面;2.处在暂停状态if(startsuspendkey==0){suspendcontrol=1;startcontrol=0;//按键命令:状态切换,使进入暂停状态while(!startsuspendkey){shapedisplay();}while(suspendcontrol){shapedisplay();keyscan();//等待结束暂停状态的命令}}}Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件 if(startsuspendkey==0&&startcontrol==0&&suspendcontrol==1){delayms(10);//按键有效条件:处在暂停界面if(startsuspendkey==0){suspendcontrol=0;startcontrol=0;//按键命令:状态切换,使进入继续游戏状态while(!startsuspendkey){shapedisplay();}}}}/****************************************************************************************/Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件uchar check(char ashapenum,int aleft)//判断方块是否会遇到障碍物{char i=3,j=0;while(!j&&i>=0){if((move(allshape[ashapenum][i],aleft)+staticdata[y+i])!=(move(allshape[ashapenum][i],aleft)|staticdata[y+i])){j++;}i--;}return j;//返回0,说明没有障碍}/****************************************************************************************/Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件uchar shapedisappear()//方块落定后消掉拼满的行,并使没有拼满的行整体下移填补空缺行{char i,j,r=4;for(i=0;i0;j--){staticdata[j]=staticdata[j-1];}i--,r--;}}return 4-r;//函数返回一次性消掉的行的数目}/****************************************************************************************/Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件void startimage()//开机欢迎画面,在没有按键作用的时候会不断执行{uchar i,j;startcontrol=1;while(startcontrol){for(i=10;i>0;i--){for(j=0;j<16;j+=2){slock=1;P1=j;P3=0xaa;slock=0;delayms(1);P3=0x00;}for(j=1;j<16;j+=2){slock=1;P1=j;P3=0x55;slock=0;delayms(1);P3=0x00;}keyscan();//随时响应用户输入}Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件for(i=10;i>0;i--){for(j=1;j<16;j+=2){slock=1;P1=j;P3=0xaa;slock=0;delayms(1);P3=0x00;}for(j=0;j<16;j+=2){slock=1;P1=j;P3=0x55;slock=0;delayms(1);P3=0x00;}keyscan();//随时响应用户输入}}}/****************************************************************************************/Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件void overimage()//游戏结束画面,分数会强制闪烁8次,并自动结束{int i,j;for(j=0;j<8;j++){for(i=0;i<200;i++){numberdisplay(mark);}delayms(500);}}/****************************************************************************************/Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件void dataset()//数据全部清零,重新开始游戏{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++){ //清除点阵上的显示数据staticdata[j]=0;}}/****************************************************************************************/Step 3.C程序模块简要说明程序模块简要说明片机应用进阶俄罗斯方块游戏板开发详细介绍开发流程课件。