基于UCOS-II及ARM9的“贪食蛇”游戏设计报告.doc
《基于UCOS-II及ARM9的“贪食蛇”游戏设计报告.doc》由会员分享,可在线阅读,更多相关《基于UCOS-II及ARM9的“贪食蛇”游戏设计报告.doc(22页珍藏版)》请在沃文网上搜索。
1、 基于UCOS-II及ARM9的“贪食蛇”游戏设计报告目录:一、摘要1一、引言及开发板资源2 1.1 引言 2 1.2开发板资源 2二、移植C/OSII,实现贪吃蛇游戏 .3 2.1编写应用程序 .3 2.2实现目标的简介 .4三、系统内容的设计及要求.5 3.1硬件系统构架 .4 3.2设计要求 .6四、系统内容的设计思路及程序框图.6 4.1设计思路 .6 4.2按键控制 .7 4.3游戏设计 .7五、此次设计遇到的问题和解决方法 .9六、 总结.10七、参考文献10八、附录(部分API函数)10【摘要】实时操作系统的使用,能够简化嵌入式系统的应用开发,有效地确保稳定性和可靠性,便于维护和
2、二次开发。C/OS-II是一个基于抢占式的实时多任务内核,可固化、可剪裁、具有高稳定性和可靠性,除此以外,C/OS-II的鲜明特点就是源码公开,便于移植和维护。本文介绍如何运用C语言和API函数在ARM9开发平台上实现贪吃蛇的游戏。【关键字】实时操作系统C/OS-II,C语言,API函数一、 引言及开发板资源 1、1引言 当谈到进行嵌入式系统开发时,开发平台也是不可缺少的。开发平台通常具有多种功能和丰富的接口,用户只需要在上面进行应用程序开发就可以了,这样可以大大节约项目的开发周期, ARM9微处理器处理速度快、超低功耗、应用前景广泛、价格低廉,又由于C/OSII采用C语言和汇编语言,其中绝大
3、部分用C语言,结构非常简洁,同时C/OSII可移植性非常好,很容易就能被移植到各种微处理器上,而且在移植过程中,用户只需要做少量的工作即可,以及C/OSII具备了实时操作系统的全部性能,非常适合初次接触嵌入式技术的初学者和工作人员作为学习嵌入式技术使用。ZLG/GUI是一款嵌入式系统简易的图形用户界面,它提供了最基本的画点、线、圆形、圆弧、椭圆形、矩形、正方形和填充等功能,较高级的接口功能,由ASCII显示、汉字显示、图形显示、窗口和菜单等,支持单色、灰度、伪彩和真彩等图形显示设备。1.2、开发板硬件资源(1)S3C2410-S Core 小板:采用S3C2410X 处理器,64M NANDF
4、LASH 64RAM。(2)Double 100M EtherNet 网卡:均由AX88796 构成,采用现有电路但分配不同地址。(3)4 HOST / 1 DEVICE USB 接口:主USB 口扩展为4 个,由AT43301 构成USB HUB,其中电源管理用MIC2525。USB 从口保持处理器本身的1 个。(4)3 UART/IrDA:保持2 个RS232 串口,增加1 个RS485 串口,1 个IrDA 收发器,均从处理器的UART2 引出。(5)168Pin EXPORT:有一个168Pin 扩展卡插槽,并去掉已经被主板上各模块占用的资源。网卡部分还在局部总线上,其余电路包括168
5、Pin 扩展槽都在外部总线。(6)LCD:兼容多种LCD,可采用5 寸256 色屏或8 寸16bit 真彩屏,同时预留一个24bit 接口。可以支持板外8bit 或24bit 屏。(7)TouchScr:采用ADS7843,预备了直接用2410 内部ADC 构成的转换电路接口(8)AUDIO:采用UDA1341,具有放音、录音等功能。(9)PS2 KEYPAD:使用ATMEGA8 单片机控制2 个PS2 接口和板载17 键小键盘。两个PS2 可接PC 键盘和鼠标。(10)LED:使用ZLG7290 只驱动8 只小数码管。同时可作IIC 总线实验。(11)POWER SUPPLY、RESET、R
6、TC 等必须资源。(12)ADC:板载3 个电位器和选择跳线,同时在板上设模拟电压输入专用接口。(13)IDE/CF 卡插座:支持2.5 英尺的笔记本硬盘读写和IDE 模式下的CF 卡读写。(14)PCMCIA 和SD 卡插座:由EPM3128A100 CPLD 实现。(15)IC 卡插座。由ATMEGA8 单片机控制。(16)DC/STEP 电机。步进电机采用74HC573 扩展IO,软件形成时序来控制。同时剩余IO 可以控制CAN 等电路,以节省CPU 的GPIO 资源。(17)CAN BUS:设置1 个CAN 口,采用MCP2510 和TJA1050。(18)Double DA:设置两个
7、DAC 端口,采用MAX504 接SPI 总线。(19)GPRS/GPS 扩展板不做在主板上,单独设计扩展板。注意GPS 的RS232 需要增加MAX3232芯片来转换为TTL 才能引到168Pin 插座上。二移植C/OSII,实现贪吃蛇游戏要移植一个操作系统到一个特定的CPU体系结构上并不是一件很容易的事情,它对移植者有以下要求:1. 对目标体系机构要有很深的了解;2. 对OS原理要有较深入的了解;3. 对所使用的编译器要有较深入的了解;4. 对需要移植的操作系统要有相当的了解;5. 对具体适用的芯片也要有一定的了解;根据C/OSII的要求,移植C/OSII到一个新的体系结构上需要提供2个或
8、3个文件:OS_CPU.H(C语言头文件)、OS_CPU_C.C(C程序源文件)及OS_CPU_A.ASM(汇编程序源文件)。21 编写应用程序 移植C/OSII是为了在自己的系统使用C/OSII。要在自己的系统中使用C/OSII编写自己的应用程序,就必须遵守C/OSII的编程规范。下面的程序清单为应用程序的main()函数以及相关的代码,应用程序主函数:int main(void) OSInit (); OSTaskCreate (Task0,(void *)0, &TaskStk0TaskStkLengh - 1, 3); /创建任务0 KeyMbox = OSMboxCreate(NUL
9、L); / 建立一个邮箱,用于传递按键消息 OSStart (); return 0;在使用C/OSII提供的任何功能之前,必须调用函数OSInit (),它完成C/OSII的初始化并建立空闲任务,在开始多任务之前,必须建立至少一个用户任务(不包括C/OSII的空闲任务),这是通过调用函数OSTaskCreate()或函数OSTaskCreateExt()实现。最后函数main()调用函数OSStart()将控制权交给C/OSII内核,main()函数也就结束了。 然后编写任务的代码,C/OSII规定任务是不允许返回的,不过程序一般通过死循环实现,或者通过调用函数OSRaskDel()来实现。
10、任务代码框架如下: Void Task0(void *pdata) Pdata=pdata; /避免编译警告 TargetInit(); /目标板初始化 For(;) 程序代码; 2.2 实现目标的简介在开发板上实现贪吃蛇的小游戏,利用C/OSII的任务管理系统对于所有的任务进行管理调度。建立两个任务(不包括空闲任务),其中一个高优先级的任务一直实现按键扫描,以便获得键值;另一个低优先级的任务,实现游戏方向键定义和游戏运动画面等功能。 任务0一开始初始化液晶,显示游戏的开机画面,然后创建任务1并将任务1挂起,处于待开始阶段,然后建立一个死循环,用来不停地扫描键盘,实现游戏的退出、暂停、恢复游戏
11、等功能。任务1则定义开始游戏后的方向键,其中扫描键盘之前建立一个邮箱,当有按键时将按键信息发送到邮箱,然后根据要实现的功能从邮箱中取回按键值实现游戏的控制功能,然后将邮箱清空。 任务1则创建贪食蛇游戏的运动轨迹,定义游戏中的边界,绘制贪食蛇游戏中的豆子,和定义游戏是否结束。游蛇运动采用了连续赋值的思路,首先开始游戏的时候绘制蛇头、蛇身、和蛇尾,并将蛇的坐标位置存入已定义好的数组中,以便实现蛇的动态。然后蛇头向前运动,并将原先的蛇头坐标赋给蛇身,蛇身原先的坐标赋给蛇尾,如果蛇身增长则把蛇尾原先坐标赋给增加的蛇身,然后用白色填充块将蛇尾填充掉。在任务1执行的时候任务0同在执行,同时为了保证按键的准
12、确,按键的延时时间小于绘制游蛇的延时时间。三系统内容的设计及要求3.1 硬件系统构架硬件部分的主要是由外部Flash存储器、按键电路、JTAG接口、液晶接口。采用的液晶模块为RT240128A作为图形界面的输出显示。RT240128A 点阵图形液晶模块的点像素为 点白色字/蓝色底STN 液晶屏,视角为6:00 内嵌控制器为东芝公司的T6963C 外部显示存储器为32K 字节模块的电路原理框图如下图所示图3.1 液晶原理图EasyARM2200 开发板可以直接支持RT240128A点阵图形液晶模块或相兼容的液晶模块应用连接电路如图5. 23 所示采用8 位总线方式连接RT240128A点阵图形液
13、晶模块的没有地址总线显示地址和显示数据均通过DB0 DB7 接口实现由于模块工作电源是5V而LPC2210 的I/O 电压为3.3V 所以在总线上串接470 保护电阻图形液晶模块的C/D 与A1 连接用于控制模块处理数据/命令将C/D 与A1连接有一个好处就是LPC2210可以使用16 位总线方式操作该图形液晶模块(高8 位数据被忽略) 模块的片选信号由LPC2210 的A22 和外部存储器BANK3 片选CS3 相或后得到当A22 和nCS3 同时为0 时模块被选中所以其数据操作地址为0x83000000 命令操作地址为0x83000002,使用LPC2210 的总线对RT240128A 点
14、阵图形液晶模块操作控制前先要设置芯片的外部存储器控制器(EMC) 。液晶与ARM9连接电路图如下图所示:图3.2 液晶连接电路图设计中的图形用到了GUI_ClearSCR()、GUI_RectangleFill()、GUI_LoadPic()几个函数,其中贪食蛇的蛇和食物是通过用字模工具将用图像处理工具处理好的图片转换成字模得到,用GUI_RectangleFill()实现绘制游蛇边界和擦除图片的功能,用GUI_LoadPic()则调用字模生成的图片显示在液晶上。3.设计要求:1、“蛇”可以屏幕上以现有坐标及方向前进;2、通过键盘可以控制“蛇”的行进方向;3、“蛇”触及屏幕边框或设定的范围边界
15、则游戏结束;4、“蛇”可以吃掉在设定范围内随机产生的点,并得分5、可以计算“蛇”吃掉所有点的时间6、有多个关口7、可以累计成绩四系统内容的设计思路及程序框图4.1设计思路1、首先要显现游戏的初始界面,因此可以通过基本绘图API函数来实现,由于考虑到蛇运动时会转向,因此采用画矩形框来实现画蛇的身体,初始定义蛇身长度为三个矩形框,每个矩形框为10*10像素点(LCD为640*480),这样可以更容易的实现蛇在每个方向上的判断和实现。2、通过按键消息可以实现键盘和蛇之间的互动,为了能准确记录每次给蛇的行进方向和擦除多余的蛇尾实现蛇的行进动作,采用两个数组来记录组成蛇身体的每个矩形框的位置,坐标设为l
16、(代表矩形框左边的坐标:left)和u(代表矩形框上边的坐标:up),则矩形框右边的坐标为(l+10),下边的坐标为(u+10)。当蛇前进一个矩形框时,即一步时,就把蛇头的坐标记录在数组中,并清除蛇尾。3、因为蛇是有矩形框组成的,只要判断矩形框的位置即可判断蛇是否出界,用if(u430|l610)【范围已定】这条语句就可以了。4、产生随机点可用rand()函数来实现,当蛇吃到食物是实际上是蛇头和食物矩形框重合,因此可用判断蛇头的坐标和食物的坐标是否相等来判断是否吃到食物,如果吃到食物就在产生一个随机食物,否则不产生。5、对于时间的显示,可直接利用已有的头文件#include./ucos-ii/
17、add/rtc.h和相关函数if(Rtc_IsTimeChange(RTC_SECOND_CHANGE) timeuse+;来实现6、设置多个关口,只要将延时时间改变就可以实现蛇速度的变化,又由于每关的关数不同,因此可以设定每关蛇吃到食物点不同。在本实验中蛇吃食物的点数为关数的两倍,而且后一关的速度比前一关的速度快。7、成绩的记录只要设置一个变量,当吃到一个食物就加一,由于需要累积,因此在每关的开头并不需要将变量清零(除了第一关)。8、关于显示时间及分数只要用API函数TextOut即可。4.2 按键控制 按键控制通过消息邮箱机制实现的。消息邮箱(简称邮箱)是C/OSII中的另一种通信机制,可
18、以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量。通常该指针指向一个包含了“消息”的特定数据结构。4.3 游戏设计在游戏程序中,Main_Task任务主要完成按键消息的提取,并为下一步动作做准备。snake_Task主要是完成一些初始化的工作,开机画面的显示,开始将屏幕清屏,然后绘制贪食蛇游戏的边界和计分状态,最后进入一个无限循环,在循环体中根据游戏者的按键进行相应的处理,在无限循环中会调用一些已定义的函数。 图4.3 贪食蛇吃豆的任务流程图、 蛇的动态显示建立在snake_Task任务里,主要是不停的更新蛇的位置,另外每更新一次还需要判断蛇是否碰到边界,是否吃到食物等。其流程图
19、如下图所示:五、此次设计遇到的问题和解决方法首先遇到的问题是不熟悉软件,因此在熟悉软件的时间用了很多。等掌握软件差不多时,又遇到新的问题,那就是模板程序里的函数有的看不懂,因此接下来的时间就是查看有关书籍或资料,并向同学请教,经过一段时间的学习,终于有了一定的认知,可以弄懂函数所代表的意思。接着,就是贪吃蛇的设计思路和实现手法,不过还没开始就遇到了问题,就是按键消息没有反应,经过一节课的调试和测试终于成功了,原因竟然是硬件上的按键失灵了。紧接着就是要实现蛇的动作,考虑到画线很难实现蛇的转向问题,就改用矩形框来画蛇,过来初见成效,蛇可以动了,但是舍得尾端没办法清除。经过深思熟虑,并和同学讨论后,
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 UCOS II ARM9 贪食 游戏 设计 报告
