基于51单片机的俄罗斯方块设计与实现
所属栏目:计算机应用论文
发布时间:2011-02-22 16:13:46 更新时间:2025-01-11 17:00:26
何杰鑫 李文睿 吴海欣 李小燕
广东科技学院 机电工程学院,广东 东莞,523083)
摘 要:老年痴呆症(也称阿尔茨海默病)是一种常见的神经退行性疾病,通常在老年人中发生。玩游戏也是运用脑部运动,可以让老年人尽量避免老年痴呆的问题,比如说俄罗斯方块。本篇论文主要设计了一款基于51单片机的俄罗斯方块游戏机。选用了STC89C52单片机作为主控芯片,控制8*8点阵显示屏、独立按键、LED闪烁等模块。在软件设计上,进行了俄罗斯方块游戏的控制程序的编写,并在Keil软件上进行了运行、调试,最后连接电路板通过STC软件烧录进单片机中,从而来实现该游戏的制作。
关键字:STC89C52单片机;俄罗斯方块;预防和干预
一、引言
随着科技的发展和社会老龄化的加剧,老年痴呆症已成为全球关注的公共卫生问题。老年痴呆症不仅严重影响患者的生活质量,也给家庭和社会带来了沉重的负担。因此,开展老年痴呆症的预防和干预研究具有重要的现实意义。
在众多预防措施中,科学家们发现通过改善日常生活方式,特别是通过增加认知活动,可以有效降低老年痴呆的发病风险。俄罗斯方块作为一款经典的益智游戏,以其简单的规则和丰富的变化,能够激发玩家的思维和反应能力,对于锻炼大脑和提高认知功能具有潜在的积极作用。
基于51单片机的俄罗斯方块游戏设计与实现,不仅是一项技术挑战,也是一种创新的尝试。51单片机因其功能和灵活的操作被广泛应用,成为电子设计和教学工作中的重要工具。通过将51单片机应用于一些简单游戏的开发,可以为老年人提供一个简单易用、互动性强的认知训练工具。本论文旨在探讨如何利用51单片机开发俄罗斯方块游戏[2],以期为老年痴呆的预防提供一种新的技术手段。首先,本文将介绍俄罗斯方块游戏的基本原理和设计要求,然后详细阐述基于51单片机的硬件电路设计、程序编写和调试过程。同时,本文还将探讨如何利用按键输入实现游戏的交互操作。通过本研究,我们期望为老年人提供一个有趣且有益的认知训练平台,帮助他们在游戏中享受乐趣,同时锻炼大脑,降低老年痴呆的发病风险。
二、方案设计
1、基本功能要求[1]
(1)基本玩法:包括初始化不同类型的方块,在游戏开始时可以随机生成不同类型方块,同时方块还会随着时间的推移进行周期性下移运动。
(2)控制系统:通过按键控制,用户可以操作方块向左移动、向右移动、一键下移以及旋转移动,并且这四类移动不分先后,是同一优先级。
(3)消去功能:在用户控制方块移动后或方块自动下移后,判断每一行是否都存在方块,若出现某一行都有方块则实现消去操作,同时获得分数。
(4)游戏显示功能:设置游戏显示画面,用户根据显示内容来进行游玩,其中主要包含俄罗斯方块的显示、得分区域的显示以及游戏胜利或失败的提示等。
(5)游戏玩法:用户操控方块实现消行处理后分数增加,当分数达到某一数值后显示游戏胜利的提示,并可选择性进入“无尽模式”(此模式下,可以在游戏规则下无限得分),若某一列方块触及游戏区域的顶部时则显示游戏失败的提示,需按下复位按钮重新开始游玩游戏。
2、系统总体方案设计
本文设计并实现了一个基于51单片机的俄罗斯方块游戏机,经过软件的合理设计,把俄罗斯方块显示在8*8的LED点阵屏上,在用户控制操作系统下实现俄罗斯方块的基本玩法。本设计采用STC89C52芯片作为主控芯片,本系统可以分为六个模块,STC89C52最小系统模块、晶振电路模块、复位电路模块、独立按键模块、游戏显示模块、游戏得分模块。本系统的设计理念是由STC89C52芯片作为中心处理器来控制整个系统。当接通电源时,用户通过按下独立按键改变高低电平,把控制信息传输到STC89C52单片机中,根据软件部分进行处理后,显示在俄罗斯方块的游戏显示区域以及得分区域。其中复位电路模块与晶振电路模块在STC89C52单片机正常工作中尤为重要。控制着STC89C52芯片的运行。系统主框图如图1所示。
图1 硬件整体框图
三、硬件电路与软件设计
1、硬件电路设计[5]
(1)控制芯片
在设计电路之前,首先需要选择系统的主控芯片,一般来说,我们需要从产品所实施的功能以及成本来落实选择,并根据具体设备和理念做相应的定制化芯片设计。与我们大脑类似,芯片主要功能体现在识别信号、读取信号、处理信号、控制操作等方面。本系统采用STC89C52最小系统板作为系统的主控芯片,根据用户的实际需求搭建电路。STC89C52主控芯片是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案,相比于其他单片机芯片,STC89C52对于本项目实现的俄罗斯方块游戏有着很高的适配性。
(2)晶振模块
在晶振选择方面,本系统选择的是12MHz的晶振,该晶振在识别代码上有很大优势,可以基于这个原理对8*8的点阵屏进行逐帧显示来实现显示俄罗斯方块移动的动画。电路设计如图2所示
图2 晶振电路模块
(3)游戏显示模块[4]
本系统选择8*8的LED点阵液晶显示屏作为俄罗斯方块游戏的显示区域。通过软件设计对液晶屏中LED的亮灭情况表示方块的存在与否。8*8的LED点阵液晶显示屏优势在于成本低廉,设计简单。当STC89C52单片机的P0口接低电平以及经过其P3口在74HC595译码器转化后的端口接高电平即可实现点亮8*8中某一个位置的LED灯。电路设计如图3图4所示。
图3 74HC595译码器
图4 8*8LED点阵液晶屏
(4)独立按键模块
独立按键模块中K1、K2、K3、K4分别设置为方块的左移、右移、一键下移、旋转四个操作方式。在用户按下独立按键给连接于单片机STC89C52的P3口接高电平后即可对方块进行操控。电路设计如图5所示
图5 独立按键
(5)得分系统
在方块实现下落的消行判断后,自定义设置消去一行游戏分数加1,若同时消去两行则分数加3。与此同时将分数以二进制的形式显示在八个LED灯上(LED灯亮表示1,灯灭表示0,最高得分为255)。电路设计如图6所示
图6 LED显示得分
1.2软件编程设计
(1)软件整体思路设计
整体来说,建立一个8x8的二维数组记录LED在每一个位置亮灭情况(1表示亮,0表示灭,为了方便起见设置九行八列的二维数组,以下均以9*8为前提描述),同时编写一个显示函数把二维数组的亮灭情况显示到点阵屏中。本系统核心思想主要是围绕母方块的坐标(x,y)进行,不同类型的方块根据母方块的坐标而生成对应位置的方块,方块的左右移动、下移以及旋转都是依据改变母方块的坐标而进行移位,再根据每种方块具体的移动逻辑而设置规则,这样就可以做到一个简易的按键控制系统,最后在方块下落至边界时设置一个堆叠判断、消行处理、得分系统,一个简单的俄罗斯方块方块游戏就制作完成了。
软件整体框图如图7所示。
图7 软件实现流程图
(2)软件方面举例
整体代码些许繁琐,仅展示本项目中“正方形”类型方块的一键下移模块。设置参数down_permit表示是否找到正方形方块所能一键下移的位置,找到赋值0,反之赋值1。设置参数down_replace表示找到位置后是否允许对正方形方块进行替换处理,即把正方形方块从初始位置替换成一键下移的位置,替换完成赋值0,反之赋值1。box_type()函数可以根据母方块的位置生成相应的方块类型。
3、实物调试
给开发板接上电源后,按下电源开关按钮开始游戏。自动生成随机方块类型,同位于中断系统的定时器[3]开始计时,使得俄罗斯方块定时(设置每隔1s下移一格)下移。用户通过按键控制对方块进行左右移动、一键下移、旋转操作,实现消行得分。当得分不低于5分时显示游戏胜利,此时可以选择按下K1进入“无尽模式”或按下复位按钮重新开始;当某一列方块顶到最上端时显示游戏失败,按下复位按钮重新开始。
图8 实物图
本项目基本完成所有预期效果,无论是按键控制系统亦或是游戏显示问题,都能为用户带来不错的体验。
四、结语
本项目基本实现了俄罗斯方块的基本玩法,从软硬件的角度对系统与各模块设计进行了详细的说明,设计独特的游玩模式,在保证基本游戏规则之下推出“无尽模式”的玩法。但本设计还存在些不足之处,比如可以拓展游戏显示屏与方块类型、增加音乐效果以及新的玩法设计等。
资助项目:2023年广东科技学院大创项目(项目编号:GK2023022)
参考文献
[1]郭璨,杨旭辉,张志昂.基于单片机的俄罗斯方块设计 [J].时代农机, 2018, 45 (09): 227-228.
[2]李晓彤,罗杉,王华阳,等.基于51单片机的综合游戏机的设计与实现 [J].工业控制计算机,2018,31(07): 143-145+153.
[3]李子华.单片机的定时中断系统的应用 [J].数字通信世界,2017,(09): 155.
[4]赵涟漪.基于STC89C52单片机的16×16点阵屏的设计 [J].电脑知识与技术, 2023, 19 (22): 64-66. DOI:10.14004/j.cnki.ckt.2023.1228.
[5]赵巧妮.基于Proteus的俄罗斯方块电路的设计和仿真 [J].微型电脑应用, 2016, 32 (08): 59-60.