创新创业实践(综合创新型设计)
课程论文
题目名称: 基于ARM9的贪吃蛇游戏设计
学院名称: 自动化与电气工程学院
专 业: 测控技术与仪器
课程设计任务书
课程设计题目:基于ARM9的贪吃蛇游戏设计
实践教学要求与任务:
1、熟悉所确定的题目,从问题需求、程序结构、难点及关键技术等方面进行分析,形成系统的设计方案;
2、根据方案设计硬件电路;
3、软件编程并调试;
4、完成课程设计报告,打印程序,给出运行结果。
工作计划与进度安排:
第17周(1月6日-1月10日):布置设计任务,查资料,完成总体设计框架,完善设计内容,系统调试,验收答辩。
摘 要 在电脑极大普及的今天,游戏是我们日常生活的重要娱乐方式。随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。随便计算机技术的发展,游戏行业越来越得到人们的关注,特别是在年轻人行列。现行的游戏一般是基于个人计算机的,像贪吃蛇这类小游戏在高档掌上电脑或高档电子消费品,但基于小型掌上低端游戏机在市场上却几乎没有。 本文以飞利浦公司的LPC2124芯片板为平台,在讨论ARM体系结构和游戏开发的同时,设计并实现了贪吃蛇游戏机的软件仿真。 综上所述此类贪吃蛇游戏机具有使用方便,绿色安全,低功耗、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。
目 录
创新创业实践(综合创新型设计)
课程论文
引言
1 ARM概述
2 ARM的开发环境
2.1 Keil介绍
2.2 ADS介绍
3 系统的硬件设计
3.1 电路设计框图
3.2 系统硬件概述
3.3 系统主要硬件
3.3.1 LPC2124
3.3.2 LP3228显示屏
3.3.3 用户操作接口
4 软件仿真
5 系统的软件设计与实现
5.1 游戏说明
5.2 游戏结构设计
5.3 游戏具体设计
5.3.1 矩阵键盘按键扫描子程序
5.3.2 矩阵键盘处理子程序
5.3.3 LCD显示子程序
5.3.4 主程序流程
6 程序测试
6.1 仿真测试
6.2 程序的局限性
7 总结
参考文献
附 录
附录一 系统仿真电路图
附录二 程序文件清单
附录三 使用说明书
引言基于ARM芯片的产品凭借其强大的功能、低廉的价格和体积小等优点,在许多领域得到了广泛的应用。而当前在游戏开发中,ARM并没有充分显示出它的这些特点。而彩色液晶显示器具有功耗低、显示信息量大、显示效果逼真等特点。所以若用彩色液晶显示器为游戏提供界面一会受到欢迎。 液晶显示屏LCD作为一种功耗低、体积小、无辐射的显示器件,近几年被广泛应用于各式各样的嵌入式电子产品中,LCD可分为段位式、字符式和点阵式三种,其中,段位式LCD和字符式LCD只能用于字符和数字的简单显示,不能满足图形曲线和汉字显示的要求,而点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且可以实现屏幕上下左右滚动动画功能,分区开窗口、反转、闪烁等功能,用途十分广泛,为了简化液晶显示电路的设计和应用,生产厂家通常将液晶显示单元、显示控制器,显示内存和显示驱动电路等装配在一起,做成液晶显示模块LCD Module(LCM)。 目前,基于ARM芯片的产品遍布人类生活空间,在移动娱乐工具上应用广泛,特别在手机游戏制作方面越来越收人们的欢迎。 1 ARM概述 ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。 1991 年ARM 公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM 技术知识产权(IP)核的微处理器,即我们通常所说的ARM 微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM 技术的微处理器应用约占据了32位RISC 微处理器75%以上的市场份额,ARM 技术正在逐步渗入到我们生活的各个方面。ARM 公司是专门从事基于RISC 技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM 微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM 微处理器芯片进入市场。目前,全世界有几十家大的半导体公司都使用ARM 公司的授权,因此既使得ARM 技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。 ARM公司出售芯片技术授权给半导体公司,ARM核因为具有高性能、低成本、低功耗的特点而被广采用。这样在全球范围内围绕着ARM技术形成了从一个芯片设计、生产、销售,工具软件设计与开发,系统软件开发以及应用软件开发的庞大产业链。说ARM代表着以ARM为核心的软硬件开发技术也不为过。 2 ARM的开发环境2.1 Keil介绍 uVision3集成开发环境(uVision3 IDE)是一个窗口化的软件开发平台,它集成了功能强大的编辑器、工程管理器以及各种编译工具(包括C编译器、宏编译器、链接/装载器和十六进制文件转换器)。uVision3包括以下功能组件,能加速嵌入式应用程序的开发过程: (1)功能强大的源代码编辑器; (2)可根据开发工具配置的设备数据库; (3)用于创建和维护工程的工程管理器; (4)集汇编、编译和链接过程于一体的编译工具; (5)用于设置开发工具配置的对话框; (6)真正集成高速CPU及片上外设模拟器的源码级调试器; (7)高级GDI接口;可用于目标硬件的软件调试和KEIL ULINK仿真器的连接; (8)用于下载应用程序到FLASH ROM中的FLASH编程器; (9)完善的开发工具手册、设备数据手册和用户向导。 uVision3 IDE使用简单、功能强大,是设计者完成设计任务的重要保证。uVision3 IDE还提供了大量的例程及相关信息,有助于开发人员快速开发嵌入式应用程序。 2.2 ADS介绍ADS 集成开发环境是 ARM 公司推出的 ARM 核微控制器集成开发工具,英文全称为ARM Developer Suite,成熟版本为 ADS1.2。ADS1.2 支持 ARM10 之前的所有 ARM 系列微控制器,支持软件调试及 JTAG 硬件仿真调试,支持汇编、C、C++源程序,具有编译效率高、 系统库功能强等特点, 可以在 Windows98、 Windows XP、 Windows2000 以及 RedHat Linux上运行。这里将简单介绍使用 ADS1.2 建立工程,编译连接设置,调试操作等等。最后还介绍了基于 LPC2200 系列 ARM7 微控制器的工程模板的使用,EasyJTAG 仿真器的安装与使用。 ADS 1.2 由 6 个部分组成,如表2.1所示。 表 2.1 ADS1.2组成表 | | | | ARM汇编去,ARM的C、C++编译器,Thumb的C、C++编译器,ARM连接器 | | | | | | | | | | | | | 一些实用程序由CodeWarrior IDE 调用 | | | | 3系统的硬件设计3.1 电路设计框图系统以LPC2124ARM芯片作为核心控制器件,外围只有液晶显示和键盘操作,且均为串行通信器件,使得系统线路简单可靠性高。系统结构框图3.1所示。
图3.1系统结构框图 3.2 系统硬件概述本电路由ARM芯片LPC2124为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;液晶显示部份由LM2124液晶显示器作为显示,因其具有很多优点,被广泛使用;按键部分我们使用矩阵键盘,因其使用方便,且便于记住,所以我们使用矩阵键盘而不是用独立键盘。 3.3 系统主要硬件3.3.1 LPC2124LPC2124 是基于一个支持实时仿真和跟踪的 16/32 位 ARM7TDMI-STM CPU 的微控制器,并带有128/256 k字节(kB)嵌入的高速Flash存储器。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用 16 位 Thumb 模式将代码规模降低超过30%,而性能的损失却很小。 由于LPC2124较小的 64脚封装、极低的功耗、多个 32 位定时器、4 路 10 位ADC以及多达9个外部中断使它们特别适用于工业控制、医疗系统、访问控制和POS机。 在 64 脚的封装中,最多可使用 46 个 GPIO。由于内置了宽范围的串行通信接口,它们也非常适合于通信网关、协议转换器、嵌入式软modern以及其它各种类型的应用。 LPC2124是64管脚封装的,其封装图如图3.3所示。
图3.3 LPC2124封装图 LPC2124里面最重要的组成部分是寄存器,其部分寄存器功能如表3-1所示。 表3.1 管脚连接映射 其管脚功能选择寄存器如表3-2和表3-3所示。 表3.2 PINSEL0管脚选择功能 | | | | | | | | | | | | | | | | | | | | | | | | SCL( C) | | | | | | | SDA( C) | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
表3.3 PINSEL1管脚选择功能 3.3.2 LP3228显示屏采用LM3228液晶显示,其拥有微功耗无电磁辐射,寿命长,价格低,接口方便等一系列显著特点,被广泛应用于各种仪器仪表,测量显示装置,计算机显示终端等方面。它是以点阵为单位组成的液晶显示器,内部CMOS驱动,由日本东芝公司T6963C 控制集成电路,印制电路板和金属支持框架所组成。LM3228液晶可以用来显示字母,数字,汉字等,因此可以用LM3228液晶形象的模拟出贪吃蛇的形状和它运动的情况。 LM3228的硬件结构图如图3.3所示。
图3.3 LM3228的硬件结构图 3.3.3 用户操作接口用户操作接口采用的是4×4矩阵键盘,用户可以通过操纵键盘控制贪吃蛇的游动方向,控制方向如表3-4所示: 表3.4贪吃蛇方向控制
矩阵键盘原理图如图3.5所示: 图3.5 矩阵键盘原理图 矩阵键盘的工作原理如下: (1)先读取键盘的状态,得到按键的特征编码。 先从P1口的高四位输出低电平,低四位输出高电平,从P1口的低四位读取键盘状态。再从P1口的低四位输出低电平,高四位输出高电平,从P1口的高四位读取键盘状态。将两次读取结果组合起来就可以得到当前按键的特征编码。使用上述方法我们得到16个键的特征编码。 (2)根据按键的特征编码,查表得到按键的顺序编码。 将16个键的特征编码按顺序排成一张表,然后用当前读得的特征编码来查表,当表中有该特征编码时,它的位置就是对应的顺序编码。 (3)根据特征编码与顺序编码的对应关系就可以确定所按下的是哪一个键。 4 软件仿真Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。④具有强大的原理图绘制功能。该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。 本次实中设计的贪吃蛇电路,电路核心是LPC2124,P0端接液晶显示屏,P1端接的是控制按键,具体仿真电路图请见附录一。 5 系统的软件设计与实现5.1 游戏说明游戏目标是控制贪吃蛇吃掉画面中的目标豆,每吃掉一个目标豆就会加分,但同时贪吃蛇的尾巴会相应地长上一截,吃得越多,尾巴越长。游戏中,贪吃蛇碰上了自己的身体游戏即结束。分数增加到一定后,贪吃蛇移动的速度增加,从而逐步增加游戏的难度。 5.2 游戏结构设计游戏主要分为A、B、C三个模块。 A模块主要用于控制游戏的开始、暂停与结束,这些方法与其他程序相同。 B模块主要用于完成游戏的主要功能,包括了蛇体控制,目标豆的摆放,游戏控制,屏幕绘制等。 C模块主要用于完成蛇体在屏幕上的定位。 5.3 游戏具体设计5.3.1 矩阵键盘按键扫描子程序用户设计行列键盘接口,一般常采用3种方法读取键值。分别为:中断式,扫描法和反转法。 (1)中断式:在键盘按下时产生一个外部中断通知CPU,并由中断处理程序通过不同的地址读取数据线上的状态,判断哪个按键被按下。 (2)扫描法:对键盘上的某一行送低电平,其他行为高电平,然后读取列值。若列值中有一位是低,则表明该行与低电平对应列的键被按下;否则,扫描下一行。 (3)反转法:先将所有行扫描线输出低电平,读列值。若列值有一位是底,则表明有键按下,读列值;然后所有列扫描线输出低电平,再读行值。根据读到的值组合就可以查表得到键值。 在本次实训中我们采用的是反转法,其硬件连接请见图3.5。 关键代码如下所示,具体可见源代码。 uint8 Keyboard_Scan(void) { uint8 keycode = 0xff; uint8 row; uint8 col; for(col=0;col<KEYBOARD_COLUMN;col++) { Column_Clear(col); for(row=0;row<KEYBOARD_ROW;row++) { if(Row_Status(row)==0) { keycode = row*KEYBOARD_ROW+col; } } Column_Set(col); } return keycode; } 5.3.2 矩阵键盘处理子程序 主要是对键盘扫描子程序返回的键值进行处理,为了程序化模块化,处理返回的键值时调用了各个键的处理函数,这里就不给出具体的处理函数了,具体可见源代码。 void Key_Process(uint8 num) //num为键盘扫描子程序返回的键值 { switch(num) { case 1:up();break; //向上 case 4:left();break; //向左 case 5:pause();break; //暂停 case 6:right();break; //向右 case 9:down(); break; //向下 default:move();break; //默认为自动移动 } } 5.3.3 LCD显示子程序这部分的处理是在文件LOADBIT.C中完成。 子程序的功能为显示单色图形及汉字显示。实现的流程是先将图形转换为对应的点阵数组,然后即可调用LM3228的设备驱动程序中的函数输出驱动。 本次实训中采用LM3228的显示屏,图形液晶模块驱动程序要考虑它的操制器,要参考它的DataSheet来设计,这部分程序具体可见源代码。 5.3.4 主程序流程
主程序 在main.c中,它的程序流程如图5.3所示。图5.3 主程序流 6 程序测试6.1 仿真测试由于ARM芯片管脚比较多,而且很多元器件都是贴片元件,做成电路板比较困难,由于资源等客观限制,所以在这里只进行仿真测试。测试将粗略检测贪吃蛇游戏的5项基本功能:向上,向下,向左,向右和暂停功能。这里将测试贪吃蛇向右运动的情况,如图6.1所示。
图6.1 贪吃蛇向右运动 测试结果:在按了矩阵键盘的”6”号键之后,贪吃蛇开始向右运动,测试成功。 然后再测试贪吃蛇小游戏的暂停和继续功能,按了一次矩阵键盘的”5”号键之后,贪吃蛇停止运动,再按一次矩阵键盘的”5”号键,贪吃蛇又继续运动,测试成功。 6.2 程序的局限性由于时间的局限性和个人能力的局限性,这个程序中检测出不少局限性,如下所述。 (1)在算法实现上,未充分考虑贪吃蛇碰壁的情况,只是简单的让贪吃蛇穿过墙壁,没做其他处理。 (2)贪吃蛇在运动时可以改变至相反方向,即存在掉头情况。 (3)贪吃蛇吃到自己尾巴的时候,有时会分成两截,有待改进。 7 总结本次实践,我选的题目是基于LPC2124实现的贪吃蛇游戏机。因为课题贪吃蛇游戏比较难,此次实践我多方请教同学。这次实践,我们可谓历经重重困难。第一阶段是方案确定,我们花了大量时间采集资料,整理资料,首先是确定自己的课题,最后着手设计。在第二阶段将我们的原理图设计好。然后进入第三阶段软件的编程。但是在编写程序时,困难时刻困扰着我,可能是因为自己平时不太注重动手能力的培养,在实践过程中遇到了好多问题。我们通过虚心请教计算机专业的同学和老师,用自己所学的知识分析后及时改正错误,通过再次不断的修改原理图,请教,再修改程序,但是在程序编写部分我还是困难重重。当自己着手编写程序时,通过采集到的资料进行修改,通过不断的运行调试,仿真。按照自己的设计构思,经过一系列的测试工作,我们终于解决了贪吃蛇小游戏中发生的部分错误,完善该小游戏的基本功能。在测试过程中,面对所遇到的问题,认真分析流程图,根据原理图,认真检查程序流程,并观察各寄存器的变化情况, 最终能基本实现贪吃蛇小游戏的功能。 由于此次实践期间不是考试期间,时间不是很紧迫,但是我们还是分秒必争,有时呆在科协一呆就是一天,经常晚上凌晨两三点才回宿舍。这次实训真的是对我们最大的考验,困难问题的不断出现,让我们应付不过来,因为我们的坚持不懈,相信失败是成功之母,功夫不负有心人,最后终于成功了,成功的喜悦让人舒心。 通过这次实践,我觉得对我来说本身就是一个提升。真理正是靠实践而证明的,而成功就是靠自己的摸索而成功的。当自己遇到失败的时候,不要心灰气馁,沉着冷静,认真分析原理,实在不懂虚心向老师和同学学习请教,终会有所收获。 在做作品的过程中我学到了很多在课堂上学不到的东西,虽然说这次实践很累。但是在这期间,我感觉真的是过得和充实,而且得到了许多宝贵的经验,相信对我以后的软件编程和专业的学习都会有很大的帮助。
参考文献[1] 崔更申,孙安青.ARM嵌入式系统开发与实践[M].北京:中国电力出版社,2008. [2] 田泽.嵌入式开发与应用[M].北京:北京航空航天大学出版社,2005. [3] 周立功等.ARM嵌入式系统基础教程[M].北京:北京航空航天大学出版社,2005. [4] 谭浩强.C语言程序设计.北京:清华大学出版社,2002.
附 录附录一 系统仿真电路图
附录二 程序文件清单表1所示系统源程序文件清单如附。 表1 系统源程序文件清单
附录三 使用说明书贪吃蛇小游戏简单易玩,矩阵键盘的2 ,4,6, 8键分别使蛇向下,左,右,上方运动,按5键为暂停/继续游戏,在游戏过程中贪吃蛇吃到东西身体会变长,身体长度长到一定程序贪吃蛇运动的速度就加快,游戏的难度就增加,总的来说这款贪吃蛇小游戏比其他的更简单更容易上手。
完整的Word格式文档51黑下载地址:
1506020210王浩宇.doc
(1000 KB, 下载次数: 59)
|