张 洁
(福建农业职业技术学院 信息技术学院,福建 福州 350007)
本次设计的游戏控制[1]系统由硬件电路和软件编程构成。其中电路部分以AT89S52为主控单元,辅以键盘、显示、蜂鸣、电源、晶振等模块。玩家通过键盘电路模块来实现贪吃蛇游戏的操控,具体为通过上、下、左、右按键的输入控制贪吃蛇的移动路径。在没有撞击墙壁或与蛇身冲击的前提下,若吞食足够数量的食物则在显示屏上提示本关游戏顺利通关。同时,该游戏控制系统设置了复位、暂停、开启等按键功能来满足系统功能需求。当玩家顺利通过五关游戏,显示屏提示全部通关并初始化重新启动游戏。整个游戏的系统原理框图如图1所示。
图1 游戏控制系统原理框图
本设计通过并口的方式将LCD12864与AT89S52相连,如图2所示。当游戏开始,显示电路模块向玩家发出提醒,玩家根据需要输入对应功能的按键便可将控制效果展示在显示模块上。若贪吃蛇撞墙或蛇头撞到蛇身,显示[2]电路模块提示:“通关失败,再接再厉!”。
图2 显示模块接口电路图
系统采用独立式按键,每个按键占用一根I/O口线,每个按键电路相对独立。I/O口通过按键接地,I/O口有上拉电阻,没有输入按键指令时,引脚端置为高电平;反之引脚电平被拉低。I/O口内部有上拉电阻时,外部可不接上拉电阻。
为简化电路控制功能,本次设计仅设置6个按键。按键功能如表1所示。由于AT89S52芯片P0口内有上拉电阻,所以无需外加电阻。整个按键电路如图3所示。
图3 按键功能电路图
表1 按键功能表
设计采用上电复位与人工复位相结合的混合复位电路,如图4所示。由于引脚的内部电路已有上拉电阻作为保护,不再设置保护电阻。同时,上电时电容C4快速放电,避免了主控模块再次上电导致复位失败。若去除电容C4,则电路即为人工复位电路,按下复位键SW6系统开始复位。
图4 复位电路
报警电路由电阻R13和R14,三级管T1,有源蜂鸣器BEEP1组成,如图5所示,贪吃蛇每吞食一个食物,主控模块输出高电平,蜂鸣器[3]发出一个提示音“滴”。
图5 提示音电路
图6 晶振电路
主控模块振荡方式有4种,通过CONFIG配置寄存器的F0SC0,F0SC1位进行选择,并在EPROM编程时写入。本设计采用标准的振荡方式进行振荡,如图6所示,将晶振与AT89S52的XTAL1和XTAL2引脚连接,由C1和C2,晶振CY1和与非门组成电容三点式振荡器。
使用5V直流电流作为电源[4],将接入的220V交流电压转换为5V直流电压输出,从而实现整个游戏控制系统电路的供电。
按键检测子程序是用查询的方式来实现的,6个按键对应6个引脚,先对引脚进行初始化,设置P0口的电平为低电平,其他的为高电平。扫描流程如图7所示。
本次设计将显示界面划分为游戏区和提示区两块显示区域。游戏区是25×16(去除上下边框,实际游戏范围为25×14),提示区为7×16。显示程序用于初始化LCDl2864,实现游戏过程显示、选框显示、游戏状态显示等功能,显示流程如图8所示。
3.3 游戏过程的控制设计
该设计用于实现控制贪吃蛇的走向、速度、位置,并结合吞并食物、碰壁、吞食蛇身等情况来分析判断执行相应的操作。控制过程如图9所示。
图7 键盘扫描流程
图8 显示流程
图9 游戏过程控制设计
通过PROTEUS构建如图10所示的仿真平台对设计的游戏控制系统电路进行测试[5]。测试结果如图11所示。
图10 游戏控制系统仿真平台
图11 电路测试
本文结合游戏玩家的功能需求,对游戏控制电路展开分析和设计。整个游戏控制系统以AT89S52为主控单元,辅以显示、提示、复位等相应功能模块形成了一个较为完整的控制电路。最后,载入程序到主控模块并调整相应游戏参数对所设计的控制电路展开整体测试。实验表明,所设计的控制电路具有可行性。