基于单片机的贪吃蛇游戏设计.doc
基于单片机的贪吃蛇游戏设计学生:学生学号:院系: 电气信息工程学院 年级专业:指导教师:学习文档 仅供参考二一五年五月摘 要在21世纪的今天,人们的生活开始变得更加丰富多彩。在繁忙的工作之余,娱乐成为人们生活不可或缺的一份子,而游戏作为近年来逐渐兴起的一种娱乐方式,已经越来越受到人们的青睐。在工作学习之余,通过玩游戏来放松、调节紧张的学习工作压力是不错的选择;然而大型的网络游戏玩起来比较消耗时间,且不能随时随地的玩。那么如果这时候拥有一款简单易携带,并且能够缓解压力的小游戏将是个不错的选择,所以,我就设计了这样一款简单易携带的经典小游戏贪吃蛇。具体实现上,硬件系统平台采用STC89C52R单片机,搭载LCD12864显示屏,构成一个轻巧简单的游戏机系统。软件系统采用C语言编程,Protues软件设计电路并仿真,KEIL软件进行程序的调试。最终实现贪吃蛇游戏系统。本次设计的贪吃蛇游戏,实现了传统意义上的贪吃蛇游戏的特点:蛇吃掉豆子后,得分增加并且蛇身变长;分数到达一定数目进行升级以后,蛇运动速度加快。而玩家只需利用方向按钮“上、下、左、右”来改变蛇的运行方向,就能到达娱乐的目的,操作非常简单 。关键词:贪吃蛇游戏,STC89C52R单片机,LCD12864,C语言 学习文档 仅供参考学习文档 仅供参考ABSTRACTIn the 21st century today, people's life become more colorful, In the outside of busy work, entertainment become an integral part of people's life, And the game as emerging in recent years, a kind of entertainment, already more and more get the popular of people, In the outside of work and study, through the play games to relax, adjust the pressure of learning is a good choice; However large network game play more time-consuming, And can't play anywhere, anytime. So if this time has a simple is easy to carry, and can ease the pressure of small game will be a good choice. So, I would design such a simple and easy to carry small classic game the snake game.On the concrete implementation, with STC89C52RCSingle chip microcomputer system platform, with a LCD display, constitute a lightweight simple game system. Software use C language programming, use Protues software Circuit design and simulation, KEIL Software program debugging, Finally realizes the snake gamesystem. The design of the snake game, Achieved in the traditional sense of the snake game features: after the snake to eat beans, scores and snake-body variable length; Score to reach a certain number after the upgrade, the snake's movement speed. Players need to use the direction key ",up, down, left, right , to change the running direction of snake, and can achieve the purpose of entertainment ,the operation is very simple.显示对应的拉丁字符的拼音朗读显示对应的拉丁字符的拼音 字典 - 查看字典详细内容1. 名词 1. summary2. abstract朗读显示对应的拉丁字符的拼音Key words:Greedy Snake Game, STC89C52RCSingle chip microcomputer, LCD12864,C language学习文档 仅供参考目 录摘 要IIABSTRACT11绪 论2本课题研究的背景及意义21.2 国内外研究现状、水平21.3 本课题的发展趋势1本课题的研究内容和到达的要求12 方案分析与选择22.1 系统方案设计2显示器模块设计方案22.3 按键输入模块设计方案32.4 本课题的技术指标32.5 本课题的创新33 系统硬件设计4单片机的选择与其性能分析43.1.1 单片机概述43.1.2 单片机STC89C52RC的介绍43.1.3 单片机最小系统的介绍53.2 LCD12864简介63.2.1 LCD12864概述63.2.2 LCD128*64的基本特性63.2.3 模块接口说明73.2.4 指令说明93.3 键盘电路的设计113.4 蜂鸣器电路的设计11蜂鸣器简介113.4.2 蜂鸣器的设计124 软件系统设计134.1 游戏设计思想134.2 主要模块介绍及其功能144.3 编程语言介绍154.3.1 C语言简介154.3.2 C源程序结构特点154.4 程序设计流程图165 仿真设计与结果分析175.1 仿真软件的简介175.1.1 仿真软件Proteus的简介175.1.2 keiluVision4编程开发工具的简介17本系统的Proteus仿真设计2仿真设计的预期目标26 PCB设计26.1 PCB设计软件26.1.1 PCB原理图设计26.1.2 PCB板制作方法26.2 PCB的EMC设计16.2.1 元器件布局的基本原则16.2.2 布线设计原则16.3 印制电路板16.3.1 印制电路板的结构16.3.2 印制电路板的种类16.3.3 印制电路板制作流程17 系统调试27.1 硬件调试27.2 软件调试27.3 硬件软件联合调试27.4 调试结果2结 论3参 考 文 献4附录一:系统PCB原理图5附录二:系统仿真图2附录三: PCB图2附录四: 程序主函数1附录五: 原器件清单2致 谢3学习文档 仅供参考学习文档 仅供参考1绪 论1.1本课题研究的背景及意义随着当今社会的发展,人们的生活节奏变得越来越快,人们开始逐渐的融入全球化的世界。人们已经不再局限于一小块天地,加班,出差已经占据了现代人生活的绝大部分。这个时候,一款简单易携带、随时随地都可以玩耍的小游戏似乎成了生活必需品,无论是上下班途中,还是闲暇的工作之余,像贪吃蛇这样的小游戏都是不错的放松选择。贪吃蛇作为一款经典的小游戏,相信绝大部分的人都玩过。因为这款游戏牢牢地抓住了大部分人的心理,虽然简单,但趣味无穷,该游戏既能让人们体会玩游戏的快感,也能满足人们强烈的满足感,对于现代高工作量,高压力的白领一族是一种很好放松的一款游戏。 现代科技飞速发展,使得各大电子产品开始融入人们的生活,而微电子技术、电脑软件与应用技术的发展,加快了电子产品的发展更新速度,使得人们的日常生活变得更加丰富多彩。而单片机作为电子产品的核心部件,以其独特的构造,优良的稳定性,廉价的价格在嵌入式领域广泛运用。与以往 上的贪吃蛇游戏不同的是:本次设计,采用单片机作为基础,LCD12864液晶显示屏作为显示器,和扬声器、按键一起搭建硬件平台,再运用C语言编写程序,实现整个贪吃蛇游戏。1.2 国内外研究现状、水平在国内,我国在1986年开始对单片机就行研究、发展。此后,单片机越来越吸引人们的关注,随着1987年10月我国正式成立了国内第一个全国性单片机学会,频繁的全国性单片机学术交流会与展示会吸引了更多的人员加入单片机开发应用的行列。我国单片机的应用也开始真正的起步了。随着单片机在我国应用的深入,单片机的普及也得到了广泛的开展,出版了各类单片机书刊。全国各地的单片机培训基地如雨后的春笋一般地涌出,各地也逐渐成立了当地的单片机分会。到了1995年,已有北京、上海、深圳、江苏和天津等20多个省、市相继建立了单片机研究分会,单片机的应用技术也日趋成熟,改变了以前应用单片机一味地追求总线外接存储器与I/O的方式这种方式虽然使用起来比较方便,但并没有真正地发挥出单片机的“单片”特点,开始逐步接受了单片机应该姓“单”的思维模式。尤其从1991年在天津就单片机召开全国学术交流会之后,国内也逐步适应潮流,开始推广国际上流行的单片机如摩托罗拉,NEC和飞利浦公司单片机的应用,从而改变了Intel公司单片机一手遮天的局面。这也学习文档 仅供参考说明了我国的单片机应用真正得走上了正规。学习文档 仅供参考至今单片机在我国已经走过了19个年头,虽然时间不算长,但发展是很快的。从对单片机一无所知,到能独立设计、自行生产和批量应用,这是一个巨大的飞跃。而在国外,Motorola是世界上最大的单片机厂商,品种全,选择余地大,新产品多,在8位机方面有68HC05和升级产品68HC08,68HC05有30多个系列200多个品种,产量超过20亿片,8位增强型的单片机68HC11也有30多个类型,年产量在1亿片以上,升级的单片机产品有68HC12,16位单片机68HC16也拥有十多个品种.32的位单片机683xx系列也有几十个品种.近年来以PowerPC, Cod fire, M.CORE等作为 CPU,用 DSP 作为辅助模块集成的单片机也纷纷推出,目前仍是单片机的首选品牌Motorola单片机特点之一是在同样的速度下所用的时钟较Intel 类单片机低的多因而使得高频噪声低,抗干扰能力强,更适合用于工控领域以及恶劣环境.Motorola 8 位单片机过去策略是掩膜为主,最近推出OTP计划以适应单片机的发展,在32位机上,M.CORE在性能和功耗上都胜过 ARM7。1.3 本课题的发展趋势虽然目前市面上拥有各式各样的游戏,但是作为比较经典的一块游戏,贪吃蛇的市场价值还是相当大的。原因在于它虽然简单,但是很具有诱惑力,能够让人爱不释手。随着的进行,游戏的速度也在不断加快,能够给人越来越刺激的感受。另外,这款游戏适合的人群范围非常广,大到70、80岁的老人,小到几岁的小孩都可以玩。这款游戏的优势在于它简单易携带,操作性强,无论是 ,还是小的游戏机,都能够很顺利的运行。而对于经常在外忙碌的人来说,花费大量时间在游戏、娱乐上几乎是不可能的,大型游戏对他们是行不通的,那么像贪吃蛇这样简单易行的小游戏恰好符合他们的需求。和到达的要求本次设计主要研究的内容是通过按键输入信息到控制器单片机,再由单片机控制后面的电路,从而使显示屏显示我们需要显示的游戏界面。需要到达的设计要求是:改变贪吃蛇运动方向的设计;贪吃蛇吃到食物后,自身的变化设计;食物随机产生设计;游戏成绩的记录设计。学习文档 仅供参考2 方案分析与选择2.1 系统方案设计根据系统设计的任务和要求,设计框图如图2.1所示,图中控制器AT89C52位整个系统的核心部件,输入模块和显示模块用来实现人机交互的功能,其中,通过键盘输入将需要设置的参数和状态输入到单片机中,并且通过控制器显示到显示器上。主要硬件包括STC89C52RC单片机、时钟电路、复位电路、键盘、LCD12864液晶显示屏、蜂鸣器。图2.1 系统设计框图由于本次设计的是贪吃蛇小游戏,所以必须要将游戏界面呈现出来,那么,具体使用那种显示器呢?以下给出了三种方案:方案一:使用七段数码管LED显示。虽然数码管具有亮度高、工作电压低、易于集成、驱动简单、耐冲击且性能稳定等特点,并且它可采用BCD编码显示数字,编程容易,硬件电路调试简单,但是用于显示,太消耗系统性能,而且不能显示文字等更多的提示信息,所以不宜选用。方案二:使用LCD1602:通过电压对其显示区域进行控制,通电就会显示,比较方便,LCD1602具有显示质量高、数字式接口、体积小、重量轻、成本低、功耗低等优点,但通常用于显示字母和数字,不能显示游戏界面,故不采纳。方案三:使用LCD12864:相比起LCD1602来说,LCD12864功能更加强大,带有汉字库,可以显示汉字和图形,而且屏幕分辨率较高,用于游戏界面显示比较好。综上三种方案,在本次系统中,我们采用LCD12864液晶显示屏。学习文档 仅供参考2.3 按键输入模块设计方案在系统中,我们需要通过按键来实现改变贪吃蛇的运动方向,以及菜单项的选择。那么,键盘就是整个系统中不可缺少的一部分。具体有以下两种方案以供选择:方案一:矩阵式键盘,这种键盘I/O口利用率高,但电路连接复杂,软件编学习文档 仅供参考程也比较复杂,适用于需要大量使用案件的系统。方案二:独立式键盘,这种键盘每个按键之间是相互独立的,每个按键占用一条I/O线,当按键数量较多时,I/O口利用率不高,但程序编写简单,适用于所需按键较少的场合。根据以上两种方案的描述,再结合我们的系统设计,显而易见,我们需要独立式键盘,所以,这里我们选择方案一。学习文档 仅供参考2.4 本课题的技术指标电源电压 缓冲时间 2.5 本课题的创新本次设计采用51单片机作为控制器,在传统贪吃蛇游戏的基础上,采用LCD12864作为游戏显示界面,不仅能实现贪吃蛇游戏的接本操作,而且操作空间更大,可行性更高。3 系统硬件设计3.1.1 单片机概述单片机是一种集成电路芯片,它是一种把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能集成到一块硅片上构成的一个小而完善的电脑系统。单片机也称为单片微型电脑Single Chip Microcomputer。为了方便使用,它把组成电脑的一些主要功能部件:中央处理器CPU、数据存储器RAM、程序存储器ROM、EPROM、E2PROM或FLASH、定时/计数器和各种输入/输出接口电路等都集成在一块半导体芯片上,构成了一个完整的电脑系统。与通用的电脑不同,单片机的指令功能是按照工业控制的要求设计,因此它又被称为微控制器Microcontroller。3.1.2 单片机STC89C52RC的介绍STC89C52RC是由STC公司生产的新一代的高速度、抗干扰强、低功耗的单片机,它能够完全兼容传统的51单片机且其容量更大,价格更加低廉,所以在实际应用中常常使用。其工作频率一般在0-40MHz之内,相当于一般51单片机的0-80MHz,但实际的工作频率可到达48MHz左右,用户的应用程序空间在8K字节,片上集成512字节RAM,同时该单片机无需专用的编程器和仿真器,可通过串口直接下载用户程序。STC89C52RC单片机的工作模式如下:正常工作模式:典型功耗为4mA-7mA;空闲模式:典型功耗为2mA。STC89C52RC单片机各管脚分配图如图3.1所示。 图3.1 STC89C52RC管脚图学习文档 仅供参考学习文档 仅供参考各引脚功能简单介绍如下:1.VCC:供电电压;2.GND:接地;3.P0口:P0口为一个8位漏级开路双向I/O口。作为输出端口,每个管脚可驱动8个TTL负载,对P0口写“1”时,可以作为高阻抗输入。4.P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口的输出缓冲器能驱动输出或者吸收电流方式4个TTL输入。5.P2口:P2口为一个内部提供上拉电阻的8位双向I/O口,P2口的输出缓冲器可驱动输出或者吸收电流方式4个TTL输入,当P2口写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入口。作为输入口使用时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。6.P3口:P3口是一个带内部上拉电阻的8为双向I/O端口,其输出缓冲器可驱动输出或者吸收电流方式4个TTL输入。7.RST:复位输入。当输入两个连续机器周期以上高电平时为有效,用来完成单片机的复位初始化操作。8.ALE / PROG :当访问外部存储器时,地址锁存允许的输出电平用于锁存低8位地址的输出脉冲。9.PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在访问内部数据存储器时,这两次有效的PSEN信号将不会出现;10.EA/VPP:当EA保持低电平时,访问外部ROM;加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP);11.XTAL1:内部时钟工作电路和反向振荡放大器的输入端;12.XTAL2:反向振荡器的输入端。3.1.3 单片机最小系统的介绍单片机最小系统,或者称为单片机的最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路和复位电路。复位电路:单片机中的复位电路就好似是电脑的重启部分,当电脑在使用过程中出现死机时,按下电脑的重启按钮即可恢复。单片机在使用中也一样,当单片机系统在运行过程中受到环境干扰出现程序出错的时候,按下复位按钮即可使内部的程序自动从头开始执行。晶振电路:51单片机最小系统晶振的振荡频率直接影响单片机的处理速度,频率越大处理速度越快。在51单片机中,晶振输学习文档 仅供参考出的脉冲周期为脉冲周期,12个脉冲周期为机器周期,单片机工作时间的最小值即为该单片机的机器周期。单片机的最小系统如图3.2所示。图3.2 单片机最小系统的电路图3.2 LCD12864简介3.2.1 LCD12864概述 带中文字库的128*64是一种具有2线与3线串行以及4位/8位并行等多种接口方式,其内部包含有国家标准一级和二级简体的中文字库的点阵的图形液晶显示模块;其屏幕分辨率是128*64, 内含16*16点汉字8192个,和16*8点ASCII码字符集128个。利用该模块较为灵活的接口方式与简单并且方便的操作指令,可以构建全中文的人机交互图形的界面。此界面可以显示8*4行16*16点阵的汉字,也可以完成图形的显示,低电压且低功耗是它的又一独特的特点。由此模块组成的液晶显示器(LCD)的模块方案,无论硬件电路结构或显示程序都要比同种类型的点阵图形液晶显示模块简洁得多,并且这个模块的价格也均低于同种类型的点阵图形液晶模块。学习文档 仅供参考3.2.2 LCD128*64的基本特性学习文档 仅供参考+5.5V学习文档 仅供参考2屏幕分辨率:128*64点 学习文档 仅供参考3内置8192个16*16点阵汉字的字库(繁简体可任选) 学习文档 仅供参考4内置16*8点阵字符128个52MHZ时钟频率 6显示方式:半透、STN、正显 7驱动方式:1/5BIAS ,1/32DUTY 8视角方向:6点9背光方式:侧部为高亮白色LED,功耗仅仅为普通LED的1/51/10 10通讯方式:并口、串行可任选 11内置DC-DC转换电路,不需要外加负压 12不需要片选信号,简化软件的设计13储存温度: -20 +60, 工作温度: 0 +553.2.3 模块接口说明学习文档 仅供参考学习文档 仅供参考表3.3.1 模块接口管脚号管脚名称电平管脚功能的描述1VSS0V电源地2VCC3.0+5V电源电压3V0-比照度调整4RS(CSH/LRS=“H”, DB7DB0表示显示数据RS=“L”, DB7DB0表示显示指令数据5R/W(SID)H/LR/W=“H”,E=“H”,DDRAM数据读取到DB7DB0R/W=“L”,E=“HL”, DB7DB0的数据将会被写入IR或DR6E(SCLK)H/L使能信号7DB0H/L数据线8DB1H/L数据线9DB2H/L数据线10DB3H/L数据线11DB4H/L数据线12DB5H/L数据线13DB6H/L数据线14DB7H/L数据线15PSBH/L H:4位/8位并口方式,L:串口方式见注释116NC-空脚17/RESETH/L复位端,低电平有效见注释218VOUT-LCD负电压驱动19AVDD背光源正端+5V见注释320KVSS背光源负端见注释3学习文档 仅供参考*注释1:假设在实用中只使用串口通讯的模式,可将PSB接通固定低电平,也可以把模块中的 “GND”和J8用焊锡焊接。*注释2:模块的内部接有上电复位电路,因此可以把该端悬空在不用经常性复位的地方。*注释3:如果背光与模块共用同一个电源的话,可以将模块上的JK、JA用焊锡短接起来。控制器接口信号的说明:学习文档 仅供参考表3.3.2 RS,R/W的选择配合确定控制界面的4种模式RSR/W功能说明LLMPU写指令进入指令暂存器IRLH读出忙标志BF及地址记数器AC的状态HLMPU写入数据进入数据暂存器DRHHMPU从数据暂存器DR中读取数据表3.3.3 E信号E状态执行动作结果高>低I/O缓冲>DR配合/W进行写指令与数据高DR>I/O缓冲配合R进行读指令与数据低/低>高无动作 忙标志:BF BF标志提供内部的工作情况.BF=1表示模块正在进行内部的操作,此刻模块不接收外部数据和指令.当BF=0时,模块此刻为准备状态, 可随时接收外部数据和指令.使用STATUS RD 指令,能够将BF读到DB7总线,从而测试模块的工作状态. 字型产生ROMCGROM 字型产生ROMCGROM提供8192个该触发器,可以对模块屏幕开关显示进行控制。当DFF=1时为开显示DISPLAY ON),此时DDRAM 的内容将显示在屏幕上,当DFF=0时为关显示DISPLAY OFF)。此时DFF 的状态是由RST信号和指令DISPLAY ON/OFF来控制的。学习文档 仅供参考 显示数据RAMDDRAM模块的内部会显示数据RAM提供64*2个位元组的空间,最多可以控制4行16字64个字的中文字符显示,当写入显示数据RAM时,能够分别显示CGROM和CGRAM的字型;该模块能够显示三种字型,分别是半角英数字型(16*8)、CGRAM字型以及CGROM的中文字型,根据在DDRAM中写入的编码选择这三种字型,在0000H0006H的编码中其代码分别为0000、0002、0004、0006,总共4个将会选择CGRAM的自定义字型,在02H7FH的编码中将选择半角英数字字型,而A1以上的编码将会自动的结合下一个位元组,组成两个位元组的编码而形成中文字型的编码BIG5A140D75F,GBA1A0-F7FFH。学习文档 仅供参考 字型产生RAM(CGRAM) 字型产生RAM能提供图象定义(造字)的功能, 可以提供4组16*6点的自定义的图象空间,用户可以将内部没有提供的图象字型自行定义到CGRAM中,便可以和CGROM中的定义一样地通过DDRAM显示在屏幕上。学习文档 仅供参考 地址计数器AC 地址计数器是用来储存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址计数器的值就会自动加一,当RS为“0”时而R/W为“1”时,地址计数器的值会被读取到DB6DB0中。光标/闪烁电路 此模块提供硬体光标以及闪烁控制电路,由地址计数器AC的值来决定DDRAM中的光标和闪烁位置。3.2.4 指令说明模块控制芯片提供两种控制命令,基本指令与扩充指令,具体如下:学习文档 仅供参考表3.4.1 指令表1:RE=0:基本指令指令指 令 码功 能RSR/WD7D6D5D4D3D2D1D0 清除显示0000000001将DDRAM装满"20H",而且设置DDRAM的地址计数器(AC)为"00H"地址归位000000001X设定DDRAM的地址计数器(AC)为"00H",然后将游标换到开始原点的位置;此指令不影响DDRAM 的内容显示状态开/关0000001DCBD=1: 整体显示 ON C=1: 游标ON B=1:游标位置允许反白进入点设定00000001I/DS指定当数据在读取或写入的时候,设置游标运动的方向和指定显示的运动游标或显示移位控制000001S/CR/LXX设定游标的运动和显示的移位的控制位;此指令不影响DDRAM 的内容功能设定00001DLXREXXDL=0/1:4/8位数据RE=1: 扩展指令操作RE=0: 基本指令操作设定CGRAM地址0001AC5AC4AC3AC2AC1AC0设置CGRAM 地址设定DDRAM地址0010AC5AC4AC3AC2AC1AC0设置DDRAM 地址地址显示第一行:80H87H第二行:90H97H读取忙标志和地址01BFAC6AC5AC4AC3AC2AC1AC0读取忙标志(BF)用来判断内部工作完成与否,并且也可以读取地址计数器(AC)的值写数据到RAM10数据将数据D7D0写入内部的RAM (DDRAM/CGRAM/IRAM/GRAM)读出RAM的值11数据从内部RAM读取数据D7D0(DDRAM/CGRAM/IRAM/GRAM)学习文档 仅供参考表3.4.2 指令表2:RE=1:扩充指令指 令指 令 码功 能RSR/WD7D6D5D4D3D2D1D0等待模式0000000001 进入等待模式,执行其他指令都可停止等待模式卷动地址开关开启000000001SRSR=1:允许输入垂直卷动地址SR=0:允许输入IRAM和CGRAM地址反白选择00000001R1R0 选择2行中的其中一行作位反白显示,并且可以确定反白与否。 初始值R1R0 00,首次设置为反白显示,假设再次设置就返回正常显示睡眠模式0000001SLXXSL=0:开始睡眠模式SL=1:终止睡眠模式扩充功能设定00001CLXREG0CL=0/1:4/8位数据G=1/0:绘图开/关RE=1: 扩展指令操作RE=0: 基本指令操作设定绘图RAM地址0010AC60AC50AC4AC3AC3AC2AC2AC1AC1AC0AC0设定绘图RAM先设定垂直地址AC6AC5AC0再设定水平地址AC3AC2AC1AC0将以上16位地址连续写入就行学习文档 仅供参考备注:当IC1在接受一个指令前,微处理器必须要先确认其内部是否处在忙碌状态,即读取BF标志时,BF需为零,才能接受下一个指令;如果在输出指令前不测试BF标志,那么在前一个指与当前指令中间就必须增加一段比较长的时间,也就是等待前一个指令完全执行完成。学习文档 仅供参考3.3 键盘电路的设计针对此次设计的要求而言,共采用七个按键,其中一个是电源按键,另外六个是游戏控制按键,按键功能名称有“上、下、左、右、确认、退出”,玩家可以通过“上、下、左、右”按键实现游戏中蛇运动方向的控制;通过“确认、退出”按键实现进入游戏、退出游戏、游戏记录查看,其与单片机的连接电路如图3.4所示:学习文档 仅供参考图3.4 键盘电路与单片机引脚的连接电路图3.4 蜂鸣器电路的设计蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于电脑、打印机、复印机、报警器、电子玩具、汽车电子设备、 机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母H或者HA表示。本设计使用蜂鸣器进行报警,当控制设备出现故障或其他原因使水塔水位超过设定的水位正常范围时,蜂鸣器会发出警报声,以提醒用户。在一些控制系统中,为了使生产安全,对于许多系统部位或重要的参数,都会设置紧急状态报警系统,用来提醒工作人员采取紧急措施。其方法是将电脑采集到的数据或通过电脑进行数据处理、数据分析后,与该参数预先设定的上下限值进行比较,如果低于下限值或高于上限值则进行报警,否则即为采样正常值,并进行显示和后续控制。3.4.2 蜂鸣器的设计本设计中,当蛇的运动方向发生改变、蛇吃到豆子、蛇撞到自己或者墙,蜂鸣器都会发出声音来提示玩家,蜂鸣器电路连接图如图3.5所示。图3.5 蜂鸣器连接电路图学习文档 仅供参考学习文档 仅供参考4 软件系统设计系统中的应用软件是依据系统功能的需求设计的。软件的功能可以分为两类,一类是执行软件,它可以完成各种实质性的功能,如测量、计算、显示、打印、输出控制等;另一类是监控软件,它是专门用于协调各执行模块和操作者之间的关系,在系统软件中充当组织调度一角。单片机软件设计通常要考虑以下问题:1.根据软件功能的要求,将系统软件划分为假设干个相当独立的部分。设计出使软件开发明确、简洁和流程合理的整体结构。2.每个函数程序执行模块和子程序。方便调试、连接,便于移植和修改。3.在编写应用软件之前,应先绘制出程序的流程图。4.要合理分配系统资源。4.1 游戏设计思想按照需求分析,游戏设计要解决的关键是显示界面和蛇的身体运动的处理的问题。游戏使用LCD液晶显示屏显示游戏界面。LCDl28*64分左右两列显示游戏信息,左边一列显示游戏操作界面;右边一列显示游戏得分和等级情况。LCDl28*64以4x4大小作为一个单元点阵,定义贪吃蛇的每一节蛇身的大小作为一个单元点阵,豆子与一节蛇身的大小是一样的,同样是一个单元点阵。LCDl28*64相应界面显示所有类型的游戏状态,所以可以定义数组来储存各种接口位图数据。以及定义函数在LCDl28*64的某一个坐标位置再增加一个单元点阵或者删除一个单元点阵的运算,那么通过调用此函数增加蛇头,消除蛇尾,实现蛇在游戏界面上运动。在蛇的运动过程中,主要需要解决以下几个方面的问题:1.运动的处理。根据玩家操作按键的值对蛇身进行柔体传动。那么,什么是柔体传动呢?柔体传动就是贪吃蛇在运动的时候并非是整个蛇身朝着同一个方向前进的,而是在每一个时间点到来的时候,每个单位点阵的方向在蛇头的带动下向下一个单位点阵传播,然后向新的这个方向前进一步。运动后,下一个单位点阵就按照上一个单位点阵的方向同样地向前运动一步。所以,它将立即填补上一个单位点阵的位置,以此类推。实际上在贪吃蛇设计的时候,只需要去掉蛇尾的那个点阵,然后放一个点阵在蛇头的新方向上就可以了。所以定义一个函数用来更新坐标点,只需知道蛇头或蛇尾的坐标和运动方向,就可以调用这个函数来更新蛇头或蛇尾的坐标,同时调用相关的显示函数,实现蛇运动处理。学习文档 仅供参考蛇的头部的方向可以通过按键来捕获实时实现。而蛇尾方向的获得是更加困难的。为了减小所使用的处理器的负担,使用占用大量数据存储的方法,可用数学习文档 仅供参考组length80。蛇身运动时需要在此数组中存储每次蛇身移动一个单位点阵,学习文档 仅供参考蛇头运动的方向。再分别定义代表蛇头和蛇尾的两个变量,每次记录蛇头的运动方向后,表示蛇头的变量自动加一,这样在接下来的位置继续记录蛇头运动的方向;表示蛇尾的变量就指向该数组的起始位置,通过此变量来获取该数组中存储蛇尾运动的方向(由于存储在此数组中的蛇头运动的方向,伴随着蛇头的坐标的变化,存储在数组起始位置的方向就是蛇尾运动的方向),根据读取得到的蛇尾的移动方向就可以得到蛇尾的坐