1、嵌入式ARM的贪吃蛇游戏解析成 绩 评 定 表学生姓名王超班级学号1003020330专 业测控课程设计题目基于ARM的贪吃蛇游戏设计评语组长签字:成绩日期 20 年 月 日课程设计任务书学 院信息科学与工程学院专 业测控学生姓名王超班级学号1003020330课程设计题目基于ARM的贪吃蛇游戏设计实践教学要求与任务:要求:1、设计电路,选择器件。2、利用Protel画原理图。3、软件编程、调试。4、焊接硬件电路,并调试。任务: 1、 设计基于ARM的贪吃蛇游戏 2、通过按键能进行调整及在电子屏上显示工作计划与进度安排:1、查找资料。(2天)2、设计电路、画电路图。(2天)3、软件编程与调试。
2、(2天)4、系统调试。(2天) 5、撰写报告。(2天)指导教师: 201 年 月 日专业负责人:201 年 月 日学院教学副院长:201 年 月 日摘 要在电脑极大普及的今天,游戏是我们日常生活的重要娱乐方式。随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。随便计算机技术的发展,游戏行业越来越得到人们的关注,特别是在年轻人行列。现行的游戏一般是基于个人计算机的,像贪吃蛇这类小游戏在高档掌上电脑或高档电子消费品,但基于小型掌上低端游戏机在市场上却几乎没有。本文以飞利浦公司的LPC2124芯片板为平台,在讨论ARM体系结构和游戏开发的同时,设计并实现了贪吃
3、蛇游戏机的软件仿真。综上所述此类贪吃蛇游戏机具有使用方便,绿色安全,低功耗、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。关键词:ARM;低功耗;游戏;贪吃蛇;LPC2124AbstractIn the great popularity of computers today, games are important forms of entertainment in our daily lives, With the rapid development of science and technology, the passage of time, from concept
4、 to the sun, the electronic clock pendulum clock to now, human constant research, innovation record. Not the development of computer technology, games industry has been growing concern, especially among young people. The current game in general is based on the personal computer, such as Snake game i
5、n the high-end high-end Pocket PC or consumer electronics, but based on small-scale low-end handheld game in the market is virtually non-existent. In this paper, Philips LPC2124 chip board as a platform, in discussing the ARM architecture and game development, design and realization of the Snake gam
6、e simulation software. To sum up such a Snake game with easy-to-use, green safe, low-power, low cost and many other advantages, in line with the electronic instrumentation of the development trend of the market prospects are broad.Key words:ARM; Low power consumption; Game; Greedy snake; LPC2124 引言基
7、于ARM芯片的产品凭借其强大的功能、低廉的价格和体积小等优点,在许多领域得到了广泛的应用。而当前在游戏开发中,ARM并没有充分显示出它的这些特点。而彩色液晶显示器具有功耗低、显示信息量大、显示效果逼真等特点。所以若用彩色液晶显示器为游戏提供界面一会受到欢迎。液晶显示屏LCD作为一种功耗低、体积小、无辐射的显示器件,近几年被广泛应用于各式各样的嵌入式电子产品中,LCD可分为段位式、字符式和点阵式三种,其中,段位式LCD和字符式LCD只能用于字符和数字的简单显示,不能满足图形曲线和汉字显示的要求,而点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且可以实现屏幕上下左右滚动动画
8、功能,分区开窗口、反转、闪烁等功能,用途十分广泛,为了简化液晶显示电路的设计和应用,生产厂家通常将液晶显示单元、显示控制器,显示内存和显示驱动电路等装配在一起,做成液晶显示模块LCD Module(LCM)。目前,基于ARM芯片的产品遍布人类生活空间,在移动娱乐工具上应用广泛,特别在手机游戏制作方面越来越收人们的欢迎。1 ARM概述 ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。1991 年ARM 公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM 技术知识产权(IP)核的微处理器
9、,即我们通常所说的ARM 微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM 技术的微处理器应用约占据了32位RISC 微处理器75以上的市场份额,ARM 技术正在逐步渗入到我们生活的各个方面。ARM 公司是专门从事基于RISC 技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计的ARM 微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM 微处理器芯片进入市场。目前,全世界有几十家大的半导体公司都使用ARM 公司的授权,
10、因此既使得ARM 技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。ARM公司出售芯片技术授权给半导体公司,ARM核因为具有高性能、低成本、低功耗的特点而被广采用。这样在全球范围内围绕着ARM技术形成了从一个芯片设计、生产、销售,工具软件设计与开发,系统软件开发以及应用软件开发的庞大产业链。说ARM代表着以ARM为核心的软硬件开发技术也不为过。2 ARM的开发环境2.1 Keil介绍 uVision3集成开发环境(uVision3 IDE)是一个窗口化的软件开发平台,它集成了功能强大的编辑器、工程管理器以及各种编译工具(包括C编
11、译器、宏编译器、链接/装载器和十六进制文件转换器)。uVision3包括以下功能组件,能加速嵌入式应用程序的开发过程: (1)功能强大的源代码编辑器; (2)可根据开发工具配置的设备数据库; (3)用于创建和维护工程的工程管理器; (4)集汇编、编译和链接过程于一体的编译工具; (5)用于设置开发工具配置的对话框; (6)真正集成高速CPU及片上外设模拟器的源码级调试器; (7)高级GDI接口;可用于目标硬件的软件调试和KEIL ULINK仿真器的连接; (8)用于下载应用程序到FLASH ROM中的FLASH编程器; (9)完善的开发工具手册、设备数据手册和用户向导。uVision3 IDE
12、使用简单、功能强大,是设计者完成设计任务的重要保证。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上运行
13、。这里将简单介绍使用 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 调用集成开发环境CodeWarrior IDE工程管理,编译连接调试器AXD,ADW/ADU,armsd仿真调试指令模拟器ARMulator由AXD调用ARM开发包一些底层的例程,实用程序(
14、如fromELF)一些实用程序由CodeWarrior IDE 调用ARM应用库C、C+函数库等用户程序使用3系统的硬件设计3.1 电路设计框图系统以LPC2124ARM芯片作为核心控制器件,外围只有液晶显示和键盘操作,且均为串行通信器件,使得系统线路简单可靠性高。系统结构框图3.1所示。ARMLPC212主控键盘输入液晶显示 图3.1系统结构框图3.2 系统硬件概述本电路由ARM芯片LPC2124为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;液晶显示部份由LM2124液晶显示器作为显示,因其具有很多优点,被广泛使用;按键部分我们使用矩阵键盘,因其使用方便,且便于记住,所以我们使用
15、矩阵键盘而不是用独立键盘。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机。
16、在 64 脚的封装中,最多可使用 46 个 GPIO。由于内置了宽范围的串行通信接口,它们也非常适合于通信网关、协议转换器、嵌入式软modern以及其它各种类型的应用。LPC2124是64管脚封装的,其封装图如图3.3所示。图3.3 LPC2124封装图LPC2124里面最重要的组成部分是寄存器,其部分寄存器功能如表3-1所示。表3.1 管脚连接映射名称描述访问复位值地址PINSEL0管脚选择寄存器0读/写0x0000 00000xE002C000PINSEL1管脚选择寄存器读/写0x1540 00000xE002C004PINSEL2管脚选择寄存器读/写见表63和640xE002C014其管
17、脚功能选择寄存器如表3-2和表3-3所示。表3.2 PINSEL0管脚选择功能PINSEL0管脚名称00011011复位值1:0P0.0GPIO P0.0TXD(UART0)PWM1保留003:2P0.1GPIO P0.1RXD(UART0)PWM3EINT0005:4P0.2GPIO P0.1SCL(C)捕获0.0(TIMER0)保留007:6P0.3GPIO P0.3SDA(C)匹配0.0(TIMER0)EINT1009:8P0.4GPIO P0.4SCK(SPI0)捕获0.1(TIMER0)保留0011:10P0.5GPIO P0.5MIS0(SPI0)匹配0.1(TIMER0)保留00
18、13:12P0.6GPIO P0.6MOSI(SPI0)捕获0.2(TIMER0)保留0015:14P0.7GPIO P0.7SSEL(SPI0)PWM2EINT20017:16P0.8GPIO P0.8TXD(UART1)PWM4保留0019:18P0.9GPIO P0.9RXD(UART1)PWM8保留0021:20P1.0GPIO P1.0RTS(UART1)捕获1.0(TIMER1)保留0023:22P1.1GPIO P1.1CTS(UART1)捕获1.1(TIMER1)保留0025:24P1.2GPIO P1.2DSR(UART1)匹配1.0(TIMER1)保留0027:26P1.3
19、GPIO P1.3DTR(UART1)匹配1.1(TIMER1)保留0029:28P1.4GPIO P1.4CD(UART1)EINT1保留0031:30P1.5GPIO P1.5RI(UART1)EINT2保留00表3.3 PINSEL1管脚选择功能PINSEL1管脚名称00011011复位值1:0P0.16GPIO P0.16EINT0PWM1捕获0.2(TIMER0)003:2P0.17GPIO P0.17捕获1.2(TIMER1)PWM3匹配1.2(TIMER1)005:4P0.18GPIO P0.18捕获1.3(TIMER1)捕获0.0(TIMER0)匹配1.3(TIMER1)007
20、:6P0.19GPIO P0.19匹配1.2(TIMER1)匹配0.0(TIMER0)匹配1.3(TIMER1)009:8P0.20GPIO P0.20匹配1.3(TIMER1)捕获0.1(TIMER0)EINT30011:10P0.21GPIO P0.21PWM5保留捕获1.3(TIMER1)0013:12P0.22GPIO P0.22保留捕获0.0(TIMER0)匹配0.0(TIMER0)0015:14P0.23GPIO P0.23保留保留保留0017:16P0.24GPIO P0.24保留保留保留0019:18P0.25GPIO P0.25保留保留保留0021:20P1.26保留0023
21、:22P1.27GPIO P1.27AIN0(A/D转换器)捕获0.1(TIMER0)匹配0.1(TIMER0)0125:24P1.28GPIO P1.28AIN1(A/D转换器)匹配0.2(TIMER0)匹配0.2(TIMER0)0127:26P1.29GPIO P1.29AIN2(A/D转换器)匹配0.3(TIMER0)匹配0.3(TIMER0)0129:28P1.30GPIO P1.30AIN3(A/D转换器)EINT3捕获0.0(TIMER0)0131:30P1.31保留003.3.2 LP3228显示屏采用LM3228液晶显示,其拥有微功耗无电磁辐射,寿命长,价格低,接口方便等一系列
22、显著特点,被广泛应用于各种仪器仪表,测量显示装置,计算机显示终端等方面。它是以点阵为单位组成的液晶显示器,内部CMOS驱动,由日本东芝公司T6963C 控制集成电路,印制电路板和金属支持框架所组成。LM3228液晶可以用来显示字母,数字,汉字等,因此可以用LM3228液晶形象的模拟出贪吃蛇的形状和它运动的情况。LM3228的硬件结构图如图3.3所示。图3.3 LM3228的硬件结构图3.3.3 用户操作接口用户操作接口采用的是44矩阵键盘,用户可以通过操纵键盘控制贪吃蛇的游动方向,控制方向如表3-4所示:表3.4贪吃蛇方向控制8贪吃蛇向上运动2贪吃蛇向下运动4贪吃蛇向左运动6贪吃蛇向右运动5暂
23、停/继续游戏矩阵键盘原理图如图3.5所示:图3.5 矩阵键盘原理图矩阵键盘的工作原理如下:(1)先读取键盘的状态,得到按键的特征编码。先从P1口的高四位输出低电平,低四位输出高电平,从P1口的低四位读取键盘状态。再从P1口的低四位输出低电平,高四位输出高电平,从P1口的高四位读取键盘状态。将两次读取结果组合起来就可以得到当前按键的特征编码。使用上述方法我们得到16个键的特征编码。(2)根据按键的特征编码,查表得到按键的顺序编码。将16个键的特征编码按顺序排成一张表,然后用当前读得的特征编码来查表,当表中有该特征编码时,它的位置就是对应的顺序编码。(3)根据特征编码与顺序编码的对应关系就可以确定
24、所按下的是哪一个键。4 软件仿真 Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z
25、80系列、HC11系列以及各种外围芯片。提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。具有强大的原理图绘制功能。该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。本次实中设计的贪吃蛇电路,电路核心是LPC2124,P0端接液晶显示屏,P1端接的是控制按键,具体仿真电路图请见附录一。5 系统的软件设计与实现5.1 游戏说明游戏目标是控制贪吃蛇吃掉画面中的目标豆,每吃掉一个目标豆就会加分,但同
26、时贪吃蛇的尾巴会相应地长上一截,吃得越多,尾巴越长。游戏中,贪吃蛇碰上了自己的身体游戏即结束。分数增加到一定后,贪吃蛇移动的速度增加,从而逐步增加游戏的难度。5.2 游戏结构设计游戏主要分为A、B、C三个模块。A模块主要用于控制游戏的开始、暂停与结束,这些方法与其他程序相同。B模块主要用于完成游戏的主要功能,包括了蛇体控制,目标豆的摆放,游戏控制,屏幕绘制等。C模块主要用于完成蛇体在屏幕上的定位。5.3 游戏具体设计5.3.1 矩阵键盘按键扫描子程序用户设计行列键盘接口,一般常采用3种方法读取键值。分别为:中断式,扫描法和反转法。(1)中断式:在键盘按下时产生一个外部中断通知CPU,并由中断处
27、理程序通过不同的地址读取数据线上的状态,判断哪个按键被按下。(2)扫描法:对键盘上的某一行送低电平,其他行为高电平,然后读取列值。若列值中有一位是低,则表明该行与低电平对应列的键被按下;否则,扫描下一行。(3)反转法:先将所有行扫描线输出低电平,读列值。若列值有一位是底,则表明有键按下,读列值;然后所有列扫描线输出低电平,再读行值。根据读到的值组合就可以查表得到键值。在本次实训中我们采用的是反转法,其硬件连接请见图3.5。 关键代码如下所示,具体可见源代码。uint8 Keyboard_Scan(void) uint8 keycode = 0xff; uint8 row; uint8 col;
28、 for(col=0;colKEYBOARD_COLUMN;col+) Column_Clear(col); for(row=0;rowKEYBOARD_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为键盘扫描子
29、程序返回的键值 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项基本功能:向上,向下,向左,向右和暂停功能
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1