基于单片机的贪吃蛇设计_第1页
基于单片机的贪吃蛇设计_第2页
基于单片机的贪吃蛇设计_第3页
基于单片机的贪吃蛇设计_第4页
基于单片机的贪吃蛇设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于单片机的贪吃蛇设计绪论1.1研究背景及意义时代在不断的进步,人们的生活节奏也因此不断加快,越来越多的人加入了经济化全球化的世界。人们不再只需要保持自己的小世界,加班、旅游已逐渐代替了人们的正常工作,成为我们必然的公务。同时,我们可以供随时随地的休闲娱乐,因而休闲类的小游戏已经逐渐成为生活的必需品,渐渐得变得无所不在,渗入我们日常生活的各个部分。贪食蛇这款经典的小游戏具有可塑性强、简单易行、通俗易懂、操作方便、娱乐性强等特点,因此引来了不少人们的青睐。这款小游戏牢牢地把握住了人们追求娱乐的心理,看起来很简单,但真正接触的时候毫无违和感,甚至会感觉到其乐无穷,在人们不断寻求探索更多的开心和乐趣下,游戏的到来给了追逐快乐的人,和现代人满意的成功后,在巨大的压力之下是一种很好的放松工具。当今的世界,科技在不断地发展,尤其是微电子技术方面,计算机软件技术和其应用技术的发展,将人们的生活变得多姿多彩,不在单调无趣。单片作为微型计算机大家族中不可或缺的一员,微型计算机以其良好的稳定性,独特的构造,较低的成本在嵌入式领域中得到了广泛应用。我希望可以通过这些年来所学的知识将它剖析出来,使它立体的呈现在面前,真正意义上的了解它的实质,明白它的精髓所在。在编程方面,能力不强的我,更应该努力地借助这次机会,通过研究,从实践中提升自己的编程能力。故而,我选定了这个比较有意思的课题。1.2单片机发展状况单片微型计算机,简称单片机(MCU)。它是在一块半导体硅片上集成了振荡器电路、中央处理单元、随机存取存储器、只读存储器、可编程定时器/计数器、并/串行I/O接口等,有的还包含了A/D转换器。总言之,一个巴掌大小的单片机,具有一台计算机的所有属性,直接相当于一台微型计算机。由于使用单片机时其通常在测控系统的核心部分并嵌入其中。所以,单片机也被称作为嵌入式控制器EMCU(EmbeddedMicroControllerUnit)。单片机拥有集成度高、体积小、重量轻、处理功能强、电源简单、低功耗、可靠性高、价格低廉、运算速度快、易扩展、易于使用、抗干扰能力强等特点。因此,在工业控制、通信系统等涉及到的一些领域,基本是到处都可以见到单片机的踪影,其技术的开发和高水平的应用已逐渐变成一个国家工业化成就取得高低的关键。基于单片机的贪吃蛇设计全文共23页,当前为第4页。早在1974年,世界上第一块单片机被美国的仙童公司研究生产出来,历经短短数几十年的光阴,单片机便与日俱增,成批地涌现出来。截至现在,4位、8位、16位单片机都已经被研究出现了,甚至32位的超大规模集成电路单的片机也已经问世了,其性能也在不断的升高,不断被改善。在国内的单片机,起步虽然比较晚,但其潜力已经受到越来越多人的关注,特别是在工业控制、自动化仪器仪表、计算机系统接口、智能化外设等应用领域发展较为快速。单片机的应用,对于产品的升级,还有机电一体化都有重要的意义。在工业控制中的应用也十分广泛,例如,用单片机可以构成形式多样的控制系统、数据采集系统,各种报警系统,工厂流水线的智能化管芯片理与计算机联网构成的二级控制系统等。单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。在通信行业,这种应用显得更加广泛,手机从最初的只能实现基本通话,没有其他任何功能,到现在任何一部手机都拥有各种强大的功能,含有各种不同的应用,单片机的功效被发挥的淋漓尽致。可以用手机来听音乐,玩游戏,摄影等等,而手机游戏上贪吃蛇游戏就可以利用单片机来实现。即使最新型MCS-51单片机各种基本的内核核心扩张和持续改进,但是51系列的单片机的应用依旧是我们国家的主流模式。基于单片机的贪吃蛇设计全文共23页,当前为第4页。纵观几十年的单片机发展历程,它的未来将向高性能,高速度,低电压,低价格和闪存的方向发展。我们可以预见的是,单片机的未来将变得更加强大、集成度更高、可靠性更高、功耗更低、使用更方便,总之,它的未来是无可限量的。1.3LED发展状况

LED,也就是发光二极管的英文缩写,是一种固态的,能够直接地把电转变成光的半导体电子元件。这种电子元件最早出现在1962年,刚开始的时候只能发出低光度的红光,之后慢慢地发展出其他的单色光,到现在,能发出的光已经遍及可见光、红外线还有紫外线,光度也得到了较大地提高。而其用途从最开始的作为指示灯、显示板等,到现在被广泛地应用于显示器、电视机采光装饰和照明等。它由含镓(Ga)、砷(As)、磷(P)、氮(N)等的化合物制成。半导体晶片由两部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。但这两种半导体连接起来的时候,它们之间就形成一个“P-N”结。当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。半导体照明具有绿色环保的特点,使用寿命长,效率高,节能,抗恶劣环境,结构简单,体积小,重量轻,响应速度快,工作电压低,安全性好的特点。因此,LED成为白炽灯、日光灯和节能灯后的第四代照明电光源,同时也被称为21世纪绿色光源。由于LED具有单向导电性,因此它只能往一个方向导通,这种现象被称为正向偏置,也叫正向偏压。LED的优点是:节能、寿命长、防水、不易破损、低功耗、开关具有高速度、微型、高可靠性、光束集中等。它的不足是:显色性较差、需要专门的驱动电路、起始的成本较高等,因此,传统的照明也相对存在一些不足。近年来白光LED的发光效率有了显著提高。基于单片机的贪吃蛇设计全文共23页,当前为第5页。基于单片机的贪吃蛇设计全文共23页,当前为第5页。1.4设计特点以下是课程设计的主要特点:1.功能定义,顾名思义是很重要的,尤其是对于读程序的人来说,它显得更为重要,在不断地修改和完善该程序的过程中,也能清楚地明白程序中各个模块的所起到的作用,从而大大地提高了程序的可读性。2.主要从main()函数的功能入手。Main()函数的主要功能是启动C源程序编译,主要从main()函数开始读函数,可以将其他功能的函数理解的更加透彻。3.在源程序列表的第一帧,来分析程序所要达到的功能,选择合适的数据结构,然后在模块化程序,根据模块的功能更加简单合理地编写函数。4.我也学到了很多的库函数的作用,如很多对字符串进行处理的函数,还有一些基本的功能我都有了一定的理解。5.它是独立于特定的C语言教科书,重点是C语言的基本特征,以"不变"应"万变",C语言覆盖的重要基础知识的实际运用,我们需要熟练地掌握C语言。6.根据实际出发,本设计可以覆盖所学的知识点,而且它比较能够满足工程的实际需求。再者,本次设计能够激发我们学习的热情,调动学习的积极性,可以根据实际编程的要求,提升实际分析问题的能力和编程能力,而且还可以使我们逐步养成良好的编程习惯。7.提供综合实践能力的的课程设计,以进一步锻炼学生。同时,让学生完成实验的过程中,可以锻炼相互合作的精神,取长补短,培养团队意识。8.通过观察网络实例,循序渐进地帮助学生完成毕业设计。本次课程设计将要求、算法还有源程序单独分开,给学生营造独立思考问题的条件。在足够理解要求和算法的前提下,充分了解学生的要求和算法,再设计自己的应用。同时,我也获得了很多宝贵的经验:1)在设计之前,要确保对所设计的主题和内容有一个系统的认识,了解设计的主题和内容包含哪些资源。2)对于设计程序而言,在采用什么编程语言这方面并不是特别重要,核心在于思路要清晰和软件流程图要完整。所以,第一步是要搞清楚设计原理与思路,然后再画出软件流程图,按这样的步骤,设计起来就比较方便快捷了。2系统总体设计2.1设计要求基于单片机的贪吃蛇设计全文共23页,当前为第6页。作为最为经典和最具有代表性的休闲小游戏之一的贪吃蛇,其玩法准则是:玩家想要控制蛇移动的方向,必须熟练地掌握上、下、左、右四个方向键,在一个个的小方格上吃掉出现的食物。蛇每吃完一次食物后,蛇身变相应地增长一节,一节即为一个单位距离,蛇在游动时,碰到蛇身或者是屏幕框,都表示该游戏结束。基于单片机的贪吃蛇设计全文共23页,当前为第6页。2.2系统设计方案2.2.1硬件设计系统采用的硬件设备主要包括51系列单片机,8*8点阵屏等。本次课程设计单片机选择的是由飞利浦公司生产的低功耗高性能的CMOS型8位单片机。之所以选择它,是因为它拥有内置的一次性可编程只读存储器的64K字节的随机存取数据存储器(RAM)和1K字节的随机存取数据存储器(RAM),它能够满足游戏对存储空间的要求。8*8点阵屏选择的是ARK-SZ411288K,它能够直接与CPU相连接。2.2.2软件设计软件方面主要为汇编语言、C语言、嵌入式操作系统。采用C语言编写的程序能够很容易地在不同类型的计算机之间进行移植[1]。在以后的发展中,各类型号的单片机种类会进一步增加,而开发工具和过程会逐步趋向于统一,软件和硬件差别会更加难以区分[2]。本设计使用uVision3进行程序软件编译。只要看一下编译后生成的汇编代码,就能够体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解[3]。用uVision3软件编写程序时,由于uVision3一般只能修改语法上的错误,不好检查算法上的问题,而且如果直接下到单片机里,会因为电路板的限制而使得调试不方便,所以,在这里,本设计选择使用Proteus软件进行电路的仿真。它运行与Windows操作系统上,可以绘制电路原理图,仿真、分析各种模拟器件和集成电路,支持主流单片机系统和多种外围芯片的仿真,提供软件调试功能,支持第三方的软件编译和调试环境[4]。3系统硬件设计3.18*8LED点阵的原理说明 ARK-SZ411288K是本次课程设计所选用的点阵显示模块。它是一个8*8的点阵显示模块,总共由64个发光二极管组成,且每个发光二极管都处于行线和列线的交点上。当相对应的某一列置1电平,某一行置0电平,则位置所对应的二极管就变亮。值得一说的是,ARK-SZ411288K能够与CPU直接连接,再根据其引脚说明,将其各个引脚与相对应的I/O口相连。3.2LED阵列驱动电路基于单片机的贪吃蛇设计全文共23页,当前为第7页。至少需要10~20mA的电流才能正向地点亮一颗LED,如果通过的电流不足够大,那么LED所发出的光就比较暗。而无论是89C51单片机的I/O口,或是TTL、CMOS的输出,高输出电流并不是很高,才不过1~2毫安,故而,很难直接地对LED高态驱动。在这种时候,我们就需要增加额外的辅助驱动电路,本次课程设计选用的是74HC595,采用74HC595芯片来驱动LED可以有以下几个优点:速度快,功耗小,LED的数量随意。既能够控制LED的共阴极显示器,也可以控制LED的共阳极显示器,同时,还可以通过软件来控制LED的亮度,并且在需要的时候,能够关断显示,从而降低功耗,还能够随时唤醒显示。采用74HC595设计的电路,软硬件设计都相对比较简单,而且功耗较低,驱动能力较强,所占用的I/O口线较少,成本较低,是一种应用十分灵活的设计方案。基于单片机的贪吃蛇设计全文共23页,当前为第7页。系统采用的硬件设备主要包括51系列单片机,8*8点阵屏等。51系列单片机采用了飞利浦(PHILIPS)公司生产的型号为P87C51RD2的低功耗高性能的CMOS型8位单片机。选择它是因为,它内置了64Kbytes的OTP只读程序存储器(RAM)和1Kbytes的随机存取数据存储器(RAM),能满足游戏对存储空间的要求。另外配备了32个可编程的I/O端口,3个16位定时器/计数器,一个7中断源4优先级嵌套中断结构,一个全双工串行通信口,片振荡器及时钟电路[5]74HC595里含有串/并出移位寄存器和三态输出锁存器。寄存器和锁存器有着各自的时钟输入(SCLK和SLCK),它们有效电平都是上升沿。当SCLK由低电平跳向高电平时,串行输入数据(SDA)移入寄存器;当SLCK由低电平跳变为高电平时,锁存器将寄存器的数据置入。清除端(CLR)的低电平只对寄存器复位(QS为低电平),而对锁存器无影响。当输出允许控制(EN)为高电平时,并行输出(Q0~Q7)为高阻态,而串行输出(QS)不受影响。74HC595最多需要5根控制线,即SDA、SCLK、SLCK、CLR和EN。其中,CLR能够直接接到高电平,并且用软件可以实现寄存器的清零;若是不需要用软件改变亮度,则EN可以直接接到低电平,使用硬件来改变亮度。将余的三根线与单片机的I/O口相连,能够控制LED。数据SDA口送入74HC595,在每个SCLK的上升沿,SDA口上的数据移入寄存器,在SCLK的第9个上升沿,数据开始从QS移出。如果把第二个74HC595的SDA和第一个74HC595的QS连接,数据移动到第二个74HC595中,按照此方法,逐次接下去,能够接任意多个。所有的数据发送完毕后,给SLCK一个上升沿,将寄存器中的数据送入锁存器中。如果EN为低电平,数据即从并口Q0~Q7输出,把Q0~Q7与LED的8段相接,LED就可以实现显示了。要想软件改变LED的亮度,只需改变EN的占空比就行了[6]。其中,点阵的亮度可以使用改变输入电压来改变[7]。4系统软件设计4.1系统主要模块介绍基于单片机的贪吃蛇设计全文共23页,当前为第8页。贪吃蛇操作过程中有多种状态,采用宏定义,使各种状态一目了然,思路清晰。同时再编写代码时,采用匈牙利命名规则命名宏,变量,函数名,方便阅读修改[8]。基于单片机的贪吃蛇设计全文共23页,当前为第8页。4.1.1主函数模块作为程序运行时缩影一般的存在,主函数是一个无限在循环的程序。它所需要完成的是对一系列硬件软件的初始化,并且利用定时中断来控制游戏的时钟,还要调用其他模块以完成按键的处理和蛇的运动。4.1.2按键模块按键模块包括两个部分:按键检测模块和按键处理模块。按键检测模块初始化按键对应的管脚,利用查询方式检测按键对应的变量值改变。按键处理模块针对不同状态下,对按键做出不同的处理。4.1.3蛇运动控制模块该模块负责控制蛇的运动和状态,包括在刚开始游戏时对蛇进行初始化,蛇运动时对蛇移动的处理,蛇吃掉出现的食物后的处理。4.2主程序工作流程系统中的应用软件是根据系统功能要求设计的。按软件的功能来分,可分为执行软件和监控软件。执行软件可以完成各种实质性的功能,如测量、计算、显示。打印、输出、控制等;监控软件是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度角色。在软件设计上,通常要考虑如下几个方面问题:1.根据软件的功能要求,将系统软件分为几个相对独立的部分。整体结构设计合理,明确,软件开发简单,还有合理的工作流程。2.每个功能程序要实现模块化、子程序化。不仅方便调试,连接,也能方便移植和修改。3.编写应用软件之前,要先绘制出程序流程图。4.要合理分配系统资源。C语言是一种结构化的高级语言,其优点是可读性好,移植容易[9],是普遍使用的一种计算机语言。具体的实施步骤为:1.明确控制要求,绘制电路原理图。2.参考相关文献,检查电路图是否正确。3.根据电路原理图焊接电路板,尝试制作贪吃蛇模型。4.分析操作流程,绘制程序流程图。5.编写程序代码,不断改善。6.运用已学软件,对程序进行初步调试。7.配合贪吃蛇硬件部分,并努力完善其功能,以达到设计要求。基于单片机的贪吃蛇设计全文共23页,当前为第9页。主程序工作流程如图1所示:基于单片机的贪吃蛇设计全文共23页,当前为第9页。 图1贪吃蛇流程图系统上电后,首先初始化LED,然后初始化定时器,同时启动定时器,再然后执行程序主体逻辑,程序主体逻辑经过一遍执行后,立即检查有无中断发生。该游戏的中断源有两个,一个是定时器中断驱动蛇自动向前,另一个是用户通过控制按键来控制贪吃蛇移动的中断,二者中任意一个中断的发生都能够使蛇的当前状态发生改变。如果没有中断产生,主程序则继续判断蛇身是否相撞或者蛇头是否碰到主屏幕;只要满足以上所说任意条件,则表示结束游戏,不然游戏继续执行主体循环。基于单片机的贪吃蛇设计全文共23页,当前为第10页。该程序的入口地址是Main()函数,从执行程序的功能开始,将各个模块串联起来,以实现游戏的各种功能。首先完成软件硬件的初始化任务然后进入一个循环,反复检测有无按键、处理按键、处理蛇运动、处理时钟节拍这四件事情[10]。基于单片机的贪吃蛇设计全文共23页,当前为第10页。4.3游戏设计思想按设计要求可以得出,游戏的核心是解决LED显示屏的显示和蛇身的运动处理的问题。将贪吃蛇的每一节蛇身大小定义为一个单位矩阵,食物大小与一节蛇身大小相同,也是一个单位矩阵。当蛇开始运动时,需要解决以下几个问题:1.蛇身的运动处理。用户每按下一个键,蛇身都将开始进行柔体运动。所谓的柔体运动,就是指蛇的运动并不与整条蛇的运动方向一致,而是指在每个时钟到来时,由蛇头带动每一个点阵的方向向下一个点阵传播,然后自己向新的方向运动一步。运动之后,下一个点阵就得到了上一个点阵的方向,然后按照上一个方向运动同样的一步。因此,它能够立即填补上一点的位置,如此类推。在实际设计蛇运动的时候,我们需要把贪吃蛇蛇尾的那个点阵给去掉,然后在蛇头的新方向上放一个点阵。所以,一个函数的定义是用来更新一个点的坐标,只要确定蛇头或蛇尾的坐标还有其运动的方向,我们就可以调用此函数来更新蛇头或蛇尾的坐标。与此同时,调用有关的显示函数来达到对蛇运动处理的效果。2.在吃到食物后对蛇的处理。蛇头和食物坐标相同时,则表示贪吃蛇吃到食物。如果吃到了食物,那么就在蛇头的位置加上一个单位点阵,同时需要立即再更新下一个食物的坐标。3.随机放置新的食物。贪吃蛇吃掉食物后,我们通过更新食物的坐标来产生新的食物。在放置食物时,我们需要调用一个判断函数来判断产生的新食物的坐标与蛇身是否重叠,如果重叠了,那么则需要重新放置,然后再重新判断,直到产生的新的食物和蛇身坐标不相互重叠为止。4.死亡处理。蛇在运动时,如果蛇头碰到显示屏边框或是蛇身,那就表示游戏结束了。4.4LED点阵初始化初始化LED点阵,就是把点阵内所含有的全部信息清除,让其没有任何信息,内部变空,然后在事先所指定的位置处显示蛇的初始位置和食物的初始位置。初始化程序如下: voidInit() { for(i=3;i<SNAKE+1;i++) //SNAKE是蛇的最大长度 x[i]=100; for(i=3;i<SNAKE+1;i++) y[i]=100; //初始化 x[0]=4;y[0]=4;//果子 n=3;//蛇长n=-1 x[1]=1;y[1]=0;//蛇头基于单片机的贪吃蛇设计全文共23页,当前为第11页。 x[2]=0;y[2]=0;//蛇尾1基于单片机的贪吃蛇设计全文共23页,当前为第11页。 addx=0;addy=0;//位移偏移 }4.5贪吃蛇的移动当食物没有被蛇吃掉时,每前进一个单位点阵,蛇头所要到的下一个单位点阵(即LED灯)变亮,相应地,蛇尾的那个LED灯就会熄灭。设计程序时,我们只需要把蛇尾那个点阵的坐标传给蛇头下一个点阵的坐标,然后再改变蛇尾的值就可以了。而蛇头的下一个位置是根据蛇头和偏移量来决定的,每次四个方向按键决定了蛇运动的偏移量,将蛇头的位置加上偏移量的值就能够得到新的蛇头地位置。当蛇头碰到周围的屏幕边框或者碰到自己的身体时,就表示蛇死了,并且游戏就此结束。其中游戏暂停的处理是通过关闭定时器2实现的[11-13]。4.6食物的随机出现我们需要保证食物的出现是随机的,此时就需要调用一个随机函数,而且还要保证食物出现的位与蛇的位置不同,即不能重叠,也不能超出点阵屏外,不然就需要重新确定食物的位置。在这里,我们采用程序中的定时计数器中的低八位TL0的数值,因为TL0在不断地变化,所以在不同的时间点所产生的数值也不同,在这里使用C++语言中的stdlib.h文件库,调用里面的随机函数srand(),先用srand(TL0)获得TL0的数值,再用rand()%8两次,分别得到食物出现时的横坐标和纵坐标。5联调与测试5.1软件调试基于单片机的贪吃蛇设计全文共23页,当前为第12页。使用uVision3作为该程序的软件编译器。在打开uVision3来编写此程序时,由于uVision3通常只能改正语法上的错误,不好检查算法上的问题,直接下到单片机里又会受到电路板的限制使得调试不方便,因此这里使用Proteus进行电路仿真。在实际操作时,我们可以先用Proteus软件,在上面画出硬件电路,当设计完电路后就可以进行下一步地仿真。先用鼠标双击单片机,再把用uVision3软件编译产生的.HEX文件设定为下载文件,点击左下方的PLAY键就可以开始进行仿真了,按上下左右几个方向键就可以完全控制蛇的运动方向,注意蛇的运动状态,保证其不碰触蛇身还有点阵屏即可。当仿真出现ANALYSERERRORS时,就表示此时的电路有错误,下面的列表中详细说明了是哪有错误,然后根据提示进行排错,接着再进行仿真。当仿真完成后,就标志着这次设计已经做的差不多了,大体框架已经形成了。本设计仿真效果如图2所示。基于单片机的贪吃蛇设计全文共23页,当前为第12页。 如图2仿真图在Proteus软件画出原理图后,将已编译好的源代码文件调入,可此时我们可以在原理图中看到实物的模拟运行状态和过程。通过实验我们可以得出,在使用Proteus进行仿真成功后再进行动手操作,可以大大地提高设计单片机系统的效率。Proteus支持单片机汇编语言的编辑/编译/源码级仿真,内带AVR、PIC的汇编编译器,也可以与第三方集成编译环境(如IAR、Keil和Hitech)结合,进行高级语言的源代码级仿真和调试[14]。因此,Proteus有较高的推广利用价值[15]。5.2硬件调试基于单片机的贪吃蛇设计全文共23页,当前为第13页。软件调试和Proteus仿真完成后,就可以对硬件进行安装。该设计依据原先设计好的电路原理图进行总体上的布置,也可以再画出其PCB图,然后用人工搭电路的方法来安装硬件电路。电路安装时,要考虑受热、元件大小等多方面的影响,在使用电烙铁时,应掌握好焊接的时间,电烙铁停留的时间太短,焊锡不易完全熔化,形成“虚焊”,而焊接时间太长又容易损坏元器件,每一两秒内要焊好一个焊点,若没完成,宁愿等一会儿再焊一次。其次芯片的摆置要方便连线,焊接时要先把芯片拔出,等线接好了再插上去。在焊接时要考虑电路的抗干扰能力同时要充分考虑电源对单片机的影响。每焊接完一个模块,要用万能表根据电路图检查有没有接错、短路等现象,确认正确后再继续下一个模块[16]。基于单片机的贪吃蛇设计全文共23页,当前为第13页。本实验采用USB接口供电,通过USB,能够使单片机更加稳定,在正常的工作范围内使得其能够更好的工作。实物图如下图3所示: 图3贪吃蛇实物图基于单片机的贪吃蛇设计全文共23页,当前为第14页。

基于单片机的贪吃蛇设计全文共23页,当前为第14页。 贪吃蛇实物图基于单片机的贪吃蛇设计全文共23页,当前为第15页。

基于单片机的贪吃蛇设计全文共23页,当前为第15页。结论与展望本次设计是基于51单片机的贪吃蛇游戏,可以挖掘出单片机的性能,使其得到充分的发挥,而且此次设计还能体现出嵌入式系统节能、功耗低、便携性好的特点,使人们的日常生活变得更加轻松快乐,使身心得到了解放。本论文按照设计完成了以下工作:根据实际要求,对系统的硬件电路进行设计。以AT89C51作为其控制核心,扩展外围电路,加入8*8LED点阵模块,还有按键模块等构成此款游戏的硬件系统。这款小游戏是所有小游戏中较为简单的一个,可是我却花了较长的时间,直到动手时才后悔上课时没有认真听老师讲解,尤其是结构体,还有指针的部分,脑子里完全没有印象,算是一片空白,还好经过这段时间的努力,总体来说,把相关的一些知识大概看了一遍,也基本都掌握了相关的知识,接着就开始编程,说实在的,编程真的是一件很枯燥无味的事,但是为了这次设计,还是不得不坚持,根据老师所介绍的模块化思想,分步来编写。而编程又是一件高精度、高模范化的事,对我来说,这简直就是锻炼我的意志,稍微有点疏忽都可能会影响到整个编程,整个牵一发而动全身,在这个时候认真、仔细就显得十分重要了。刚开始编程的时候,一般都会觉得编程十分无聊,但是当程序运行成功时,心底所产生的那种满足感和喜悦是用语言完全不能表达出来的,直接是无法比拟的。通过这次设计,充分让我认识到学习应该要更加着重实践,不能只是懂得理论,要懂得制定计划,然后想办法去实现计划,最后要及时地克服心理上的不良情绪,保持乐观积极的态度去完成自己的任务。基于单片机的贪吃蛇设计全文共23页,当前为第16页。

基于单片机的贪吃蛇设计全文共23页,当前为第16页。附录A:系统原理图基于单片机的贪吃蛇设计全文共23页,当前为第17页。

基于单片机的贪吃蛇设计全文共23页,当前为第17页。附录B:系统PCB图基于单片机的贪吃蛇设计全文共23页,当前为第18页。

附录C:系统仿真图基于单片机的贪吃蛇设计全文共23页,当前为第18页。基于单片机的贪吃蛇设计全文共23页,当前为第19页。

附录D:系统实物图基于单片机的贪吃蛇设计全文共23页,当前为第19页。基于单片机的贪吃蛇设计全文共23页,当前为第20页。基于单片机的贪吃蛇设计全文共23页,当前为第20页。附录E:系统源程序#include<reg51.h>#defineucharunsignedchar#defineSNAKE20//最大长度#defineTIME50//显示延时时间#defineSPEED40//速度控制//#definekeyenable1sbitkeyenable=P3^6; //方向使能/*sbitkeyx=P0^1; //左右sbitkeyy=P0^2; //上下 *///sbitup=P0^0;sbitup=P3^1;//downsbitdown=P3^3;sbitright=P3^4;sbitleft=P3^2;ucharx[SNAKE+1];uchary[SNAKE+1];uchartime,n,i,e;//延时时间,当前蛇长,通用循环变量,当前速度 charaddx,addy;//位移偏移量/********************延时程序*********************/voiddelay(charMS){charus,usn;while(MS!=0){usn=0;while(usn!=0){us=0xff;while(us!=0){us--;};usn--;}MS--;}}/*******************************************判断碰撞*******************************************/bitknock(){bitk;k=0;if(x[1]>7||y[1]>7)k=1;//撞墙for(i=2;i<n;i++)if((x[1]==x[i])&(y[1]==y[i]))k=1;//撞自己returnk;}/*****************上下左右键位处理*****************/voidturnkey()//interrupt0using2{//up=1;基于单片机的贪吃蛇设计全文共23页,当前为第21页。if(keyenable)基于单片机的贪吃蛇设计全文共23页,当前为第21页。{if(left){addy=0;if(addx!=1)addx=-1;elseaddx=1;}if(right){addy=0;if(addx!=-1)addx=1;elseaddx=-1;}if(up){addx=0;if(addy!=-1)addy=1;elseaddy=-1;}if(down){addx=0;if(addy!=1)addy=-1;elseaddy=1;}/*if(keyy){addy=0;//左右if(keyx)if(addx==-1)addx=-1;elseaddx=1;//左elseif(addx==1)addx=1;elseaddx=-1;//右}else{addx=0;//上下if(keyx)if(addy==1)addy=1;elseaddy=-1;//下elseif(addy==-1)addy=-1;elseaddy=1;//上 }*/}}/*****************乘方程序*****************/ucharmux(uchartemp){if(temp==7)return128;if(temp==6)return64;if(temp==5)return32;if(temp==4)return16;if(temp==3)return8;if(temp==2)return4;if(temp==1)retu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论