基于ARM7的贪食蛇游戏设计_第1页
基于ARM7的贪食蛇游戏设计_第2页
基于ARM7的贪食蛇游戏设计_第3页
基于ARM7的贪食蛇游戏设计_第4页
基于ARM7的贪食蛇游戏设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

基于ARM7的贪食蛇游戏设计一、实验目的(1)掌握LCD屏和键盘的使用以及电路设计方法;(2)熟练掌握S3C44BOX处理器的LCD控制器和键盘控制器的使用;(3)掌握LCD显示程序的编写以及将LCD和LED以及键盘结合的使用;二、设备需求硬件EMBESTS3CEV40实验平台,EMBESTARM标准/增强型仿真器套件,PC机。软件EMBESTIDE集成环境,WINDOWSXP操作系统。三、实验要求在LCD屏幕上模拟贪吃蛇游戏。1基本要求(1)起初贪吃蛇蛇身为1节,贪吃蛇按照原来的方向行进直到通过按键改变贪吃蛇的行进方向。(2)在教学实验箱上的LCD上绘制贪吃蛇,在他们的四周绘制四面墙,蛇身在行进的过程中不能碰到墙壁,碰到则游戏结束,提示是否重新开始,按确认键重新开始。若能保持不碰墙超过1分钟则完成游戏,提示游戏是否重新开始,按确认键则重新开始。2扩展内容(1)实现贪吃蛇吃食物,食物跟1节蛇身一样大小,其位置随机产生。在行进的过程中遇到产生的食物会将食物吃掉,蛇身便长一节继续行进。当蛇身长到6节便提示游戏完成,屏幕显示祝贺,同时整个过程中8段数码管会显示蛇身的长度。(2)可用键盘按键选择游戏难度,难度通过设定蛇身的行进速度和游戏完成时蛇身的长度确定。四、设计思路(1)本次实验所需用到的硬件模块LCD(用来显示蛇的移动以及吃食物、撞墙等过程);键盘(用来控制贪吃蛇的上下左右移动以及游戏中的难度,蛇游动的快慢和蛇身体长度的设定);LED七段数码管(用于显示现阶段蛇身体的节数,初始为两节)。(2)因为本次实验要使LCD显示,并通过键盘产生中断控制贪吃蛇的运动状态和速度,所以本次实验主要同到的C文件主要是KEYBOARDC、LCDC、8LEDC和MAINC,主要在这几个文件上进行编程,同时考虑到要显示汉字等,因此也用到了ASCII6X8C、ASCII8X16C等文件。本次实验的关键是如何在LCD中显示蛇并且需要实现蛇的移动,以及蛇吃到食物之后如何实现蛇身增长一段以及如何用键盘产生中断控制蛇的移动方向、速度以及蛇身节数的上限值。五、实验原理1、44行列式矩阵键盘控制实验的原理44键盘按下图排列,水平4线分别接地址A1、A2、A3、A4,竖直4线分别接数据线D0、D1、D2、D3。当有键按下时,有一条行线与一条列线接通,只要根据接通的情况就能判断是那一个键被按下。图944行列式矩阵键盘该键盘是采用中断扫描的方式进行工作,列线选用了4个数据线,行线选用了4个地址线。列线接上拉电阻保持高电平,并通过与门74HC08将输出信号与MCU的中断EXINT1连接;行线接下拉电阻保持低电平。当有键盘按下时,该列线被拉为低电平,使得EXINT1输入也为低电平,MCU产生中断。中断产生后通过对键盘的行和列进行扫描的方法可以计算出是哪个键按下,并跳到相应的键盘处理程序中去。芯片74HC541是通过片选信号NGCS3来选通的,这样可以保证在键盘不使用的情况下MCU读不到行线的输入信息。74HC17是缓冲器恒等门,起隔离作用。如果没有74HC17,则当有键按下时,上拉电阻与下拉电阻将直接相连。选通NGCS3的地址为0X060000000X07FFFFFF。其接口电路如图10所示图10键盘接口电路2)键值判断表键值A4A3A2A1A0地址D3D2D1D0数据3111010XFD11100XE2111010XFD11010XD1111010XFD10110XB0111010XFD01110X77110110XFB11100XE6110110XFB11010XD5110110XFB10110XB4110110XFB01110X7B101110XF711100XEA101110XF711010XD9101110XF710110XB8101110XF701110X7F011110XEF11100XEE011110XEF11010XDD011110XEF10110XBC011110XEF01110X72、LCD显示的实验原理一LCD屏的原理液晶显示器LIQUIDCRYSTALDISPLAY,简写LCD将液晶置于两片导电玻璃之间,靠两个电极间电场的驱动,引起液晶分子扭曲向列的电场效应,以控制光源透射或遮蔽功能,在电源关开之间产生明暗而将影像显示出来。加上彩色滤光片,则可显示彩色影像。S3CEV40的液晶屏型号LRH9J515XA点宽024MM/DOT像素320240重量45G电压215V色彩16级灰度外型尺寸9837515MM3附加带驱动逻辑画面尺寸96CM38INCH驱动和显示液晶显示屏的显示要求设计专门的驱动与显示控制电路。驱动电路包括提供液晶显示屏的驱动电源、液晶分子偏置电压及液晶显示屏的驱动逻辑。显示控制部分可由专门的硬件电路组成,也可以采用集成电路()模块,例如公司的视频驱动器等;还可以使用处理外围控制模块。实验板的驱动与显示系统包括片内外设控制器、液晶显示屏的驱动逻辑以及外围驱动电路。S3C44B0XLCD控制器S3C44B0X处理器集成了LCD控制器,支持4BIT单扫描、4BIT双扫描和8BIT单扫描工作方式。支持屏幕水平和垂直滚动显示。数据传送采用DMA方式,以达到最小延迟。根据实际硬件水平和垂直像素点数、传送数据位数、时间线和帧速率方式等进行编程以支持多种类型的液晶屏。可以支持的液晶屏有单色液晶、4级或16级灰度屏、256色彩色液晶STN。LCD控制器主要提供液晶屏显示数据的传送、时钟和各种信号的产生与控制功能。S3C44BOX的处理器的LCD控制器主要部分框图如图32存储器控制DMA传送控制信号产生电路数据控制系统总线VCLK3232VLINEVFRAMEVMVD74VD30LCD控制器框图1)LCD控制器接口S3C44BOXLCD控制器接口如表所列VFRAME在LCD控制器和LCD驱动器间的帧同步信号。VLINE在LCD控制器和LCD驱动器间的行同步脉冲信号。VCLK在LCD控制器和LCD驱动器间的像素时钟信号。数据在VCLK的上升沿从LCD控制器送出,在VCLK的下降沿被LCD驱动器取样。VM给LCD驱动器的AC信号,用于改变行和列电压的极性以控制对像素的开或关。VD304BITLCD数据信号。VD744BITLCD数据信号。2)LCD控制信号时序WDLYVFRAMEVMVLINEVCLKVD70WLH注WLHVLINE高电平的系统时钟个数(LCDCON11110设置)WDLYVLINE后VCLK延时系统时钟个数(LCDCON198设置)控制器信号时序(个LINE)3)扫描模式支持支持3种类型的LCD驱动器4位双扫描;4位单扫描和8位单扫描模式。DISMOD00011011模式4位双扫描4位单扫描8位单扫描无本文用到的是4位单扫描模式。4位单扫描显示控制器从左上角位置进行数据显示。显示数据从VD30获得。4)数据的存放与显示液晶控制器传送的数据表示了一个像素的属性4级灰度屏使用2个数据位。16级灰度屏使用4个数据位。RGB彩色液晶屏使用8个数据位。显示缓存中存放的数据必须符合硬件及软件设置,即要注意字节对准方式。在4位单扫描方式下,数据的存放与显示如图0000A3100004B3100008C310A31A30A1A0B31B30B1B0C31C30C1C04位单扫描数据显示5)LCD控制寄存器S3C44BOXLCD处理器所包含的可编程控制器存器共有18个。如下表所示寄存器名内存地址读/写说明LCDCON10X0000CF21R/WLCD控制寄存器1工作信号控制寄存器LCDCON20X01413CEFR/WLCD控制寄存器2液晶屏水平/垂直尺寸控制LCDCON30X00000000R/WLCD控制寄存器3自测试设定,只用到最低位LCDSADDR10X16180000R/W高位贞缓存地址寄存器1液晶类型和扫描模式定义LCDSADDR20X01B84B00R/W高位贞缓存地址寄存器2设定显示缓存器信息LCDSADDR30X00000050R/W虚屏地址寄存器设定虚屏偏址和页面宽度REDLUT0X00000000R/W红色定义寄存器定义8组红色数据查找表GREENLUT0X00000000R/W绿色定义寄存器定义8组绿色数据查找表BLUELUT0X0000FA40R/W蓝色定义寄存器定义8组蓝色数据查找表DP1_20X00005A5AR/W1/2抖动设定推荐使用0XA5A5DP4_70X0366CD9BR/W4/7抖动设定推荐使用0XBA5DA65DP3_50X000DA5A7R/W3/5抖动设定推荐使用0XA5A5FDP2_30X00000AD7R/W2/3抖动设定推荐使用0XD6BDP5_70X0FEDA5B7R/W5/7抖动设定推荐使用0XEB7B5EDDP3_40X0000EBD7R/W3/4抖动设定推荐使用0X7DBEDP4_50X000EBFD7R/W4/5抖动设定推荐使用0X7EBDFDP6_70X07EFDFBFR/W6/7抖动设定推荐使用0X7FDFBFEDITHMODE0X0001223AR/W抖动模式寄存器推荐使用0X12210或0X06)LCD控制器主要参数设定正确使用S3C44BOXLCD控制器,必须设置控制器所有的18个寄存器。控制器信号VFRME、VCLK、VLINE和VM要求配置控制寄存器LCDCON1/2;液晶显示屏的显示与控制以及数据的存取控制,则要求配置其他相关寄存器。(1)设置VM、VFRAME、VLINEVM信号用于通过改变液晶行列电压的极性来控制像素的显示。VM信号的频率可以通过LCDCON1寄存器的MMODE位及LCDCON2寄存器的MVAL70位来控制。VM速率VLINE速率/(2MVAL)VFRAME和VLINE可通过配置LCDCON寄存器中的HOZVAL和LINEVAL域来控制,其中,HOZVAL和LINEVAL由液晶屏的尺寸和显示模式决定。HOZVAL(水平尺寸/VD数据位)1当为彩色液晶屏时,则水平尺寸3水平像素点数VD数据位4(4位单/双扫描模式)8(位单扫描模式)LINEVAL垂直尺寸1(单扫描模式)垂直尺寸(双扫描模式)(2)设置VCLKVCLK是LCD控制器的时钟信号。S3C44BOX处理器在66MHZ时钟频率时,VCLK的最高频率为165MHZ,这可以支持现在所有液晶屏的类型。VCLK信号是由LCDCON1寄存器中的CLKVAL域决定的。VCLK与CLKVAL的关系如下表所示计算公式如下VCLKMCLK/(CLKVAL2)式中,CLKVAL不小于2。贞速度1/(1/VCLK)(HOZVAL1)(1/MCLK)(WLHWDLYLINEBLANK)LINEVAL1式中,贞速度的单位为HZ。LINEBLANK为水平扫描信号LINE持续时间设置(MCLK个数)。VCLK还可以使用下式计算VCLK(HOZVAL1)/1/贞速度(LINEVAL1)WLHWDLYLINEBLANK/MCLK(3)设置数据贞显示控制LCDBASEU设置显示扫描方式中的开始地址(单扫描方式)或高位缓存地址(双扫描方式)。CLKVAL60MHZ/XVCLK260MHZ/4150MHZ360MHZ/6100MHZ102360MHZ/2046293KHZLCDBASEL设置双扫描方式的低位缓存开始地址。可以用下式计算LCDBASELLCDBASEU(PAGEWIDTHOFFSIZE)(LINEVAL1)PAGEWIDTH显示存储区的可见贞宽度(半字数)。OFFSIZE半子数。显示存储区的前行最后半字和后行第一个半字之间的半字数。LCDBANK访问显示存储区的地址A2722值。ENVD1时该值不能改变。7灰度屏的支持与设置对于4级灰度屏(2位数据),LCD控制器通过设置BLUELUT150指定使用的灰度级,并且04级使用BLUELUT的4位数据位。16级灰度屏使用BLUELUT的每一位来表示灰度级别。当EMBESTS3CEV40实验板使用16级灰度屏时,LCD控制器参数设置可参考如下2例(1)LCD液晶屏320240像素,16级灰度,单扫描方式数据贞首地址0XC300000,偏移点数2048(512个字节)参数设置如下LINEVAL24010XEFPAGEWIDTH3204/160X50OFFSIZE5120X200LCDBANK0XC300000220X30LCDBASEU0X10000010X80000LCDBASEL0X800000X500X2000XEF10XA2B002LCD液晶屏320240像素,16级灰度,双扫描模式数据贞首地址0XC300000,偏移点数2048(512个半字)参数设置如下LINEVAL12010X77PAGEWIDTH3204/160X50OFFSIZE5120X200LCDBANK0XC300000220X30LCDBASEU0X10000010X80000LCDBASEL0X800000X500X2000X7710X91580六、代码分析(1)重要变量定义这里定义了两个结构体,一个是SNAKE,一个是FOOD。(2)MAIN函数(3)游戏过程1、首先对初始状态进行定义2、移动功能的实现。这部分功能是游戏的主体,实现蛇移动的方式是首先擦除蛇尾,擦除的方发是用白色的矩形框覆盖画上蛇尾,蛇尾就变成白色底色不可见,然后从蛇尾开始,依次将蛇每一的坐标给下一节。例如刚开始蛇是5节,这时候依次把第1节的坐标给第2节;把第2节(即蛇头)的坐标给第3节;把第3四节的坐标给第4节;把第5节的坐标给第4节。擦除蛇尾和转移坐标这两个顺序不能颠倒。这时候蛇头的坐标需要在原来第一节的坐标基础上根据变量MYSNAKEDIRECTION的值进行相应变化,根据MYSNAKEDIRECTION的值补画上蛇头。蛇的每个环节坐标给下一节。3、擦除蛇尾4、增长蛇身5、食物的产生食物的产生主要还是通过坐标画出一个矩形框,本次实验通过一个随机算法来产生一个食物的坐标,来产生食物。食物的产生主要要注意食物产生之前,我们必须要判断画面上面是已经存在食物,如有已经存在食物了,就不再产生食物,如果食物被蛇吃到了,那就要重新画上食物。本设计是中设置了变量MYFOODYES,在每次循环都依次判断MYFOODYES的值,通过MYFOODYES的值来判断要不要画出食物。MYFOODYES的值为0表示已存在食物,为1表示需要画食物。在蛇吃到食物后MYFOODYES的值要被赋值1,画完食物后重新赋值,0。另外还要保证食物不能超出蛇的活动界面,并要保证食物能被蛇吃到,所以需要指定食物坐标的范围,被通过舍去食物坐标个位的方法保证食物坐标是整十,这样就能被蛇吃到。本设计用一个矩形方框来代表食物,所以通过上面介绍的方法产生食物坐标后,对应在该坐标的位置画上一个矩形方框。6、判断蛇是否吃到了食物判断蛇是否吃到食物的方法比较简单,只要判断蛇头的X、Y坐标是否同时和食物的坐标的X、Y一样。吃到食物后改变响应的游戏参数,并

温馨提示

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

评论

0/150

提交评论