基于单片机俄罗斯方块设计实现分析Word格式.docx
- 文档编号:18518376
- 上传时间:2022-12-18
- 格式:DOCX
- 页数:72
- 大小:2.23MB
基于单片机俄罗斯方块设计实现分析Word格式.docx
《基于单片机俄罗斯方块设计实现分析Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机俄罗斯方块设计实现分析Word格式.docx(72页珍藏版)》请在冰豆网上搜索。
Control;
Simulation
目 录
1绪论
1.1课题背景
如今,计算机系统的发展已明显地朝三个方向发展,这三个方向是:
巨型化,单片化,网络化。
对于解决复杂计算和高速数据处理的问题仍然是巨型机在起作用,因而,目前巨型机正在朝高速及高处理能力的方向发展。
单片机在出现时Intel公司就给其单片机取名为嵌入式微控制器。
单片机的最明显的优势,就是可以嵌入到各种仪器、设备中。
这一点是巨型机和网络不可能做到的。
单片机在部已集成了越来越多的部件,这些部件包括一般常用的电路,例如:
定时器,比较器,EEPROM,D/A转换器,串行通信接口,Watchdog电路等。
俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,目前在网络单机游戏和kele8等上都有它的身影。
而它曾经造成的轰动与经济价值可以说是游戏史上一件大事。
因此,对它的研究,无论从技术上,还是社会意义上看都是很有价值的。
单片机在游戏上的应用是具有非常大的潜力的,它能将游戏带入到另一个阶段。
单片机在游戏应用方面如模拟射击,贪吃蛇,推箱子等,它可以很好的说明单片机功能的强大,体现其更高的可控性和高集成度的好处,因此它可以在电子游戏方面成为一个不可计量的明日之星。
1.2课题的研究现状及意义
现今国外的俄罗斯方块游戏设计主要有基于PC机上Windows平台的俄罗斯方块游戏,基于手机平台的智能俄罗斯方块游戏以及基于单片机平台的俄罗斯方块游戏等。
前两种属于高端游机,性能优越,但成本高,而且计算机编程已不是新命题,VB、VC版本的俄罗斯方块游戏都有发布。
国许多论文对俄罗斯方块游戏的教学意义做了深入讨论,主要集中于游戏中方块变换的算法研究,其中利用枚举算法和利用矩阵转置的算法最为多见。
另外,还有许多文章探讨了游戏在嵌入式平台中的开发以及应用。
单片机的应用很广泛,家用电器、办公室自动化、智能产品、商业营销、工业自动化等都有它的身影,如今在游戏领域里单片机的作用也愈发明显。
虽然用单片机来设计一个简单的俄罗斯方块游戏程序似乎有点大材小用,但这仅仅是一个单片机在嵌入式游戏方面的简单应用,正因为它的前景无可预计,所以才有这个设计,此次设计是一个单片机在游戏上应用的一个例子,它就可以很好的说明单片机功能的强大,更高的可控性和集成度高的好处,随着计算机技术、通信技术和软件技术的迅猛发展。
再加上3C产业(计算机、通讯、消费电子)的合成及4G移动通信时代的到来,嵌入式软件发挥了更加重要的作用,它的发展为绝大多数电子设备注入了新的活力,各种装备与设备上由于有了嵌入式系统软件的加入,大推动了其行业渗透性应用,嵌入式技术不仅提高了产品的技术含量,更成为产品增值的关键,在整个软件产业中占据了重要地位,并受到世界各国的广泛关注。
1.3课题任务及要求
单片机在手持娱乐设备上的应用具有非常大的潜力,它能将其带入到一个新的阶段。
本次毕业设计实现的主要容是:
应用按键来控制方块的变换与移动;
消除一行并计分;
方块堆满时结束游戏等俄罗斯方块的基本功能。
该系统应具有以下功能:
1、运用LCD进行显示;
2、通过按键可对相关的参数值进行设置,同时实现控制方块的变换与移动。
2整体方案设计
2.1设计方案
本次设计初期是在keil和proteus联合仿真中进行,编程语言为C语言,后期是进行实物焊接。
本次采用单片机STC89C52RC控制模块提供电源,LCD显示,采用独立按键,直接在I/O口线上接上按键开关。
因为设计时精简和优化了电路,所以剩余的口资源还比较多,使用四个按键,分别是旋转键,下键,左键,右键。
这种方案实现可行,既满足系统功能要求,又减少了系统实现的复杂度。
而由于STC89C52是一种带8K字节闪烁可编程可檫除只读存储器的低电压,高性能COMOS8的微处理器,该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
89C52置8位中央处理单元、256字节部数据存储器RAM、8k片程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片时钟振荡电路。
2.2系统的核心部分单片机
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
通常,单片机由单块集成电路芯片构成,部包含有计算机的基本功能部件:
中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路装化等几个方面发展。
单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。
下面是单片机的主要发展趋势。
单片机经过3代的发展,正朝着多功能、高性能、低电压、低功耗、低价格、大存储容量、强I/O功能及较好的结构兼容性方向发展。
其发展趋势不外乎以下几个方面:
1.多功能
单片机中尽可能地把所需要的存储器和I/O口都集成在一块芯片上,使得单片机可以实现更多的功能。
比如A/D、PWM、PCA(可编程计数器阵列)、WDT(监视定时器---看家狗)、高速I/O口及计数器的捕获/比较逻辑等。
有的单片机针对某一个应用领域,集成了相关的控制设备,以减少应用系统的芯片数量。
例如,有的芯片以51核为核心,集成了USB控制器、SMARTCARD接口、MP3解码器、CAN或者I*I*C总线控制器等,LED、LCD或VFD显示驱动器也开始集成在8位单片机中。
2.高效率和高性能
为了提高执行速度和执行效率,单片机开始使用RISC、流水线和DSP的设计技术,使单片机的性能有了明显的提高,表现为:
单片机的时钟频率得到提高;
同样频率的单片机运行效率也有了很大的提升;
由于集成度的提高,单片机的寻址能力、片ROM(FLASH)和RAM的容量都突破了以往的数量和限制。
由于系统资源和系统复杂程度的增加,开始使用高级语言(如C语言)来开发单片机的程序。
使用高级语言可以降低开发难度,缩短开发周期,增强软件的可读性和可移植性,便于改进和扩充功能。
3.低电压和低功耗
单片机的嵌入式应用决定了低电压和低功耗的特性十分重要。
由于CMOS等工艺的大量采用,很多单片机可以在更低的电压下工作(1.2V或0.9V),功耗已经降低到uA级。
这些特性使得单片机系统可以在更小电源的支持下工作更长的时间。
4.低价格
单片机应用面广,使用数量大,带来的直接好处就是成本的降低。
目前世界各大公司为了提高竞争力,在提高单片机性能的同时,十分注意降低其产品的价格。
综上所述采用型号为STC89C52RC的单片机。
2.3程序整体思路
单片机上的程序设计一般是一个大循环结构,对于俄罗斯方块的程序设计,首先产生一个伪随机数,其围是0-6,分别对应俄罗斯方块中随机产生的七种方块,然后程序根据此数值所对应的图形模块装入RAM的固定区域,紧接着将此图像写入LCD所对应的显示缓冲区中,显示程序将缓冲区的容显示在显示屏上,如果没有控制键按下,图形将自动向下移动。
如果有键按下,程序将根据按下的键来改变图形存储区的值,同时程序将判断图形是否已到达边界,当图形最上层到达显示区顶部,则游戏结束,此时将清除显示缓冲的容,游戏重新开始。
2.4图形显示
下坠物本质上为16个小砖块组成的正方形。
下坠物一共有7种,比如有"
田"
字形的,"
L"
字形的等等。
每种下坠物一共有4种旋转变化。
每种下坠物都有一个id,分别为1到7。
因为对于一种下坠物来说,其颜色是固定的。
我们同样可以用该种颜色在BRICK_COLORS数组中的下标值加上1,作为下坠物的id。
例如"
形下坠物的id为3,其变化形式为:
因为每一个下坠物有四种状态,所以我们可以考虑用一个长度为4的数组来存贮一个下坠物的4种状态,数组中每一个元素表示该下坠物的一种状态。
从上图可以看出,用一个4X4的二维数组来存储一种下坠物的一种状态最合适不过了。
在有色砖块出现的位置,值为1,而只有背景颜色,无需绘制的位置,值为0。
因此,整个"
形下坠物的4种状态可以用一个3维数组来表示:
protectedintblockpattern3[][][]={{0,1,0,0},{0,1,0,0},{0,1,1,0},{0,0,0,0}},{{0,0,0,0},{0,1,1,1},{0,1,0,0},{0,0,0,0}},{{0,0,0,0},{0,1,1,0},{0,0,1,0},{0,0,1,0}},{{0,0,0,0},{0,0,1,0},{1,1,1,0},{0,0,0,0}}};
2.5消层算法
设置循环变量数R2=128,即总共要扫描128次,每一次循环过程中检测此行是否已满,也就是检测这一行所对应的存储单元是否全为1,如果全为1则将此行消去,即将此行对应的RAM清零。
同时将此行上面RAM的容按每列依次下移,下移完之后重新令R2=0,又从第一行开始检测。
此行不全为零时只需令R2=R2+1,直到R2=128消层过程结束。
2.6系统总体结构框图
系统总体结构框图,如图2.1所示。
本设计总体模块包括单片机中央主控模块、电源模块、按键电路和显示模块组成。
本设计由电源模块为电机,单片机提供能源;
显示模块用来实现俄罗斯方块游戏界面、图形显示;
按键电路用按键控制目标方块的变换与移动。
图2.1系统总体结构框图
2.7系统的工作过程
单片机在上电初始化完毕后会等待通信单片机发出启动信号,单片机检测到启动信号后,从FLASH存储器中读取控制信息,再根据控制信息执行对应模式的显示任务。
开始让它显示个积木,在按键没实现控制的时候,每隔1S下移一次,有触底处理功能,当碰到底的时候图形不能下移,判断能否消行,能消行则消行,不能再判断是否到顶,到底则从新开始,没到底产生下个随即数,中间有5个按键控制,一个实现图形左移,一个实现图形右移,一个实现下移,一个实现旋转,一个复位。
3俄罗斯方块的硬件设计
3.1单片机电路
3.1.1STC89C52RC单片机介绍
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6时钟/12时钟可选。
1.STC89C52RC单片机的工作模式
(1)掉电模式:
典型功耗<
0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序。
(2)空闲模式:
典型功耗2mA。
(3)正常工作模式:
典型功耗4Ma~7mA。
(4)掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备。
2.在此我选用STC89C52单片机PDIP封装方式也就是双列直插封装的单片机此种封装有如下特点:
(1)适合PCB的穿孔安装;
(2)易于对PCB布线;
(3)操作方便。
3.1.2STC89C52RC单片机的标准功能
STC89C52RC单片机的引脚说明图,如图3.1所示。
图3.1DIP-40封装的STC89C52单片机引脚说明
(1)VCC(40引脚):
电源电压
(2)VSS(20引脚):
接地
(3)P0端口(P0.0~P0.7,39~32引脚):
P0口是一个漏极开路的8位双向I/O口。
作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。
在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。
此时,P0口部上拉电阻有效。
在FlashROM编程时,P0端口接收指令字节;
而在校验程序时,则输出指令字节。
验证时,要求外接上拉电阻。
(4)P1端口(P1.0~P1.7,1~8引脚):
P1口是一个带部上拉电阻的8位双向I/O口。
P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。
对端口写入1时,通过部的上拉电阻把端口拉到高电位,这是可用作输入口。
P1口作输入口使用时,因为有部上拉电阻,那些被外部拉低的引脚会输出一个电流(IIL)。
此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX),具体如表3.1所示。
在FlashROM编程和校验时,P1口接收低8位地址字节。
表3.1P1.0和P1.1引脚复用功能
引脚号
功能特性
P1.0
T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1
T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
(5)P2端口(P2.0~P2.7,21~28引脚):
P2口是一个带部上拉电阻的8位双向I/O端口。
P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。
对端口写入1时,通过部的上拉电阻把端口拉到高电平,这时可用作输入口。
P2作为输入口使用时,因为有部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(IIL)。
在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX
DPTR”指令)时,P2送出高8位地址。
在访问8位地址的外部数据存储器(如执行“MOVX
R1”指令)时,P2口引脚上的容(就是专用寄存器(SFR)区中的P2寄存器的容),在整个访问期间不会改变。
在FlashROM编程和校验时,P2口也接收高8位地址字节和一些控制信号。
(6)P3端口(P3.0~P3.7,10~17引脚):
P3是一个带部上拉电阻的8位双向I/O端口。
P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写入1时,通过部的上拉电阻把端口拉到高电位,这时可用作输入口。
P3做输入口使用时,因为有部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流(IIL)。
在对FlashROM编程或程序校验时,P3还接收一些控制信号。
P3口除作为一般I/O口外,还有其他一些复用功能,如表3.2所示。
表3.2P3口引脚复用功能
复用功能
P3.0
RXD(串行输入)
P3.1
TXD(串行输出)
P3.2
I
(外部中断0)
P3.3
P3.4
T0(定时器0外部输入)
P3.5
T1(定时器1外部输入)
P3.6
(外部数据存储器写选通)
P3.7
RST(9引脚):
复位输入。
当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。
看门狗计时完成后,RST引脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
ALE/
(30引脚):
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在flash编程时,此引脚(
)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址位8EH的SFR的第0位置“1”,ALE操作将无效。
这一位置“1”,ALE仅在执行MOVX或MOV指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位(地址位8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
(29引脚):
外部程序存储器选通信号(
)是外部程序存储器选通信号。
当AT89C52从外部程序存储器执行外部代码时,
在每个机器周期被激活两次,而在访问外部数据存储器时,
将不被激活。
/VPP(31引脚):
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,
必须接GND。
为了执行部程序指令,
应该接VCC。
在flash编程期间,
也接收12伏VPP电压。
XTAL1:
振荡器反相放大器和部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
3.1.3晶振特性
STC89C52单片机有一个用于构成振荡器的反相放大器,XTAL1和XTAL2分别是放大器的输入、输出端。
石英晶体和瓷谐振器都可以用来一起构成自激振荡器。
从外部时钟源驱动器件的话,XTAL2可以不接,而从XTAL1接入,如图2.2所示。
由于外部时钟信号经过二分频触发后作为外部时钟电路输入的,所以对外部时钟信号的占空比没有其它要求,最长低电平持续时间和最少高电平持续时间等还是要符合要求的。
如图3.2所示。
图3.2振荡电路连接图
3.1.4单片机的复位电路
单片机通常采用上电自动复位和按钮复位两种方式。
通常因为系统运行等需要,常常需要人工复位,本设计采用按钮复位的方式,即按下开关一定时间就能使RTS引脚端为高电平,从而使单片机复位。
同时,简单复位电路中,干扰信号易串入复位端,由此可能会引起部某些寄存器错误复位,这时可在RST引脚上接去耦电容。
在STC12C5A60S2单片机中有两个复位端口,即RST/P4.7、RST2/P4.6,当晶振频率小于或等于12MHz时,使用RST端口。
由于本设计使用外接12MHz的晶振作为振荡时钟。
3.2LCD12864液晶屏
3.2.1液晶显示模块概述
LCD12864汉字图形点阵液晶显示模块,可显示汉字及图形,置8192个中文汉字(16X16点阵),128个字符(8X16点阵)及64X256点阵显示RAM(GDRAM)。
主要技术参数和显示特性:
电源:
VDD3.3V~+5V(置升压电路,无需负压);
显示容:
128列×
64行;
LCD类型:
STN;
与MCU接口:
8位或4位并行/3位串行;
配置LED背光;
多种软件功能:
光标显示、画面移位、自定义字符、睡眠模式等。
液晶显示器件独具的低压,微功耗特性使它在单片机系统中得到了广泛的应用,常用的液晶显示模块分为数显液晶模块、点阵字符液晶模块和点阵图形液晶模块,其中图形液晶模块在我国应用较为广泛,因为汉字不能像西文字符那样用字符模块即可显示,要想显示汉字必须用图形模块。
本设计所选择的LCD是AMPIRE128×
64的汉字图形型液晶显示模块,可显示汉字及图形,图形液晶显示显示器接口。
3.2.2模块引脚说明
APM12864引脚说明表,如表3.3所示。
表3.3AMPIRE128×
64引脚说明表
管脚号管脚电平说明
1CS1H/L片选择信号,低电平时选择前64列
2CS2H/L片选择信号,低电平时选择后64列
3GND0V逻辑电源地
4VCC5.0V逻辑电源正
5V0LCD驱动电压,应用时在VEE与V0之间加一2K可调电阻
6RSH/L数据\指令选择:
高电平:
数据D0-D7将送入显示RAM;
低电平:
数据D0-D7将送入指令寄存器行
7R/WH/L读\写选择:
读数据;
写数据
8EH/L读写使能,高电平有效,下降沿锁定数据
9DB0H/L数据输入输出引脚
10DB1H/L数据输入输出引脚
11DB2H/L数据输入输出引脚
12DB3H/L数据输入输出引脚
13DB4H/L数据输入输出引脚
14DB5H/L数据输入输出引脚
15DB6H/L数据输入输出引脚
16DB7H/L数据输入输出引脚
17RS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 俄罗斯方块 设计 实现 分析