嵌入式课设实验报告——贪吃蛇.doc
《嵌入式课设实验报告——贪吃蛇.doc》由会员分享,可在线阅读,更多相关《嵌入式课设实验报告——贪吃蛇.doc(34页珍藏版)》请在冰点文库上搜索。
课程设计
本科生通用
题目:
贪吃蛇游戏设计
专业:
电子信息工程
班级:
姓名:
、
成绩:
导师签字:
年月日
任务书
题目:
贪吃蛇游戏设计
参数:
供电电源电压3.3V
矩形墙壁的位置坐标(20,20)(200,200)
蛇的初始位置坐标(40,20)(30,20)(20,20)
蛇的每一节为边长为10的矩形
要求:
利用嵌入式开发系统设计一个贪吃蛇的小游戏。
开始显示为初始界面,然后开始进行游戏。
游戏开始出现3节的蛇,一个食物,右边显示得分。
当进入游戏后,蛇自动向右前行。
通过按键上下左右来控制蛇前行的方向,当蛇吃到食物后,得分加100分,蛇身体变长一节。
当蛇在游行过程中撞到墙壁或者自身则游戏结束。
日程安排:
6月30日:
选择课设题目、查阅资料、完成第一步。
7月1、2日:
完成方案设计。
即提出设计思路与软硬件的设计方案。
7月3、4日:
学习硬件原理
7月7、8、9日:
根据软件设计方案做软件。
7月10日:
测试
7月11日:
完成论文
目录
第一章课题研究·······························
1.1研究目的······································
1.2研究背景······································
1.3主要研究内容··································
第二章设计思路及方案设计·····················
2.1设计思路······································
2.1.1实现功能·································
2.1.2各功能的实现方法·························
2.1.3硬件说明·································
2.1.4软件说明·································
2.2硬件设计······································
2.3软件设计······································
第三章硬件设计·······························
3.1处理器最小系统································
3.2硬件基本电路··································
3.2.1按键·····································
3.2.2LCD·····································
3.2.3USB接口与电源···························
第四章软件设计·······························
第五章调试与测试·····························
5.1调试··········································
5.2测试··········································
第六章结论···································
参考文献······································
第一章课题研究
1.1研究目的
为了巩固所学嵌入式系统的基础知识,加强实际应用和动手实践能力,开始为期2周的课程设计。
通过本次课程设计,可以培养独立思考和团队协作能力,巩固基础知识,增强实际应用的灵活性和技巧性,掌握嵌入式软件项目的设计流程,锻炼学生应用已学的知识去解决有针对性的课题的能力。
能够对uC/OS-II操作系统进一步学习并且有更深的理解,掌握基本程序设计过程和技巧,掌握基本的分析问题、解决问题的能力,为以后的学习以及做其他课题打下一定的基础。
1.2研究背景
目前,以计算机技术和网络技术为核心的现代网络技术已在现实生活和生产中得以广泛的使用,休闲类网络游戏集趣味性,娱乐性,互动性和益智性于一体,已经成为多数人群的休闲方式。
电脑游戏经过短短30年的发展,已经成为影响公众生活,改变公众娱乐方式的重要产业。
过去,人们主要是借助电影、电视、音乐等方式来娱乐。
而今天,以游戏为代表的电子娱乐正在成为主流娱乐方式。
游戏也正在迅速成长为一个庞大的产业。
现在存在着各种各样的游戏版本,同样有很多中设计的方法。
其设计可以基于多种平台(例如JAVA、Android等)。
我们此次是基于Cortex-M3内核进行设计。
ARM公司于2006年推出了Cortex‐M3微处理器核。
Cortex-M3是较高效率(1.25DMIPS/MHz)低功耗(0.19mW/MHz)、短中断延时(最少6周期)、低调试成本的32位标准处理器。
Cortex-M3采用的V7M架构和指令集,它的速度比ARM7快三分之一,功耗低四分之三。
随着嵌入式系统的发展,以及32位嵌入式处理器和图形显示设备的广泛应用,目标产品对嵌入式技术的要求越来越高。
尤其是对人机界面的要求日益剧增。
因此提供友好的,易操作的人机界面是十分重要与必须的。
而LCD液晶显示屏恰恰是一种非常方便的人机界面,因此LCD液晶显示屏在出事后达到了非常广泛的应用。
目前,嵌入式系统是近年来发展很快的计算机方面的学科方向,并迅速渗透到控制、自动化、仪器仪表等学科。
嵌入式方向包括了软硬件协同设计、嵌入式体系结构、实时操作系统、嵌入式产品设计等方面的知识,大于当代大学生,更需要掌握嵌入式系统设计的典型开发工具和开发核心技术。
对于嵌入式市场的发展来说,中国市场的意义更加重大。
中国市场对于嵌
入式互联网这场革命来说非常关键。
勃勃的生机,很好的产业互动,良好的协作精神,中国现在正在形成-个健康的嵌入式的发展模式和转型模式。
中国可能是-个引发点,嵌入式市场先在中国蓬勃发展,然后辐射到全球其他地区。
1.3研究意义
基于ARM技术的发展对人机界面的要求越来越高,同时考虑到游戏开发过程普遍存在时间长了、成本高、效率低等特点,采用最新的Cortex-M3处理器并结合LCD的种种优势可以使游戏开发时间更短、效率高、成本低、同时也能充分利用新型资源设计出智能化,方便化,快捷化的游戏产品从而很快占领市场取得竞争优势。
1.4主要研究内容
在神舟三号开发板上实现贪吃蛇的小游戏,利用uC/OS-II的任务管理系统对于所有的任务进行管理调度。
新建一个工程模板,添加相应的驱动文件。
使用uC/OS-II操作系统进行多任务设计。
通过各个任务调度以实现贪吃蛇这款小游戏。
开始显示为初始界面,然后开始进行游戏。
游戏开始出现3节的蛇,一个食物,右边显示得分。
当进入游戏后,蛇自动向右前行。
通过按键上下左右来控制蛇前行的方向,当蛇吃到食物后,得分加100分,蛇身体变长一节。
当蛇在游行过程中撞到墙壁或者自身则游戏结束。
第二章设计思路及方案设计
2.1设计思路
2.1.1实现功能
基于μC/OS-II操作系统、Cortex-M3内核,使用多任务管理进行设计贪吃蛇小游戏。
所实现功能包括:
1)初始化
2)蛇移动功能
3)产生食物
4)控制蛇移动方向
5)分数的累加计算
2.1.2各功能的实现方法
1、初始化
初始化包括了硬件初始化和软件初始化。
硬件初始化主要是GPIO和LCD的初始化;软件初始化包括了系统初始化,游戏界面的初始化。
在main函数中调用OSInit()函数,进行操作系统的初始化,创建一个StartTask任务,在StartTask任务中开启时钟节拍,完成硬件的配置与初始化,并创建需求的几个任务,其中一个任务完成初始界面的显示。
2、蛇移动功能
蛇的移动功能是游戏的主体部分。
要求蛇可以根据按键控制方向进行转弯和移动。
当蛇头撞到边界或者自身时,界面显示游戏结束。
当蛇吃掉食物后,蛇的身体增长一个矩形的长度,同时显示新的食物。
用边长为10的矩形代表蛇的每一节,起始为3节。
首先要判断按键所控制的方向,进而根据按键控制让蛇在一定方向上游动,在显示蛇游动的过程中,要根据需求计算蛇头的下一个位置,然后将蛇身中每一节的当前坐标给它的后一节,即蛇身的每一块移动到其前一块的位置,接着把新蛇显示在液晶上。
当蛇头撞墙或者撞自身时,将蛇移动任务挂起;执行死亡任务时在液晶上显示GAMEOVER!
;蛇每次吃到食物后,蛇的长度增加1,所得的分数加100分,将蛇尾的坐标保留,传给新增的那一节,显示新的食物。
3、食物的产生
在进入游戏界面后就会显示食物跟一条运动的蛇,蛇每次吃到食物后,就会产生新的食物。
本次设计采用一个边长为10的绿色矩形当做食物,通过判断蛇头的坐标是否与食物的坐标重合来控制新食物产生的时间,当蛇头的坐标与食物的坐标重合后,产生新的食物。
食物的坐标预先存在固定数组中,每次吃到食物后,在数组中取下一个数做为食物的坐标,将其在液晶中画出来。
4、蛇运动方向的确定
蛇在左右方向运动时,可按键控制蛇头向上或向下转弯;蛇在上下方向运动时,可按键控制蛇头向左或向右转弯。
蛇运动方向由按键控制。
首先需有一个按键查询的任务,在此任务中先判断蛇运动的方向,然后判断是否有可以执行的控制方向的按键被按下。
如果按下了,则蛇按着此键所控制的方向转弯并继续游动。
5、计分数
用一个计分的任务来实现。
蛇每次吃到食物后,分数增加100。
2.1.3硬件说明
神州III号STM32开发板简介
神州III号是一款基于STM32F103ZET6处理器的STM32开发板,面向广大的企业客户和STM32爱好者。
开发板功能强大,外围资源齐全。
此外,还预留了丰富的扩展接口,可以灵活的扩展各种功能。
而整版尺寸仅仅110mm*150mm,非常小巧,方便携带。
神舟三号STM32开发板的产品外观及对应各功能模块说明如图表1所示
◆STM32F103系列最高端配置芯片STM32F103ZET6。
Cortex-M3内核32位处理器,72M主频,LQFP144封装,片内Flash容量:
512K,片内SRAM容量:
64K
◆标配1G比特容量的NandFlash
◆标配16M比特容量的NorFlash,最大支持128M比特容量NorFlash
◆标配4M比特容量的SRAM
◆标配2K比特容量的I2C接口的EEPROM芯片
◆标配16M比特容量的SPIFlash芯片
◆采用主流收音机模块,提供收音机功能◆采用专用音频解码芯片,提供音频播放功能
◆1个USBSLAVE接口,支持USB过流保护与USB接口静电防护,符合ESD防护标注IEC61000-4-2(ESD15kVair,8kVContact)
◆1个10M以太网接口,用于以太网通信
◆1个标准的2.8/3.2寸LCD接口,支持触摸屏,分辨率320X240,26万色
◆1个复位按钮,控制整板硬件复位
◆1个5V外部电源输入接口(内正外负)
◆1个电源开关,控制整个板的电源开关
◆1个标准的JTAG/SWD调试下载口,支持JLINK供电
2.1.4软件说明
1)开发平台说明
KeiluVision4介绍
发展历程:
2009年2月发布KeiluVision4,KeiluVision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。
新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。
新版本支持更多最新的ARM芯片,还添加了一些其他新功能。
2011年3月ARM公司发布最新集成开发环境RealViewMDK开发工具中集成了最新版本的KeiluVision4,其编译器、调试工具实现与ARM器件的最完美匹配。
目前使用KeiluVision4的产品有KeilMDK-ARM,KeilC51,KeilC166和KeilC251。
特征功能
最新的KeiluVision4IDE,旨在提高开发人员的生产力,实现更快,更有效的程序开发。
uVision4引入了灵活的窗口管理系统,能够拖放到视图内的任何地方,包括支持多显示器窗口。
uVision4在μVision3IDE的基础上,增加了更多大众化的功能。
·多显示器和灵活的窗口管理系统
·系统浏览器窗口的显示设备外设寄存器信息
·调试还原视图创建并保存多个调试窗口布局
·多项目工作区简化与众多的项目
技术支持
KeiluVision4由国内米尔科技提供销售和技术支持服务,他们是ARM合作伙伴,也是国内领先的工控板以及嵌入式解决方案提供商。
2)开发语言说明
C语言是由DennisRichie于1972年在AT&Bell实验室研究成功并投入使用的系统编程语言,其设计目标是使C既具有汇编语言的效率,又具有高级语言的易编程性,其最具代表性的应用是UNIX操作系统。
从20世纪80年代中期C语言涉足实时系统后,受到了普遍欢迎。
目前是使用最广泛的嵌入式系统编程语言。
3)操作系统说明
μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。
它被广泛应用于微处理器、微控制器和数字信号处理器。
μC/OS-II的前身是μC/OS,最早出自于1992年美国嵌入式系统专家JeanJ.Labrosse在《嵌入式系统编程》杂志的5月和6月刊上刊登的文章连载,并把μC/OS的源码发布在该杂志的BBS上。
μC/OS和μC/OS-II是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。
CPU硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU上。
用户只要有标准的ANSI的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。
μC/OS-II具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB。
μC/OS-II已经移植到了几乎所有知名的CPU上。
严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。
没有提供输入输出管理,文件系统,网络等额外的服务。
但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现。
uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。
uC/OS-II以源代码的形式发布,是开源软件,但并不意味着它是免费软件。
你可以将其用于教学和私下研究(peacefulresearch);但是如果你将其用于商业用途,那么你必须通过Micrium获得商用许可。
2.2硬件设计方案
STM32处理器
按键
LCD
2.3软件设计方案
整个程序由启动任务、初始游戏界面任务(MyTask1)、按键查询任务(MyTask2)、蛇移动任务(MoveTask)、死亡任务(DeadTask)、计分任务(ScoreTask)组成。
软件主体流程设计如下:
初始游戏界面任务:
MyTask1
液晶显示初始界面
PD3按下?
N
Y
进入游戏界面挂起自身任务
延时等待
按键查询任务:
MyTask2
判断蛇当前游动方向
判断有效的按键是否按下
根据按键控制蛇下一步的游行方向
延时等待
MoveTask
蛇游行任务:
判断蛇下一步的游行方向
根据确定的游行方向来计算蛇的下一个位置坐标
清屏、画出游戏的矩形墙壁、食物
吃到食物?
N
Y
蛇身长度加一节
分数加100分
延时
游戏结束执行DeadTask
本身任务挂起
蛇撞墙或者自身?
按着新蛇的坐标画蛇
NY
第三章硬件设计
3.1处理器最小系统
复位电路
电源电路
处理器
其他功能电路
晶振电路
电源电路
存储器
嵌入式实验板处理器选择的是STM32F103ZET6,最小系统、RTC及调试接口电路如图所示。
引脚资源分配如表所示。
3.2硬件基本电路
3.2.1按键
神州III号STM32开发板板载4个功能按键,分别是WAKEUP按键和TAMPER按键及两个用于自动以功能按键,在不使用第二功能的情况下,这四个按键都可以作为通用的按键,由用户自定义其功能。
案件分别是PA0,PC13,PA8,PD3,四个GPIO管脚连接,当按键按下时,对应的GPIO管脚为低电平,反之,当没有按键按下时,对应的GPIO管脚为高电平。
3.2.2LCD
神州III号通过FSMC总线对屏进行访问操作实现图形界面的显示。
神舟系列的2.8/3.2寸LCD触摸屏支持触摸功能,LCD模块上有触摸芯片,将电阻式触摸屏的模拟信号转化为数字信号,处理器通过SPI接口读取芯片转换后的数字,支持查询方式和中断方式。
此外,2.8/3.2寸LCD屏模块上还集成了SPIFlash和SPI接口的SD卡座。
基于ILI9320驱动芯片的TFT液晶显示模块
显示驱动原理:
320*240显示屏单点26万色(RGB565)
接口:
I80(并行)系统接口
SPI接口
垂直扫描VSYNC接口
RGB接口
通过写入控制命令到寄存器对液晶进行控制
通过写入显示数据到内部GRAM实现显示功能
硬件连接如下图:
液晶显示模块原理图
3.2.3USB接口与电源
嵌入式实验板支持的供电方式主要有三种,如图1-6所示。
分别是:
USB接口供电,最大500mA。
外部直流5V供电。
JLINKV8供电,包括5V和3.3V两种方式。
当CON1电源开关拨到1-2位置时,由外部接口供电。
板上的电源转换芯片将USB接口输入的5V电源转换成3.3V的电源,作为处理器和相关外围电路的工作电源。
当CON1电源开关拨到2-3位置时,由USB接口供电。
板上的电源转换芯片将USB接口输入的5V电源转换成3.3V的电源,作为处理器和相关外围电路的工作电源。
U11为USB接口的ESD防护电路,满足ESD防护标准IEC61000-4-2(ESD15kVair,8kVContact)。
USB和供电电路原理图
第四章软件设计
4.1软件多任务结构
1、主函数:
创建启动任务(StartTask)
2、启动任务:
实现硬件的初始化,开启时钟节拍,创建5个任务MyTask1、MyTask2、MoveTask、DeadTask、ScoreTask,挂起MoveTask、DeadTask、Scor