毕业设计 基于单片机的俄罗斯方块游戏系统的设计_第1页
毕业设计 基于单片机的俄罗斯方块游戏系统的设计_第2页
毕业设计 基于单片机的俄罗斯方块游戏系统的设计_第3页
毕业设计 基于单片机的俄罗斯方块游戏系统的设计_第4页
毕业设计 基于单片机的俄罗斯方块游戏系统的设计_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

毕业设计(论文)题目:基于单片机的俄罗斯方块游戏系统的设计摘要俄罗斯方块是一款风行全球的电视游戏机和掌上游戏机游戏,它白俄罗斯人阿列克谢·帕基特诺夫创造 故得此名。俄罗斯万块的根本规那么是移动、旋转和摆放游戏自动输出的各种方块使之排列成完整的一行或多行并且消除得分。由于上手简单、老少皆直从而家喻户晓,凤靡世界。这次设计将使用52单片机和HD61202液晶显示控制驱动器和JM12864J液晶显示器组合,来实现比拟简单的俄罗斯方块设计。此次设计初期是在keil和proteus联合仿真中进行,编程语言为51汇编,后期是进行实物焊接。论文描述了俄罗斯方块的主要功能图数的实现。关键词:俄罗斯万算真Ab.acttrssapoulareviiongamemachineandgamemachinegamwhichAexeiPajitnovinventedbyRssianitwasisname.etrsetebsicruesofmovemenrotationanddisplayegameautomaticallyoutputoftebowhichearrangedintoacompleteoneormorerowsandliminaescore.Duetouesimpl,agesthsmakeknowntoeveryfamilyswpttheworld.Bsedonsinechipcomputerofthecurriculumdesignofopportunity1willusete51sing-chipmicrocomputerandHD61202LCDcontroldriverand1128641liquidstaldisplaycombinatioto创outamoresimpeRssiansqedesign.Thsdesignisinealykeilandproteusjointsmulatioprogrnminglanguaefor51assembllaerisweldingmaterial.'epaperdescribesthemainfunctionsoftheRussianboxfunctionofterealizationf.Keywords:RusiansquaAgorithSimulation2目录摘要…

.……

..1rat… 2目录…

.……

..1引整体设计方错未定义书签。11 系统的核心局部单片机212液晶显示模块62 系统程序的设计…141 俄罗斯方块驱动流程图142 俄罗斯方块所有绘作流程15.3 俄罗斯方块中按下键的流程图16.4 俄罗斯方块所有绘作流程图173系统仿真181Potes软件介绍182Keil软件介绍183俄罗斯方块系统ROTS仿真………19结论21参考文献………

..22附录A 电路原理23附录B主要程序…万附录C英文资料和中文翻译45结束语…1引 E游戏是人们活动中一项弈常重要的内容有人认为如果哪一天人类对所有的游戏都失去兴趣恐怕世界的末日就要到了。电脑对游戏的奉献有目共睛,现在摸过电脑的人很少有没玩过电脑游戏的喜欢游戏的人也很少有不玩电脑的。俄罗斯万块一款凤靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作exnov制作的,它看似简单但却变化无穷舍人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯万块时代。究其历史,俄罗斯万块最早还是出现在PC机上而我国的用户都是通过红白机了解、喜欢上它的。现在联众又将重新掀起这股让人沉迷的俄罗斯万块凤潮。对一般用户来说它的规那么简单,容易上手,且游戏过程变化无穷而在"联众俄罗斯万块"中,更有一些联众网络游戏所独有的魅力一有单机作战与两人在线对战两种模式,用户可任选一种进行游戏。网络模式还增加了积分制使用户既能感受到游戏中的乐趣也给用户提供了一个展现自己高超技艺的场所。俄罗斯万块游戏可以说是随计算机的开展而开展并不断推陈出新演变出各种类似游戏,深受广阔玩家喜爱。这个游戏有的简有的复杂,但其根本原理是一样的都是对运动的方块进行组合来训练玩家的反响能力。本文利用单片机进行俄罗斯方块设计采用汇编语言进行编程基于汇编语言的原因是在编写程序的过程中对于程序的执行会有一个比拟匮观的表现。1系统的核心局部单片机1.1单片机的选择单片机微型计算机是微型计算机的一个重要分支也是颇具生命力的机种。单片机微型计算机简称单片机特别适用于控制领域故又称为微控制器。通常单片机由单块集成电路芯片构成,内部包含有计算机的根本功能部件:中央处理器、存储器和1/0接口电路等。因此单片机只需要和适当的软件及外部设备相结合便可成为一个单片机控制系统。20世纪末,电子技术获得了飞速的开展,在其推动下,现代电子产晶几乎渗透了社会的各个领域有力地推动了社会生产力的开展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高产晶更新换代的节奏也越来越快。时间对人们来说总是那么珍贵工作的忙碌性和繁杂性容易使人忘记当前的时忘记了要做的事情当事情不是很重要的时候,这种遗忘无伤大雅。但是一且重要事情时的耽误可能酿成大祸。目前单片机正朝着高性能和多晶种方向开展趋势将是进步向着CMOS化、俄功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面开展。下面是单片机的主要开展趋势。单片机应用的重要意义还在于它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大局部功能,现在己能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术是传统控制技术的次革命。单片机过3代的开展正朝着多功能、高性能、低电低功耗、低价格、大存储容量、强1/0功能及较好的结构兼容性方向开展。其开展趋势不外乎以下几个方面:(1)多功能单片机中尽可能地把所需要的存储器和1/0口都集成在一块芯片上使得单片机可以实现更多的功能。比方AWMCA(可编程计数器阵列)WT(监视定时器…看家狗)、高速10口及计数器的捕获/比拟逻辑等。有的单片机针对某一个应用领域集成了相关的控制设备以减少应用系统的芯片数量。例如,有的芯片以51内核为核心,集成了USB控制器SMATCARD接口3解码CAN或者叮℃总线控制器等LDCD或D显示驱动器也开始集成在8位单片机中。(2)高效率和高性能为了提高执行速度和执行效率 单片机开始使用IS、流水线和SP的设计技术使单片机的性能有了明显的提高表现为:单片机的时钟频率得到提高;同样频率的单片机运行效率也有了很大的提升;由于集成度的提高,单片机的寻址能力、片内OM(LAH和RAM的容量都突破了以往的数量和限制。由于系统资源和系统复杂程度的增加,开始使用高级语言(如C语言)来开发单片机的程序。使用高级语言可以降低开发难度,缩短开发周期增强软件的可读性和可移植性,便于改良和扩充功能。(3)低电压和低功耗单片机的嵌入式应用决定了低电压和低功耗的特性十分重要。由于CMOS等工艺的大量采用,很多单片机可以在更低的电压下工作(2V或0.9V)功耗已经降低到uA级。这些特性使得单片机系统可以在更小电源的支持下工作更长的时间。(4)低价格单片机应用面广使用数量大,带来的直接好处就是本钱的降低。目前世界各大公司为了提高竞争力在提高单片机性能的同时十分注意降低莫产品的价格。在此我们采用型号为AT89S52的单片机。因为:AT89S52是一种低功耗、高性能CMOS8位微控制器具有8K在系统可编程Flash存储器。使用Atmel公司高密度弈易失性存储器技术制造与工业80C51产晶指舍和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上拥有灵巧的位CPU和在系统可编程Flash使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方。MCS-51单片机产晶兼容8字节在系统可编程Flash存储器、100次擦写周期、全静态操作OHz-33MH、三级加密程序存储器3个可编1/口线、三个1位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。AT89S5具有以下标准功能:8字节Flash25字节RAM31/口线,看门狗定时器个数据指针,三个1位定时器/计数器一向级中断结构,全双工串行口,片内晶振及时钟电另外AT89S5可降至OHz静态逻辑操作,支种软件可选择节电模式。空闲模式下CP停止工作允许RAM、定时器/计数串口、中断继续工作。掉电保护方式下RAM内容被保存振荡器被冻结,单片机一切工作停止匮到下一个中断或硬件复位为。AT89S5单片机PDIPLCTQF三种封装方式 在此我选用DPI也就是双列亘插封装的单片机此种封装有如下特点:1)适PC的穿孔安装;2)易于对PC布线;3)操作方便;.2AT89S52引脚功能描述AT89S52单片机的管脚说明如图2.1所示:Pl.0Pl.Pl.213Pl.415Pl.617

VCC一401 39PO.O(AOO)1 :-寸TPO.01)-寸TPO.2(AD2)一6P0.4(A04)-PO.3P0.4(A04)-1 33PO.5(AD5)1-331PO.6(A06)1 ::Rl

PO.707)←

'.P3.(RXD)

E/PP-ι二P3.1σXD)

←ALE/PROG←

-P3.(ITO)3.(ITl)P3.4σ0)P3.5σ1)P3.R)P3.(D)XTAL2XTAL1GND

PSENI 二1 :P2.7(AI5)11 :1 27P2.6(AI4)11一寸?P2.5(A'3)1一寸?P2.412)1一÷←I2.3(All)」二一寸?P2.210)1一寸?P2.1(A9)一÷←P2.0(A)1 二-图2.1DIP封装AT89S52单片机引脚结构图1)VCC:电源。(2)GND:接地端。(3)PO口(PO.O-PO.7):P口是一位漏极开路的双向1/。作为输出口,每位能驱动个TT逻辑电平。对PO端口""才 号|脚用作高阻抗输入。当访问外部程序和数据存储器时PO口也被作为位地/数据复用。在这种模式下PO具有内部上拉电阻。Flas编程时P口也用来接收指舍字节;在程序校验时,输出指舍字节。程序校验时 需要外部上拉电阻。(4)P(P.0-P.7):P是一个具有内部上拉电阻位双1/口P输出缓冲器能驱动TT逻辑电平。对P端口""时,内部上拉电阻把端口拉高,此时可以作为输口使用。作为输入使用时被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外P1.和P.分别作定时器/计数的外部计数输入(P.2)和时器/计数的触发输入(P1.T2EX),具体如表2所示:在Flas编程和校验时 P口接收位地址字节。2-1P口第二功能引脚号 第二功能P.0P1.1

T2(定时器/计数器T2的外部计数输入),时钟输出T2EX(定时/计数器T2的捕/重载触发信号和方向控制)P5P.6P.7

OI(在系统编程用)SO(在系统编程用)SCK(在系统编程用)(5)口(2.0-P7):口是一个具有内部上拉电阻的位双1/口,输出缓冲器能驱动TT逻辑电平。对端口时内部上拉电阻把端口拉高,此时可以作为输入口使作为输入使用时,被外部拉低的号|脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或位地址读取外部数据存储器(例如执行OVXDPR)时P口送出高八位地址。在这种应用中口使用很强的内部上拉发送。在使位地址(如MOVXRI)访问外部数据存储器时2口输2锁存器的内容。la编程和校验时 口也接收高位地址字节和一些控制信号。(6)口(3.0-7):3口是一个具有内部上拉电阻位双向1口,输出缓冲器能驱动TT逻辑电平。对端口时内部上拉电阻把端口拉高,此时可以作为输入口使作为输入使用时,被外部拉低的号|脚由于内部电阻的原因,将输出电流(IL)0口亦作为89S5第二功能使用,如2-所示:表2-2口第二功能引脚号第二功能0RXD(串行输入)1XD(串行输出)2NTO外部中断0)3NTO外部中断0)3.4O(定时器。外部输入)3.5T1(定时器1外部输入)6WR外部数据存储器写选通)3.7RD外部数据存储器写选通)在flash编程和校验时 3口也接收一些控制信号。RST复位输入。晶振工作时R脚持续个机器周期高电平将使单片机复位。看门狗计时完成后R脚输9个晶振周期的高电平。特殊存放器R(地址EH)上的DRO位可以使此功能无效DIS默认状态下复位高电平有效。∞:地址锁存控制信号(LE)是访问外部程序存储器时,锁存位地址的输出脉冲。fla编程时,此引脚(POG)也用作编程输入脉在一般情况下L以晶振六分之的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调在每次访问外部数据存储器时LE脉冲将会跳如果需要,通过将地址为8ESF的位'1"AL操作将无效。这一位'1"ALE仅在执行MOVMOV指舍时有效。否那么AL将被微弱拉高。这AL使能标志位(地址为8ESF的位)的设置对微控制器处于外部执行模式下无效。PSFN:外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89S5从外部程序存储器执行外部代码时PSE在每个机器周期被激活两次,而在访问外部数据存储器时PSE将不被激。EAlVP访问外部程序存储器控制信号。为使能从OOO到FFFF的外部程序存储器读取指舍EA必须接GN。为了执行内部程序指舍E应该VC。flash编程期间E也接收1VPP压。XTAL1振荡器反相放大器和内部时钟发生电路的输λ端。XTAL2振荡器反相放大器的输出端。1.3晶振特性AT89S5单片机有一个用于构成内部振荡器的反相放大器 XTAL1XTAL分别是放大器的输入、输出端。石英晶体和陶瓷谐振器都可以用来一起构成自激振荡器。从外部时钟源驱动器件的话XTAL可以不接,而XTAL1接人,如2-所示。由于外部时钟信号经过二分频触发后作为外部时钟电路输入的所以对外部时钟信号的占空比没有其它要求最长低电平持续时间和最少高电平持续时间等还是要符合要求的。如图2.2所示:C133pF-33pF

I Y111\任仨

P3.4(TO)EPPXTAL1XTAL2RST3.7(.6(WR)AT89S52图2.2内部振荡电路连接图2液晶显示模块显示器局部是由HD61202液晶显示控制驱动器和JM12864J液晶显示器组成m的下面对其分别进行介。2.1液晶显示控制驱动器HD61202的特点H61202液晶显示控制驱动器是一种带有驱动输出的图形液晶显示控制器,它可直接与8位微处理器相连 它可与D203配合对液晶屏进行行、列驱动。H61202是一种带有列驱动输出的液晶显示控制器 它可与行驱动器D61203配合使用,组成液晶显示驱动控制系统。(1)内藏64x64096位显示RAMRAM中每位数据对应D屏上一个点的亮、暗状态;(2)D61202是列驱动器,具有64路列驱动输出;(3)D61202读、写操作时序与68系列微处理器相符,因此它可直接与68系列微处理器接口相连;(4)D61202的占空比为1/32-/6。.2液晶显示控制驱动器D61202的引脚功能引脚CCSCS3为芯片的片选端|为读写使能信号,它是在下降治时数据被锁存入H61202的-在E高电平期间 数据被读出:/W为读写选择信号当它为一时为读选遇,为军事时为写选遇;OD7为数据总线RT为复位信号复位信号有效时,关闭液晶显示,使显示起始行为0T可跟MU相连由MCU控制;也可噩接接VD,使之不起作用D61202的引脚功能如下表3所表2-3H202的引脚功能号脚符号状态号脚名称功能CSCSCS3输λ芯片片选端CS1和CS2低电平选通βS3高电平选遇。E输λ读写使能信号在E下降泊敖据被锁翻写〉HD61202;在E高电平期间,数据被读出/W输λ读写选择信号W=1为读选遇W=O为写选逼RS输λ数据、指舍选择信号RS1为数据操作RS=O为写指舍或读状态DBO-DB7=态数据总线RT输λ复位信号复位信号有效时,关闭液晶显示,使显示起始行为ORT可跟MCU相连由MCU控制;也可直接接VD,使之不起作用。.3液晶显示控制驱动器D1202的指令系统H6丁202的指舍系统比拟简单 总共只有七种。现分别介绍如下:.显示开/关指舍/W

RSI7 DB6 D5 4 3 2 1 O。1 。当1时CD显示RAM中的内容O时关闭显示。.显示起始行(OW)设置指舍该指舍设置了对应液晶屏最上一行的显示RAM的行号有规律的改变显示起始行可以使D实现显示滚屏的效果。/W

S 7 D6 D5 DB4 D3 D2 D1 DO显示起始行(0-63)3.页A)置指舍R/W |7 DB6 B5 4 B3 D2RS ID1 DBO0 0 1 11 0 11111 1 1 页号(0-7)显示RAM共4行,分8页,每页8行。4.列地址(YAddress)设置指舍/WSIDB7D65 B4 3 D2 1 Ooo I 01显示列地址(ι63)设置了页地址和列地址就唯一确定了显示RAM中的一个单元这样MCU就可以用读、写指舍读出该单元中的内容或向该单元写进一个字节数据。5.读状态指舍R/W叫四7D6B5阳D32B1BO1 o 1SY 0 /FF RT 0 0 0 0该指舍用来查询D61202的状态各参量舍义如下:SY:1内部在工作0正常状态/FF:显示关闭0显示翻开T:复位状态0正常状态在BUSY和RT状态时除读状态指舍外真它指舍均不对H61202产生作用。在对H61202操作之前要查询SY状态 以确定是否可以对D61202进行操作。6.写数据指舍/w RSID7 DB6 D5 DB4 DB3 B2 1 DBO01I写数据读、写数据指舍每执行完次读、写操作列地址就自动增一,必须注意的是,进行读操作之前,必须有次空读操作,紧接着再读才会读出所要读的单元中的数据。7.读数据指舍刚 RSIB7 6 D5 阳 B3 2 B1 O读显 数 据.4HD61202的软件设计液晶控制器H061202一共有七条指舍从作用上可分为两类显示状态设置指舍和数据读/写操作指舍。详见指舍系统可查看图形液晶显示器产品有关手册。显示起始行设置中L5-LO为显示起始行的地址取值在0-3FH(1-64行)范围内。页面地址设置中P2-PO为选择的页面地址取值范围为0-7H代表1-8页。列地址设置中C-CO为Y地计数器的内容,取值在0-FH(1-64行)范围内。显示器上丁28点x64点每8点为一字节数据都对应着显示数据RAM在H061202芯片内)点对应一个bi计算机写人或读出显示存储器的数据代表显示屏上某一点列上的垂匮8点行的数据00代表最上一行的点数据01为第二行的点数据07为第行的点数据。该it=1时点那么显示黑点出来,该bi=O时该点那么消失。另外LCO指舍中有·条disayON/OFF指舍displayON时显示RAM数据对应显示的画面;displayOFF那么画面消失RAM中显示数据仍存。点阵字模文件的建立:由于MGLS12864液晶显示器没有内部字符发生器所以在屏幕上显示的任何字符、汉字等须自己建立点阵字模库然后均按图形方式进行显示。由于H061202显示存储器的特性,不能将计算机内的汉字库和其它字模库提出匮接使用,需要将其旋转90度后再写人。点阵字模库建立包括以下几个方面:(1)建立8x16点阵常用字符、数字、符号字模库。可选用计算机BIOS中AS川的8x16字模库所有字符按照ASCII值从小到大升序排列。asm{MOVa1130h/*H=11一功能调用。装人字库至字库Vmovb6AL=30h取点阵信息勺int10hBH=6取ROM8X16点阵指(VGA)勺movaes尸出口EBP指字库指针V10VasclIeS.axmovabpmovascii_bax};ascioffset=ascii_bp+16*asciicode;forU=0;j<16;j++)bufO=peekb(ascii_eascii_offsetj)/*读16字节点阵数据叮for(m=m<16;m++)尸点阵数据转换成LCO格式数据*/{m<8){beginbyte=;shiftn=17}else{beginbyte=115;sn=115";}forU=0;j<8;j+)ascii8x16[m]=(ascii8x16[m]+(buf[beginbyte-j]>>(shiftn-m))&Ox0)<<1;也可选用UCOOS的ASC16文件做字模ASC16文件的字符为8x16点阵。所有字符按照ASCII值从小到大升序排列。计算字符首地址的公式:字符首地址=字符的ASCII码值x16加字模库首地址。(2)建立所用到的16x16点阵字模库。汉字字符可选用UCDOS的HZK16文件做字模库HZK16文件的字符为 16x16点阵。所有字符按照区位码从小到大升序排列。计算汉字字符首地址的公式如下:汉字首地址=((区-1)x94位码-1)x3。作者用C语言编写的读取UCDOS点阵字库字模程序,完成宇模读取。数据重新排列,并按MCS-51汇编程序的要求写成相应格式的文本文件。p=((quma-1)*94+weima-1)*32;ωlifie'fe旷旷川"气飞"HZ6"rb''seekclibflong)SEEK_SET);fread(busizeof(unsignedchar3cclibfile);尸读32字节点阵数vfor(m=O;m<32;m++){尸点阵数据转换成LCD格式数据叮if(m<8){beginbyte="14";shiftn="7";}elseif(m>=8&&m<16){beginbyte="15";shiftn="15";}elseif(m>=16&&m<24){beginbyte="30";shiftn="23";}else{beginbyte="3";shiftn="3";}forO=O;j<8;j++)hzk16x16[m]=(hzk1刘6[m]+(buf[beginbyt2*j]>>(shiftn-m))&Ox0)<<丁;(3)常用图形(如产晶商标等)的点阵图形的建立。对已有的图形可采用扫描仪进行扫描,然后用图形处理软件进行处理,再将BMP格式文件转换成MCS-51的汇编文件的格式。以上所有的字模数据都存放在单片机W78E58的程序存储器中,如用到的汉字、图形较多,可选用较大容量的程序存储器。通用子程序:通用子程序分左半屏、右半屏写指舍代码子程序和写显示数据子程序。液晶显示驱动器HD16202内部有个忙标志存放器,当BF=1时,表示内部操作正在运行,不能接受外部数据或指舍。下面子程序中设指舍代码存放器为COM,数据存放器为DAT。(COMMEQU20H/*指舍存放器*/DATAEQU21H户数据存放器*/)1)左半屏写指舍子程序WCMD1: MOVDPT#CRADR1 ;/*读状态字口地VWAIT1: MOVX@DPTR;尸读状态字VJBACC.WIT1 ;尸制忙标志B,如BF=1忙,等待VMOVDPT#CWADR1;尸写指舍字口地址叮MOVCOMM;尸取指舍代码叮MOVX@DPTA;尸写指舍代码*/RET2)左半屏写数据子程序WR_DATA1:MOVDPT#RADR1 ;尸读状态字口地VWAIT11: MOVX@DPTR ;/*读状态字勺JBACC.WIT11 ;尸制忙标志B,如BF=1忙,等VMOVDPT#DWADR1;尸写数据字口地址叮MOVDATA ;尸取数据/MOVX@DPTA;尸写数V一本vvvvsoon'

LCDPANEL128x64dotsDBODB7巳IRSTCS1CS2EA..!EDK一-l

LEDBaclghtRET3)右半屏写指舍子程序WR_CMD2和右半屏写数据子程序WDATA2的编制罔左半屏子程序相同只是对应口地址不同。.5JM12864J的电路结构特点JM12864J是使用HD61202及其兼容控制驱动器作为列驱动器,同时使用HD6120为行驱动器的液晶模块。由于HD612不MP发生联系,只要提供电源就能产生行驱动信号和各种罔步信号比拟简单因此这里就不作介绍了。下面主要介绍一JM12864的逻辑电路图。JM12864J共有两HD6120及其兼容控制驱动器和一片HD61203如2.所图2.3 JM12864J的逻辑电路图在JM12864J中,两片HD61202的ADC均接高电平RST也接高电平,这样在使用M1284J时就不必再考虑这两个引脚的作用CSA跟H202(门的CS1相连CSB跟H202(2)的C1相连,因此CSA、CSB选通组合信号为CSA,CSB01选遇(门,蚀 ,CSB=0选遇(2),对于JM28J,只要供应D、VSS和VO即可H202和H61203所需的电源将由模块内部电路在VD和VVSS的作用下产生。.6JM12864J的应用以下内容为以单片机89S52为例机的接口电路控制电路为直接访问方式的接口电路。电路原理图如图.4所示:1286与1926口P07负电源WR2 ERDP3P2P21

All0A9A8

I:IICSA图.4 89S52与液晶的接口电路根据以上电路原理图中液晶的各引脚与单片机的接法可得本设计的液晶模块电路如图5所示:由图5可以看出:VSS接地-数字电源DD接+5V:数据、指舍选择信号S接单片机3.2口-读写选择信号W接单片机3.1口O-D7分别接单片机的0-7口;芯片、芯片2的片选分别接单片机的.43.3口;复位端、背光正电源LEA接+5V:液晶驱动电压VE、青光负电源LK接地。+5V

。VSS。..L+5V

2 VDP2 3 VOP.1 4 RSP0 5 WP0 6 EP.1 7 DBOP2 g 1P23 9 DB2P4 10 DB3P5 11 4P6 2 5P7 3 6P.4 4 DB7P.3 5 S116 CS27 IRST8 V卫9 LEDALEDK图2.5液晶模块电路2.7盘电路键盘电路本设计共采用按键3个 分别与单片机的P3.7口相连分别对旋转、左移、下、右。第13页共4页3 系统程序的设计.1俄罗斯方块驱动流程图消并除置于制把为上口zmhu当ME即由据惘川叩移变根据变化绘阁(绘提示图前阁形〉Y图1俄罗斯万块驱动图流程图.2俄罗斯方块所有给图工作流程图第15页共64页绘提示阁N 从消行的行的列开始表对应的色彩

消并为

行清山忡忡厅把上U而mh〈 〉〈 〉结束 数前据罔下改图2俄罗斯方块所有绘作流程图 移变3.3俄罗斯方块中按下键的流程图记下下阵图形时的位置()直把图形下降到底YNl北京科技大学远程与成人教青学院毕业设计(论文)提示阁形景前图形〈结束 〉图3.3俄罗斯方块按下键的流程图4系统仿真.1Proteus软件介绍Proteus软件是来自英国Labcenterelectronics公司的EDA工具软件Proteus软件有十多年的历史 在全球广泛使用 除了真具有和其它EDA工具一样的原理布图PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理菌的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果配合系统配置的虚拟仪器如示波器、逻辑分析仪等 不需要别的 Proteus建立了完备的电子设计开发环境!Proteus组合了高级原理布图、混合模式PICE真PCB设计以及自动布线来实现一个完整的电子设计系统。此系统受益于15年来的持续开发,电子世在其对PCB设计系统的比拟文章中评为最好产晶'heRoutetoPCBCA飞Proteus产品系列也包含了革命性的VM技术用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LC键盘RS232终端等动态外设模型来对设计进行交互仿真。其功能模块一个易用而又功能强大的ISIS原理布图工具Proteus混合模型SPICE仿真;ARESPCB设Proteus真器的一个扩展ProteusVSM:便于包括所有相关的器件的基于微处理器设计的协同仿此外还可以结合微控制器软件使用动态的键盘开关按钮LEDs甚至LCD显示CPU模型。(1)支持许多通用的微控制器如PIAVHC11以及8051;(2)交互的装置模型包括:LED和LCD显RS232终通用键盘;(3)强大的调试工具包括存放器和存储断点和单步模式;(4)IARC-SPY和KeiluVision3等开发工具的源层调试;(5)应用特殊模型的DLL界面,提供有关元件库的全部文件。4.2KeiI软件介绍KeilC51Visin2集成开发环境是KeilSoftware.In/KeilElektronikGmbH开发的基于80C51内核的微处理器软件开发平台 内嵌多种符合当前工业标准的开发工具可以完成从工程建立到管理、编译、链接、目标代码的生成、软件仿真、硬件仿真等完整的开发流程尤其是C编译工具在产生代码的准确性和效率方面到达了较高的水平,而且可以附加灵活的控制选项,在开发大型工程时鼻常理想KeilC51集成开发环境的主要功能有以下几点:(1)μVision2forWindows:是一个集成开发环境,它将工程管理、源代码编辑和程序调试等组合在一个功能强大的环境中;(2)C51国际际准化C交叉编译器:从C源代码产生可重定位的目标模块;(3)A5丁宏汇编器从80C51汇编源代码产生可重定位的目标模块;(4)BL51链接/定位器:组合由C51和A1产生的可重定位的目标模块生成绝对目标模块;(5)LB51库管理器:从目标模块生成连接器可以使用的库文件;(6)OH51目标文件至HEX格式的转换器从绝对目标模块生咸telHex文件;(7)RTX-51实时操作系统:简化了复杂的实时应用软件工程的设。这个工具套件是为专业软件开发人员设计的 但任何层次的编程人员都可以使用并获得80C51单片机的绝大局部应用KeilSoftware提供了一流的80C51系列开发工具软件,下面描述每个套件及其内容:1)PK51专业开发套件PK51专业开发套件提供了所有工具,适合专业开发人员建立和调试80C51系列微控制器的复杂嵌入式应用程序。专业开发套件可针对80C51及其所有派生系列进行配置使用;2)DK51开发套件:DK51开发套是PK51的精简版,它不包括RTX51Tiny实时操作系统。开发套件可针对80C51及其所以派生系列进行配置使用-3)编译器套件:如果开发者只需要一个C编译器而不需要调试系统,那么CA51编译器套件就是最好的选择CA51编译器套件只包含Vision21DE集成开发环境,CA51不提供f..Vision2调试器的功能。这个套件包括了要建立嵌入式应用的所有工具软件可针对80C51及其所有派生系列进行配置使用;表4-1开发套件和工具对照表ComponentsPK51DK51CA51A51FR1uVision2ProjectManagement&EditorJ」」 JA51AssemblerJJJJC51CompilerJJJBL51LikelcatorJJJJLI51ibraryMagaerJJJJuVision2ebuggeSimlatrJJRTX51nyJRTX51FullJ4)A51汇编器套件:A51汇编器套件包括一个汇编器和创立嵌λ式应用所需要的所有工具。它可针对80C51及其所有派生系列进行配置使用-5)RTX51实时操作系统(FR51):RTX51实时操作系是80C1系列微控制器的一个实时内核RTX51Full提供RTX51Tiny的所以功能和一些扩展功能,并且包括CAN通信协议接口子程序;6)比拟表:表4-1列出了每个套件的功能袤的顶上一栏为工具套件名称,袤的左边一列为软件组成局部 使用这个对照表可以选择符合需要的套件。.3俄罗斯方块系统PROTUES仿真用Proteus软件,根据俄罗斯万块电路原理图,画出仿真图。电路图画完后使用Proteus与Keil联调 这里使用的软件是KeilμVision3.8与Proteus.。(1)翻开PROTEUS的安装目录,进入help目录,翻开ARM.HLP帮助文挡,点击联:RemoteDebuggerDriverDownloadandInstallremotedebuggerdriverforKeiluVision,下载VDMAGIEX运行安装到KEIL安装目录VDM5dll文档会自动安装到KEIL\C51\BIN目录。(2)翻开KEIL中翻开要联调的工程在projectworkspace"target1上点右loptionsfortarget'target1。在翻开的对话框中点击到Debug选项卡,在右上角上先中USE选项,并在下拉菜单中选中proteusVSMSimulator,在旁的Settings点一下如果是proteus在罔一台电脑hot:丁2.0.0.p:800,点确OK保。(3)翻开proteus并翻开要仿真的图纸,点击Debug菜单/选中UseRemoteDebugMonito。(4)完成,如果程序和电路图没问题,在KEIL中buildall并且仿真运行后,可以在proteus看到实时效果了如图4.1所示:LCD1ÄrY126"sse-m

EIEne-DE84+5v

A 「图4.1Protues真结论通过3个月地全心投入和辛苦努力终于完成了基于单片机的俄罗斯万块游戏的设计设计的过程就是综合运用所学知识和学习新知识的过程。由于经验缺乏难免出现一些小的失误但无论怎样本次毕业设计对于我来说都一次难得的锻炼时机,使我积累了许多珍贵的经验。本文对单片机制作的俄罗斯万块游戏的运行原理进行了分析,全面、详细地阐述了俄罗斯万块游戏的设计过程。本游戏机已经到达了掌上娱乐的要求但在设计上还留有进一步改善的余地如可以美化游戏界面、参加和动作音乐、力回馈系统。毕业设计的整个开发过程是曲折的首先在硬件设计上由于开始对D液晶屏不熟悉加之莫程序量较多所以,在设计的过程中不免有些困难,通过我多方面的查找资料并不断的向老师和同学请教,结合网络资源最终找出比拟完善的方案在理论上能够实现功能要求。经过几个月的前期学习我积累了很多的关于液晶显示方面和C语言设计方面的资料并对电路的整合有了一个根本的概念最后设计出总的电路图经过不断的测试与修改,最终完善了硬件电路的设计。对于软件设计,因为以前的编程经验不够,再加上对89S52这一芯片的了解不是很彻底,因此在这方面花费了很多的精力和时间。当然这个过程不乏有同学的帮助我弈常感谢实验室同学的帮助在我的软件调试过程中给了我至关重要的帮助并给了我很多弈常好的建议。当然由于我在理论和实践方面存在定的缺乏所以在设计思路和实现功能上难免有缺乏和没有想到的地方还请各位老师给予指。参考文献[高凌琴,陈青华.俄罗斯方块游戏关键技术探讨[J].信息技术与信息.2021.[2谭浩.C程序设计.[M]北京:清华大学出版社2003.[3张齐.杜群贵单片机应用系统设计技术一一基于C语言编[M]北京:电子工业出版社2004.[4刘洪AT89C2051单片机及1/0口的扩展方[J].山东电子1997116-18[5胡汉才.单片机原理及其接口技[M].清华大学出版社2000[6]王彦朝.二维数组在俄罗斯万块游戏编程中的应用[J].信息与电脑(理论版)2021-0446-47[7]王晓威,唐叔进,邢瑞.基于单片机和液晶显示器的游戏开发[J].电子世界2007:30-31[8徐金增.单片机编程仿真实验系统的设计与实[0]山东师范大学2021,4[]GeorgeLeKarinaNEdmondKwang.Designofringoscillatorbasedvoltagecontrolledoscillator.ProjectFinalReport[R].2005[10]YeagerBretHowtotroubleshootyourelectronicscale.PowderandBulkEngineerin1995附录A

电路原理图•,•.…..•J......·e············--ee··一

,." ',.,...••…... -...…….,"..,…………,….•…...。...... -…….……·…….…..…•••• ••........ -..,……...,..,,..,附录B 主要程序#iclude<AT89X51.H>#defineucharuignedchar#defineuint uigedint#defineDOWNTh伍30#defineMAXHANG20#defineMAXLIE 16#defineMAXPIX 3#definePUSHON 50#defineLCDP2#defineEN P30#defineRW P31#dneRS P32#defineC1P33#defineCS2P34#defineKEYLFfP35#defineKEYDOWNP36#defineKEYRIGHP37#defineKEYROTATIONPl0uchargkey=O旺keystate=tOmsl=tOs=downtimgap=O;ucharmia=,n=O;uchardownok;bitkeyflatimeupda,ahionupdae;ucharidatacubeMap[MAXHANG[2];pedefstruc{blockis;uintscore=O;ucharspeed=l;

ucharcode*box;ucharcube:4;ucharstte:4;charrow;charcolumn;}block;ucharcodebittable[8]{OxlOx2Ox4Ox80};ucharcodecube[]=* ••••*/Ox,, , ,/.•••*/Ox,Ox,Ox,,4,4,*••*/Ox,,4,,/..••

, ,*/Ox,,/* ••••

, ,//x,,,*/Ox,,,/..••

, ,Ox,,*/, ,};ucharcodeasü[]=

, 0Ox3O504,04Ox3//0-OxOOx4Ox7Ox4OxO//-1-Ox6Ox5Ox4Ox4Ox4//-2-Ox2Ox4Ox4Ox4Ox3//-3-Ox1Ox1OxIOxOxl//-4-Ox2Ox4Ox4Ox4Ox3//-5-Ox3Ox4Ox4Ox4Ox3//-6-OxOOx7Ox0Ox0Ox0//-7-Ox3Ox4Ox4Ox4Ox3//-8-Ox4Ox4Ox4Ox2Oxl//-9-OxOOx3Ox3OxOOxO//-:-10//nextOx7Ox0Ox0OxlOOx7//--llOx7Ox4Ox4Ox4Ox4//-E-12Ox6Ox1Ox0Ox1Ox6//-X-13OxOOxOOx7OxOOxO//-T-14//speedOx2Ox4Ox4Ox4Ox3//-S-15Ox7Ox0Ox0Ox0Ox0//--16Ox7Ox4Ox4Ox4Ox4//-E-17Ox7Ox4Ox4Ox4Ox3//D-18//scoreOx3Ox4,O4OxOx2//-C-19Ox3Ox4,O4,04Ox3//-0-20Ox7Ox0Ox1Ox2Ox4//-R-21OxOOxOOxOOxOOxO,//--22//GAMEOVEROx3Ox4O505Ox7//-G-23Ox7Ox1OxlOx1Ox7//-A-24Ox7Ox0OxOOx0Ox7//-M-25OxlOx2Ox4Ox2Oxl//-V-26/ffThE// OxOOx4Ox7O4OxOO //1-27//////////////////voidlcdCmd(ucharcmd)bita;ea=EA;E=ü;EN=O;RW=O;RS=O;LC=cmd;EN=l;EN=l;E=ü;EAea;//一voidlcdWriteByte(ucharch)EN=ü;RS=l;RW=O;LC=ch;E=l;EN=l;EN=O;//一voidlcdStge(ucharpage)pae&=Ox7;page+=Oxb8;lcdCm(page);//一voidldtColumn(ucharcoumn)column&=Ox3f;clumn+=Ox40;lcdCmd(column);//一-//characterfron=5*8voidldlayChar(ucharindeucharpagucharcolume)uchartemp;umtp;p=5*index;for(ilumeicolume;i+)ifi64)CSl=l;CS2=O;temp=l;seCSl=O;CS2=1;temp=i-64;lcdStage(page;lcdSetColumn(temp);lcdWriteByte(asü[p+]);//一一一一一一­//rectangle(560)voidrectangle(void)ucharpage;CSl=l;C2O;lcdStage(O);lcdSetColumn(2;EN=O;RS=l;RW=O;LC=Oxff;EN=l;EN=l;EN=O;for(i=3i51;i++)EN=O;RS=l;RW=O;LC=Oxl;EN=l;EN=l;E=O;E=O;RS=l;RW=O;LCD=Oxff;E=l;EN=l;E=O;//一fo(age;age<7;pag忡)cdStage(page);lcdSetColumn(2);EN=O;RS=l;RW=O;LC=Oxff;EN=l;EN=l;E=O;for(i=3i51;i忡)EN=O;RS=l;RW=O;LCOxO;EN=l;EN=l;EN=O;EN=O;RS=l;RW=O;LCD=Oxff;EN=l;EN=l;EN=O;//一一一一一一一lcdSetPage(7);lcdSetColumn(2);EN=O;RS=l;RW=O;LCD=Oxlf;EN=l;EN=l;EN=O;for(i=3i51;i+)EN=O;R=l;RW=O;LC=Oxl0;EN=l;EN=l;EN=O;EN=O;R=l;R=O;LC=Oxlf;EN=l;EN=l;EN=O;/一一一一一一//x:列;y行,页33voidldutix(uc缸xucharucharfag)uchardabitmasnextbit;bitbflapflaea;x=x1AXIX;y=y*MAXIX;bflag=O;tag=O;i=y%8;if(i==O)bitmask=Ox;seif(i==l)bitmask=Oxe;seif(i==2)bitmask=Oxc;seif(i==3)bitmask=Ox38;seif(i==4)bitmask=Ox70;seif(i==5)bitmask=OxeO;se证==6)tag=l;bitmask=OxcO;nextbit=l;seif(i==7)bflag=l;bitmask=Ox80;nextbit=3;(x<62)CSl=l;CS2=O;seif(x>63)x-=64;CSl=O;CS2=1;sepflag=l;lcdStage(y/8);for(i=xix+MAXPIX;i++)if(pflag)if(i==6211i==63)CSl=l;CS2=O;lcdStage(y/8);elseif(pflag&&i=64)CSl=O;CS2=1;lcdStage(y/8);lcdSetColumn(i);ea=EA;EA=O;EN=O;LC=Oxff;RS=l;RW=l;EN=l;EN=O;EN=l;dat=LCD;EN=O;if(flag==l)dal=bitmask;elsedat&=-bitmask;lcdSetColumn(i);EN=O;RW=O;RS=l;LC=dat;EN=l;EN=l;EN=O;EA=ea;i(flag)lcdStage(y/81);for(i=xi+MAXPIX;i++)if(pflag)if(i==6211i==63)CSl=l;CS2=O;lcdStage(y/81);elseif(pflag&&i==64)CSl=O;CS2=1;lcdStage(y/81);lcdSetColumn(i);ea=EA;EA=O;EN=O;LC=Oxff;RS=l;RW=l;EN=l;EN=O;EN=l;dat=LCD;EN=O;if(flag==l)datl=nextbit;lIU##VII--ddokkknbkee-:::Mnuttddddc

else汉-hhkCCCU-eeJMmmbnπ汉川,‘』川,‘』A 1·UMAυU八HHOmw(x·LmMHHOmw(EN=O;;LRW=O;RS=l;LC=dat;EN=l;EN=l;EN=O;EA=ea;

nuT,/一一voidlcdClωr(void)ucharpage;CSl=l;CS2=O;fo(age=O;page<8;page+)lcdStage(pag);lcdSetColumn(O);for(i=O;i<64;i+)lcdWriteByte(O);CSl=O;CS2=1;fo(age=O;page<8;page+)lcdStage(pag);lcdSetColumn(O);for(i=O;i<64;i+)lcdWriteByte(O);ldlayChar(1STAR*WIDE);lcdPlayChar(1STAR+2*WIDE);ldlayChar(1STA*WIDE);//SPEEDldlayChar(1STAR);ldlayC(1STAR+*WIDE);ldlayChar(1STAR+2*WIDE);ldlayChar(1STAR+3*WIDE);ldlayChar(1STA+WIDE);//01lcdPlayChar(,TAR+2*WIDE);ldlayChar(STAR+3*WIDE);//SCOREldlayChar(1STAR);ldlayChar(1STAR+*WIDE);ldlayChar(2STAR+2*WIDE);ldlayChar(2STAR+*WIDE);ldlayChar(1STARWIDE);ldlayChar(STAR+l*WIDE);ldlayChar(0STA2*WIDE);ldlayChar(STAR+3*WIDE);ldlayC(STARWIDE);//IMEldlayChar(7STAR);ldlayChar(OSTAR+*WIDE);ldlayChar(10STAR+2*WIDE);lcdPlayChar(STAR+3*WIDE);ldlayChar(OSTARWIDE);//-一一voidshowScoreSpeed(void)ucharnum[5];chari;umttemp;temp=score;for(i=0i;忡)num[i]=temp10;tempmp/l0;for(=;i>O;i--)if(num[i==0)num[i]=22;elsebreak;forfornei>-一)dn-'Im-Cha(nuiSTA4-)WID);JMJMldlaChared/10,4STAR2WIDE);ldlaChar(md10STAR3WIDE)%/一一-

nuvoidtiSrvr(void)if(tiupdae)tiupdaeO;ldlaChar(fen17STAR);ldlChar(fen107STAR+WIDE);ldlaChar(lOSTAR+WIDE);cdPlaChar(mio/0STAR3WIDE);dlChar(mia0STARWIDE);if(fashionupe)fhionupe;ldaCha(2STAR2WID);/=====================================================oidt(void)inrrupt1harey;η1=65531000/25;τ1=656-1000)25;downtiegp++;s=++ts%1o;if(tOm=)if(tOms=50)fashionupe1;/一'eyOff;KEYLEF=l;KEYRIG1;KEYROTATIOl;KEYDOW1;if!KEYLFf)key=;if(!KEYRIGH)ke=l;d}LU(!KE们‘R,,.、ATION)geekkke=2;

VJVde.vtif(!KEYDOWN)tke=3;swtch(eytae)

huobn5xcase0:if(key!=gkey)gkey=key;keystate=l;beak:case1:if(key==gkey)Osl=O;keystae2;if(key!=xff)kyfag=l;elsekeystate=O;beak;case2:if(key==gkey)if(tOs<USHON)Osl++;//==========================================================voidhowexCube(ucharcode*uc盯uchary)uchartemp;for(i=0i4;i+)temp=l;forG=司<司++)if(p[i]&temp)ldPutPi(x+y+l);elseldPuti(x+y+O);temp<<=l;/一一一一一一一一一一'voidcreCue(vod)staticucharnext;this.cube=next;eTIβ%7;is.row=O;iS.c山=6;is.tae=O;this.box=cube+16isbe;hwNetCue(u+16丰nex13);//一-voidshowCuMap(void)usignedcharhanlitemp;fo(ang=MAXHANG-1hagO;hang--)if(ueMa[ag][0]==0&&ueMap[hang][1]==0)break;for(lie=0;lie<(MAXffi8);lie+)emp=e;ifueMa[ang[e]&OxOl)ldPutix(temphan1);ifueMa[ang[li]&Ox02)ldPutix(tβmphan);ifueMa[ang[e]&Ox04)ldPutix(temp+han);ifueMa[ang[e]&Ox08)ldPutix(emp+han);ifueMa[ang[e]&Ox10)ldPutix(tβmp+han);ifcubeMa[ang[e]&Ox20)ldPutPix(mp+hanl)ifcubeMa[ang[lie&Ox40)ldPutixmp+han1;ifcubeMa[ang[li]&Ox80)ldPutix(tβmp+han1);//一一一-voidwriteCubeToMap(void)ucharrocoummp;ucharhalie;for(row=0;row<4;row++)temp=l;forcolumn=0;column<4; lumn++)if(this.box[row]&temp)hang=this.row+row;le=ths.clumn+column;cubeMa[ang[lie/8]l=bittable[lie%8];ldPuti(iehan);temp<<=l;//一一一一voidclarubeFrmap(void)ucharrocoummp;ucharhanlie;for(row=0;row<4;ro忡)tem=l;forcolumn=0;column<4;column++)ifis.box[row]&temp)hangis.row+row;lie=this.column+column;cubeMa[ang[le/8]&=-bittable[lie%8];lcPutPx(liehan0);temp<<=l;//一-ucharchekorder(void)if(this.box[3]!=0&&this.row>(MAXHANG-4))retum1;lseif(this.box[2]!=O&&is.row>(MIANG-3))retum1;lseif(this.box[l]!=O&&this.row>(MAXHANG-2))retum1;lseif(this.box[O]!=O&&is.row>(刀NG-1))retum1;//一-if((this.box[O]&Ox01)11(this.box[l]&Ox01)11(this.box[2]&Ox01)lI(this.box[3]&Ox01))if(this.column<O)retum1;seif(is.box[O]&Ox02)11(is.box[l]&Ox02)11(is.bo2]&Ox02)l(this.box[3]&Ox02))if(this.column<-l)retum1:seif((this.box[O]&Ox04)11(is.box[l]&O04)11(i.bx[2]&Ox04)II(is.box[3]&Ox04))if(this.colum2)rtum1;seif((this.box[O]&Ox08)11(is.box[l]&O08)11(is.box[2]&O08)l(this.box[3]&Ox08))if(this.column<-3)retum1://一一一((this.box[O]&Ox08)11(is.box[l]&Ox08)11(this.box[2]&Ox08)IIis.box[3]&Ox08))ifis.column(MAXLIE-4))ren1:seif((this.box[O]&Ox04)11(is.box[l]&O04)11(thi.bx[2]&Ox04)II(is.box[3]&Ox04))if(this.coumn(MAXLIE-3))rtum1;seif(is.box[O]&Ox02)11(is.box[1]&O02)11(i.ox[2]&Ox02)II(this.box[3]&Ox02))if(this.coumn(MAXLIE2))rtum1:seif((this.box[O]&Ox08)11(is.box[1]&O08)11(i.bx[2]&Ox08)lI(thi.bx[3]&Ox08))if(this.column>(MAXLIE-l))rtum1://--retum0;//一ucharcheckClask(void)ucharrocolumtemp;ucharhanlie;for(row=Oow<4;row++)temp=1;forcolumn=0;coumn4lumn++)if(this.box[row]&temp)hang=this.row+row;lieis.column+column;ifueMa[ang[lie/8]&bittable[lie%8])return;temp<<=1;retum0;/一voidcheckap(void)uchardelete;bitfull;full=O;delete=O;for(i=MAXHANG-li>一)if(cubeMap[i][O]==O&&cubeMap[i[1==0)break:if(cubeMap[i[O==Oxff&&cubeMap[i[1]=Off)dee++:full=1:fo(j=注>O;j-)cubeMa[j[0=cubeMa[j-1[0];cubeMa[j[]=cubeM-1][1];1++:cubeMap[O[0=0;cubeMap[O[]=0;if(full)if(lee==I)score++;elseifdelete==2)score+=4;elseifdelete==3)score+=9;else(delete=)score+=16;rectangleO;howCueMapO;if(score<50)speed1;leif(score<100)speed=2;elseif(score<500)eed=3;elseif(score<1000)spee=4;elseif(score<5000)speed=5;elseif(scor<0000)speed=6;elseif(score<20000)eed=7;elseif(score<30000)seed=8;leif(score<40000)eed=9;elseifscore<50000)eed1;seif(score<60000)speed=l;sespeed1;howcoreSpeedO;/oidmovLft(void)cearCuFrmaO;s.clum-;ifchekorerO11checklsk())is.column++;writeCubeToMapO;/oidmovRgh(void)cearCuFrmaO;吐.column++;ifchekorderO11checkClask())is.column--;writeCubeToMapO;/oidmoveDown(void)cearCuFrmaO;.ow++;ifchekorderO11checkClask())is.row--;downok=l;sedownok=O;wreueToMapO;if(downok)che1apO;/一一voidueRation(void)uchartemp;temp吐1s.state;clearCubeFrmapO;吐ls.state=+is.state%4;iS.box=cube+16iS.cube+4is.state;ifchekorderO11checkClask())this.state=temp;iS.box=cube1this.cube+4is.state;writeCubeToMapO;///////////////1///voidmain(void)'OD=Ox1;η10=(65536-10000)/256;τ1ρ=65536-10000)%256;EA=l;ETO=l;τRO=l;lcdlniO;for(tOms=O;tOm<.MAXHAG;tOms++)cubeMap[ns][O]=O;cubeMap[Os[1]=0;while(l)createCubeO;ifcheckClaskO)rectangleO;#defineSHOWSTAR12#defineGAP8ldayChar(2SHOWSTAR);//GEldlayChar(2SHOWSTAR+GAP);ldayChar(2SHOWSTAR+2*GAP);ldlayChar(1SHOWSTAR+3*GAP);ldlayChar(24HOWSTAR);//OVERldlayChar(2SHOWSTAR+GAP);ldlayChar(1SHOWSTAR+2*GAP);ldlayChar(2SHOWSTAR+3*GAP);ns=O;while(tOms<95);/延时2秒ns=O;while(tOms<95);((void(code丰)(void))OxOOOO)();while(l)timeServerO;if(keyflag)keyflgO;Osl=O;if(gkey==O)moveLeftO;if(gkey==l)movRghO;if(gkey==2)cubeRotationO;if(gkey==3)moveDownO;if(gkey==O&&tOmsl--PUSHON)Osl-=lO;moveL0;if(gkey==l&&tOmsl=PUSHON)Osl-=lO;movRghO;if(gkey==3&&tOmsl--PUSHON)tOmsl-lO;moveDownO;ifdowntimegap>(DOWNTh-speed))moveDownO;downtimegap=O;if(downok)downok=O;break;附录C英文资料和中文翻译Overview'e8051fam.lyofmicrocontrollersisbasedonanarchitecturewhichishigWyoptimizedforembeddedcontrolsystems.ItisusedinawidevarietyofapplicationsfrommilitaryequipmenttoautomobilestothekeyboardonyourP.SecondonlytotheMotorola68Hl1ineightbitprocessorssalethe801farnilyofmicrocontrollersisavailableinawidearrayofvariations齿mmanufacturerssuchasItePhilpandSiemens.Thes

温馨提示

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

评论

0/150

提交评论