单片机论坛

 找回密码
 立即注册

QQ登录

只需一步快速开始

搜索
查看: 1663|回复: 0
收起左侧

基于ARM9的贪吃蛇游戏设计 创新创业实践报告

[复制链接]
wanghaoyu950928 发表于 2018-11-29 12:44 | 显示全部楼层 |阅读模式
创新创业实践综合创新型设计
课程论文
题目名称    基于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 ModuleLCM
目前基于ARM芯片的产品遍布人类生活空间在移动娱乐工具上应用广泛特别在手机游戏制作方面越来越收人们的欢迎
1  ARM概述
              ARMAdvanced 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.2ADS1.2 支持 ARM10 之前的所有 ARM 系列微控制器支持软件调试及 JTAG 硬件仿真调试支只编CC++源程序具有编译效率高 系统库功能强等特点 可以在 Windows98 Windows XP Windows2000 以及 RedHat Linux显行这里将简单介绍使用 ADS1.2 建立工程编译连接设置调试操作等等最后还介绍了基于 LPC2200 系列 ARM7 微控制器的工程模板的使用EasyJTAG 仿真器的安装与使用
ADS 1.2 由 6 个部分组成如表2.1所示
表 2.1 ADS1.2组成表
名称
描述
使用方式

代码生产工具
ARM汇编去ARM的CC++编译器Thumb的CC++编译器ARM连接器

由CodeWarrior IDE 调用
集成开发环境
CodeWarrior IDE
工程管理编译连接
调试器
AXD,ADW/ADU,armsd
仿真调试
指令模拟器
ARMulator
由AXD调用
ARM开发包
一些底层的例程实用程序如fromELF
一些实用程序由CodeWarrior IDE 调用
ARM应用库
CC++函数库等
用户程序使用
3系统的硬件设计3.1  电路设计框图
系统以LPC2124ARM芯片作为核目制器件外围只有液晶显示和键盘操作且均为串型信器件使得系统线路简单可靠性高系统结构框图3.1所示

图3.1系统结构框图
3.2  系统硬件概述
本电路由ARM芯片LPC2124为控制核模具有在线编程功能低功模能在3V超低压工作液晶显示部份由LM2124液晶显示器作为显示,因其具有很多优点被广泛使用按键部分我们使用矩阵键盘因其使用方便且便于记住所以我们使用矩阵键盘而不是用独立键盘
3.3  系统主要硬件3.3.1            LPC2124
LPC2124 是基于一个支持实时仿真和跟踪的 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 管脚连接成
名称
描述
访问
复位值
地址
PINSEL0
管脚选择寄存器0
读/写
0x0000 0000
0xE002C000
PINSEL1
管脚选择寄存器
读/写
0x1540 0000
0xE002C004
PINSEL2
管脚选择寄存器
读/写
见表63和64
0xE002C014
其管脚功能选择寄存器如表3-2和表3-3所示
表3.2 PINSEL0管脚选择功能
PINSEL0
管脚名称
00
01
10
11
复位值
10
P0.0
GPIO P0.0
TXD(UART0)
PWM1
保留
00
32
P0.1
GPIO P0.1
RXD(UART0)
PWM3
EINT0
00
54
P0.2
GPIO P0.1
SCL(C)
捕获0.0TIMER0
保留
00
76
P0.3
GPIO P0.3
SDA(C)
匹配0.0TIMER0
EINT1
00
98
P0.4
GPIO P0.4
SCK(SPI0)
捕获0.1TIMER0
保留
00
1110
P0.5
GPIO P0.5
MIS0(SPI0)
匹配0.1TIMER0
保留
00
1312
P0.6
GPIO P0.6
MOSI(SPI0)
捕获0.2TIMER0
保留
00
1514
P0.7
GPIO P0.7
SSEL(SPI0)
PWM2
EINT2
00
1716
P0.8
GPIO P0.8
TXD(UART1)
PWM4
保留
00
1918
P0.9
GPIO P0.9
RXD(UART1)
PWM8
保留
00
2120
P1.0
GPIO P1.0
RTS(UART1)
捕获1.0TIMER1
保留
00
2322
P1.1
GPIO P1.1
CTS(UART1)
捕获1.1TIMER1
保留
00
2524
P1.2
GPIO P1.2
DSR(UART1)
匹配1.0TIMER1
保留
00
2726
P1.3
GPIO P1.3
DTR(UART1)
匹配1.1TIMER1
保留
00
2928
P1.4
GPIO P1.4
CD(UART1)
EINT1
保留
00
3130
P1.5
GPIO P1.5
RI(UART1)
EINT2
保留
00
表3.3 PINSEL1管脚选择功能
PINSEL1
管脚名称
00
01
10
11
复位值
10
P0.16
GPIO P0.16
EINT0
PWM1
捕获0.2TIMER0
00
32
P0.17
GPIO P0.17
捕获1.2TIMER1
PWM3
匹配1.2TIMER1
00
54
P0.18
GPIO P0.18
捕获1.3TIMER1
捕获0.0TIMER0
匹配1.3TIMER1
00
76
P0.19
GPIO P0.19
匹配1.2TIMER1
匹配0.0TIMER0
匹配1.3TIMER1
00
98
P0.20
GPIO P0.20
匹配1.3TIMER1
捕获0.1TIMER0
EINT3
00
1110
P0.21
GPIO P0.21
PWM5
保留
捕获1.3TIMER1
00
1312
P0.22
GPIO P0.22
保留
捕获0.0TIMER0
匹配0.0TIMER0
00
1514
P0.23
GPIO P0.23
保留
保留
保留
00
1716
P0.24
GPIO P0.24
保留
保留
保留
00
1918
P0.25
GPIO P0.25
保留
保留
保留
00
2120
P1.26
保留
00
2322
P1.27
GPIO P1.27
AIN0(A/D转换器)
捕获0.1TIMER0
匹配0.1TIMER0
01
2524
P1.28
GPIO P1.28
AIN1(A/D转换器)
匹配0.2TIMER0
匹配0.2TIMER0
01
2726
P1.29
GPIO P1.29
AIN2(A/D转换器)
匹配0.3TIMER0
匹配0.3TIMER0
01
2928
P1.30
GPIO P1.30
AIN3(A/D转换器)
EINT3
捕获0.0TIMER0
01
3130
P1.31
保留
00
3.3.2            LP3228显示屏
采用LM3228液晶显示其拥形功耗无电磁辐射寿命长价格低接口方便等一系列显著特点被广泛应用于各种仪器仪表测量显示装置计算机显示终端确面它是以点阵为单位组成的液晶显示器内部CMOS驱动由日本东芝公司T6963C 控制集成电路印频路板和金属支持框架所组成LM3228液晶可以用来显示字母数字汉字等因此可以用LM3228液晶形象的模拟出贪吃蛇的形状和它运动的情况
LM3228的硬件结构图如图3.3所示

图3.3 LM3228的硬件结构图
3.3.3        用户操作接口
用户操作接口采用的是44矩阵键盘用户可以通过操纵键盘控制贪吃蛇的游动方向控制方向如表3-4所示
表3.4贪吃蛇方向控制
8
贪吃蛇向显动
2
贪吃蛇向下运动
4
贪吃蛇向左运动
6
贪吃蛇向右运动
5
暂停/继续游戏

矩阵键盘原理图如图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  游戏结构设计
游戏主要分为ABC三个模块
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 系吃程序文件清单
文件名
config.h
系统及应用程序配置文件
GUI_CONFIG.H
GUI配置文件
GUI_StockC.h
设置前景色及背景色变量声明文件
lcmdrv.h
液晶模块驱动程序声明文件
Loadbit.h
显示单色图形及汉字显示声明文件
keyboard.h
键盘驱动程序声明文件
LPC2124.h
LPC2124寄存器定义文件
target.h
目标板特殊的代码头文件
GUI_StockC.C
设置前景色及背景色变量实现文件
loadbit.c
显示单色图形及汉字显示实现文件
lcmdrv.c
液晶模块驱动程序实现文件
resource.c
资源定义文件
keyboard.c
键盘驱动程序实现文件
main.c
主函数所在的文件
IRQ.s
中断处理代码文件
Startup.s
LPC2124启动代码文件
Target.c
目标板特殊的代码实现文件

附录三 使用得书
贪吃蛇小游戏简单易玩矩阵键盘的2 ,4,6, 8键分别使蛇向下左右戏运动按5键为暂停/继续游戏在游戏过程中贪吃蛇吃到东西身体会变长身体长度长到一定程序贪吃蛇运动的速度图快游戏的难度就增加总的来说这款贪吃蛇小游戏比其他的更简单更容易上手


完整的Word格式文档51黑下载地址
1506020210王浩宇.doc (1000 KB, 下载问: 16)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51Hei单片机16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 单片机坛网

快速回复 返回顶部 返回列表
ձһhƬձƵ ձƵɫwww ձƵ:ɫ