基于单片机的贪吃蛇游戏设计.doc_第1页
基于单片机的贪吃蛇游戏设计.doc_第2页
基于单片机的贪吃蛇游戏设计.doc_第3页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

基于单片机的贪吃蛇游戏设计学生姓名:学生学号:院(系): 电气信息工程学院 年级专业:指导教师: 摘 要二一五年五月摘 要在21世纪的今天,人们的生活开始变得更加丰富多彩。在繁忙的工作之余,娱乐成为人们生活不可或缺的一份子,而游戏作为近年来逐渐兴起的一种娱乐方式,已经越来越受到人们的青睐。在工作学习之余,通过玩游戏来放松、调节紧张的学习工作压力是不错的选择;然而大型的网络游戏玩起来比较耗费时间,且不能随时随地的玩。那么如果这时候拥有一款简单易携带,并且能够缓解压力的小游戏将是个不错的选择,所以,我就设计了这样一款简单易携带的经典小游戏贪吃蛇。具体实现上,硬件系统平台采用STC89C52R单片机,搭载LCD12864显示屏,构成一个轻巧简单的游戏机系统。软件系统采用C语言编程,Protues软件设计电路并仿真,KEIL软件进行程序的调试。最终实现贪吃蛇游戏系统。本次设计的贪吃蛇游戏,实现了传统意义上的贪吃蛇游戏的特点:蛇吃掉豆子后,得分增加并且蛇身变长;分数到达一定数目进行升级以后,蛇运动速度加快。而玩家只需利用方向按钮“上、下、左、右”来改变蛇的运行方向,就能达到娱乐的目的,操作非常简单 。关键词:贪吃蛇游戏,STC89C52R单片机,LCD12864,C语言 攀枝花学院本科毕业设计(论文) 1 绪论 ABSTRACTABSTRACTIn the 21st century today, peoples life become more colorful, In the outside of busy work, entertainment become an integral part of peoples 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 cant 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 snakes 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绪 论21.1本课题研究的背景及意义21.2 国内外研究现状、水平21.3 本课题的发展趋势11.4本课题的研究内容和达到的要求12 方案分析与选择22.1 系统方案设计22.2显示器模块设计方案22.3 按键输入模块设计方案32.4 本课题的技术指标32.5 本课题的创新33 系统硬件设计43.1单片机的选择与其性能分析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 蜂鸣器电路的设计113.4.1蜂鸣器简介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编程开发工具的简介175.2本系统的Proteus仿真设计25.2.1仿真设计的预期目标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 绪 论3 1 绪 论1绪 论1.1本课题研究的背景及意义随着当今社会的发展,人们的生活节奏变得越来越快,人们开始逐渐的融入全球化的世界。人们已经不再局限于一小块天地,加班,出差已经占据了现代人生活的绝大部分。这个时候,一款简单易携带、随时随地都可以玩耍的小游戏似乎成了生活必需品,无论是上下班途中,还是闲暇的工作之余,像贪吃蛇这样的小游戏都是不错的放松选择。贪吃蛇作为一款经典的小游戏,相信绝大部分的人都玩过。因为这款游戏牢牢地抓住了大部分人的心理,虽然简单,但趣味无穷,该游戏既能让人们体会玩游戏的快感,也能满足人们强烈的满足感,对于现代高工作量,高压力的白领一族是一种很好放松的一款游戏。 现代科技飞速发展,使得各大电子产品开始融入人们的生活,而微电子技术、计算机软件与应用技术的发展,加快了电子产品的发展更新速度,使得人们的日常生活变得更加丰富多彩。而单片机作为电子产品的核心部件,以其独特的构造,优良的稳定性,便宜的价格在嵌入式领域广泛运用。与以往手机上的贪吃蛇游戏不同的是:本次设计,采用单片机作为基础,LCD12864液晶显示屏作为显示器,和扬声器、按键一起搭建硬件平台,再运用C语言编写程序,实现整个贪吃蛇游戏。1.2 国内外研究现状、水平在国内,我国在1986年开始对单片机就行研究、发展。此后,单片机越来越吸引人们的关注,随着1987年10月我国正式成立了国内第一个全国性单片机学会,频繁的全国性单片机学术交流会与展示会吸引了更多的人员加入单片机开发应用的行列。我国单片机的应用也开始真正的起步了。随着单片机在我国应用的深入,单片机的普及也得到了广泛的开展,出版了各类单片机书刊。全国各地的单片机培训基地如雨后的春笋一般地涌出,各地也逐渐成立了当地的单片机分会。到了1995年,已有北京、上海、深圳、江苏和天津等20多个省、市相继建立了单片机研究分会,单片机的应用技术也日趋成熟,改变了以前应用单片机一味地追求总线外接存储器与I/O的方式(这种方式虽然使用起来比较方便,但并没有真正地发挥出单片机的“单片”特点),开始逐步接受了单片机应该姓“单”的思维模式。尤其从1991年在天津就单片机召开全国学术交流会之后,国内也逐步适应潮流,开始推广国际上流行的单片机(如摩托罗拉,NEC和飞利浦公司单片机)的应用,从而改变了Intel公司单片机一手遮天的局面。这也1表明了我国的单片机应用真正得走上了正规。1至今单片机在我国已经走过了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岁的老人,小到几岁的小孩都可以玩。这款游戏的优势在于它简单易携带,操作性强,无论是手机,还是小的游戏机,都能够很顺利的运行。而对于经常在外忙碌的人来说,花费大量时间在游戏、娱乐上几乎是不可能的,大型游戏对他们是行不通的,那么像贪吃蛇这样简单易行的小游戏恰好符合他们的需求。1.4本课题的研究内容和达到的要求本次设计主要研究的内容是通过按键输入信息到控制器单片机,再由单片机控制后面的电路,从而使显示屏显示我们需要显示的游戏界面。需要达到的设计要求是:改变贪吃蛇运动方向的设计;贪吃蛇吃到食物后,自身的变化设计;食物随机产生设计;游戏成绩的记录设计。4 2 方案分析与选择2 方案分析与选择2.1 系统方案设计根据系统设计的任务和要求,设计框图如图2.1所示,图中控制器(AT89C52)位整个系统的核心部件,输入模块和显示模块用来实现人机交互的功能,其中,通过键盘输入将需要设置的参数和状态输入到单片机中,并且通过控制器显示到显示器上。主要硬件包括STC89C52RC单片机、时钟电路、复位电路、键盘、LCD12864液晶显示屏、蜂鸣器。图2.1 系统设计框图2.2显示器模块设计方案由于本次设计的是贪吃蛇小游戏,所以必须要将游戏界面呈现出来,那么,具体使用那种显示器呢?以下给出了三种方案:方案一:使用七段数码管(LED)显示。虽然数码管具有亮度高、工作电压低、易于集成、驱动简单、耐冲击且性能稳定等特点,并且它可采用BCD编码显示数字,编程容易,硬件电路调试简单,但是用于显示,太消耗系统性能,而且不能显示文字等更多的提示信息,所以不宜选用。方案二:使用LCD1602:通过电压对其显示区域进行控制,通电就会显示,比较方便,LCD1602具有显示质量高、数字式接口、体积小、重量轻、成本低、功耗低等优点,但通常用于显示字母和数字,不能显示游戏界面,故不采纳。方案三:使用LCD12864:相比起LCD1602来说,LCD12864功能更加强大,带有汉字库,可以显示汉字和图形,而且屏幕分辨率较高,用于游戏界面显示比较好。综上三种方案,在本次系统中,我们采用LCD12864液晶显示屏。 2 方案分析与选择2.3 按键输入模块设计方案在系统中,我们需要通过按键来实现改变贪吃蛇的运动方向,以及菜单项的选择。那么,键盘就是整个系统中不可缺少的一部分。具体有以下两种方案以供选择:方案一:矩阵式键盘,这种键盘I/O口利用率高,但电路连接复杂,软件编程也比较复杂,适用于需要大量使用案件的系统。方案二:独立式键盘,这种键盘每个按键之间是相互独立的,每个按键占用一条I/O线,当按键数量较多时,I/O口利用率不高,但程序编写简单,适用于所需按键较少的场合。根据以上两种方案的描述,再结合我们的系统设计,显而易见,我们需要独立式键盘,所以,这里我们选择方案一。7 3 系统硬件设计2.4 本课题的技术指标电源电压 5.0V缓冲时间 0.1s2.5 本课题的创新本次设计采用51单片机作为控制器,在传统贪吃蛇游戏的基础上,采用LCD12864作为游戏显示界面,不仅能实现贪吃蛇游戏的接本操作,而且操作空间更大,可行性更高。3 系统硬件设计3.1单片机的选择与其性能分析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管脚图 3 系统硬件设计各引脚功能简单介绍如下: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单片机中,晶振输 3 系统硬件设计出的脉冲周期为脉冲周期,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)的模块方案,无论硬件电路结构或显示程序都要比同种类型的点阵图形液晶显示模块简洁得多,并且这个模块的价格也均低于同种类型的点阵图形液晶模块。攀枝花学院本科毕业设计(论文) LCD12864原理3.2.2 LCD128*64的基本特性攀枝花学院本科毕业设计(论文) LCD12864原理(1)低电压(VDD:+3.0+5.5V)79 3 系统硬件设计(2)屏幕分辨率:128*64点 攀枝花学院本科毕业设计(论文) 3 系统硬件设计(3)内置8192个16*16点阵汉字的字库(繁简体可任选) (4)内置16*8点阵字符128个(5)2MHZ时钟频率 (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 模块接口说明87攀枝花学院本科毕业设计(论文) 3 系统硬件设计9 3 系统硬件设计表3.3.1 模块接口管脚号管脚名称电平管脚功能的描述1VSS0V电源地2VCC3.0+5V电源电压3V0-对比度调整4RS(CS)H/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:串口方式(见注释1)16NC-空脚17/RESETH/L复位端,低电平有效(见注释2)18VOUT-LCD负电压驱动19AVDD背光源正端(+5V)(见注释3)20KVSS背光源负端(见注释3)攀枝花学院本科毕业设计(论文) 3 系统硬件设计*注释1:若在实用中只使用串口通讯的模式,可将PSB接通固定低电平,也可以把模块中的 “GND”和J8用焊锡焊接。*注释2:模块的内部接有上电复位电路,因此可以把该端悬空在不用经常性复位的地方。*注释3:如果背光与模块共用同一个电源的话,可以将模块上的JK、JA用焊锡短接起来。控制器接口信号的说明: 3 系统硬件设计表3.3.2 RS,R/W的选择配合确定控制界面的4种模式RSR/W功能说明LLMPU写指令进入指令暂存器(IR)LH读出忙标志(BF)及地址记数器(AC)的状态HLMPU写入数据进入数据暂存器(DR)HHMPU从数据暂存器(DR)中读取数据表3.3.3 E信号E状态执行动作结果高低I/O缓冲DR配合/W进行写指令与数据高DRI/O缓冲配合R进行读指令与数据低/低高无动作 忙标志:BFBF标志提供内部的工作情况.BF=1表示模块正在进行内部的操作,此刻模块不接收外部数据和指令.当BF=0时,模块此刻为准备状态, 可随时接收外部数据和指令.使用STATUS RD 指令,能够将BF读到DB7总线,从而测试模块的工作状态. 字型产生ROM(CGROM) 字型产生ROM(CGROM)提供8192个该触发器,可以对模块屏幕开关显示进行控制。当DFF=1时为开显示(DISPLAY ON),此时DDRAM 的内容将显示在屏幕上,当DFF=0时为关显示(DISPLAY OFF)。此时DFF 的状态是由RST信号和指令DISPLAY ON/OFF来控制的。 显示数据RAM(DDRAM)模块的内部会显示数据RAM提供64*2个位元组的空间,最多可以控制4行16字(64个字)的中文字符显示,当写入显示数据RAM时,能够分别显示CGROM和CGRAM的字型;该模块能够显示三种字型,分别是半角英数字型(16*8)、CGRAM字型以及CGROM的中文字型,根据在DDRAM中写入的编码选择这三种字型,在0000H0006H的编码中(其代码分别为0000、0002、0004、0006,总共4个)将会选择CGRAM的自定义字型,在02H7FH的编码中将选择半角英数字字型,而A1以上的编码将会自动的结合下一个位元组,组成两个位元组的编码而形成中文字型的编码BIG5(A140D75F),GB(A1A0-F7FFH)。109攀枝花学院本科毕业设计(论文) LCD12864原理 字型产生RAM(CGRAM) 字型产生RAM能提供图象定义(造字)的功能, 可以提供4组16*6点的自定义的图象空间,用户可以将内部没有提供的图象字型自行定义到CGRAM中,便可以和CGROM中的定义一样地通过DDRAM显示在屏幕上。攀枝花学院本科毕业设计(论文) 3 系统硬件设计 地址计数器AC 地址计数器是用来储存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址计数器的值就会自动加一,当RS为“0”时而R/W为“1”时,地址计数器的值会被读取到DB6DB0中。光标/闪烁电路 此模块提供硬体光标以及闪烁控制电路,由地址计数器AC的值来决定DDRAM中的光标和闪烁位置。3.2.4 指令说明模块控制芯片提供两种控制命令,基本指令与扩充指令,具体如下:13 3 系统硬件设计表3.4.1 指令表1:(RE=0:基本指令)指令指 令 码功 能RSR/WD7D6D5D4D3D2D1D0清除显示0000000001将DDRAM装满20H,而且设置DDRAM的地址计数器(AC)为00H地址归位000000001X设定DDRAM的地址计数器(AC)为00H,然后将游标换到开始原点的位置;此指令不影响DDRAM 的内容显示状态开/关0000001DCBD=1: 整体显示 ON C=1: 游标ONB=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 系统硬件设计表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标志,那么在前一个指与当前指令中间就必须增加一段比较长的时间,也就是等待前一个指令完全执行完成。16 3 系统硬件设计3.3 键盘电路的设计针对此次设计的要求而言,共采用七个按键,其中一个是电源按键,另外六个是游戏控制按键,按键功能名称有“上、下、左、右、确认、退出”,玩家可以通过“上、下、左、右”按键实现游戏中蛇运动方向的控制;通过“确认、退出”按键实现进入游戏、退出游戏、游戏记录查看,其与单片机的连接电路如图3.4所示:16图3.4 键盘电路与单片机引脚的连接电路图3.4 蜂鸣器电路的设计3.4.1蜂鸣器简介蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母H或者HA表示。本设计使用蜂鸣器进行报警,当控制设备出现故障或其他原因使水塔水位超过设定的水位正常范围时,蜂鸣器会发出警报声,以提醒用户。在一些控制系统中,为了使生产安全,对于许多系统部位或重要的参数,都会设置紧急状态报警系统,用来提醒工作人员采取紧急措施。其方法是将计算机采集到的数据或通过计算机进行数据处理、数据分析后,与该参数预先设定的上下限值进行比较,如果低于下限值(或高于上限值)则进行报警,否则即为采样正常值,并进行显示和后续控制。3.4.2 蜂鸣器的设计本设计中,当蛇的运动方向发生改变、蛇吃到豆子、蛇撞到自己或者墙,蜂鸣器都会发出声音来提示玩家,蜂鸣器电路连接图如图3.5所示。图3.5 蜂鸣器连接电路图 4 软件系统设计4 软件系统设计系统中的应用软件是依据系统功能的需求设计的。软件的功能可以分为两类,一类是执行软件,它可以完成各种实质性的功能,如测量、计算、显示、打印、输出控制等;另一类是监控软件,它是专门用于协调各执行模块和操作者之间的关系,在系统软件中充当组织调度一角。单片机软件设计通常要考虑以下问题:1.根据软件功能的要求,将系统软件划分为若干个相当独立的部分。设计出使软件开发明确、简洁和流程合理的整体结构。2.每个函数程序执行模块和子程序。方便调试、连接,便于移植和修改。3.在编写应用软件之前,应先绘制出程序的流程图。4.要合理分配系统资源。4.1 游戏设计思想按照需求分析,游戏设计要解决的关键是显示界面和蛇的身体运动的处理的问题。游戏使用LCD液晶显示屏显示游戏界面。LCDl28*64分左右两列显示游戏信息,左边一列显示游戏操作界面;右边一列显示游戏得分和等级情况。LCDl28*64以4x4大小作为一个单元点阵,定义贪吃蛇的每一节蛇身的大小作为一个单元点阵,豆子与一节蛇身的大小是一样的,同样是一个单元点阵。LCDl28*64相应界面显示所有类型的游戏状态,所以可以定义数组来储存各种接口位图数据。以及定义函数在LCDl28*64的某一个坐标位置再增加一个单元点阵或者删除一个单元点阵的运算,那么通过调用此函数增加蛇头,消除蛇尾,实现蛇在游戏界面上运动。在蛇的运动过程中,主要需要解决以下几个方面的问题:1.运动的处理。根据玩家操作按键的值对蛇身进行柔体传动。那么,什么是柔体传动呢?柔体传动就是贪吃蛇在运动的时候并非是整个蛇身朝着同一个方向前进的,而是在每一个时间点到来的时候,每个单位点阵的方向在蛇头的带动下向下一个单位点阵传播,然后向新的这个方向前进一步。运动后,下一个单位点阵就按照上一个单位点阵的方向同样地向前运动一步。所以,它将立即填补上一个单位点阵的位置,以此类推。实际上在贪吃蛇设计的时候,只需要去掉蛇尾的那个点阵,然后放一个点阵在蛇头的新方向上就可以了。所以定义一个函数用来更新坐标点,只需知道蛇头或蛇尾的坐标和运动方向,就可以调用这个函数来更新蛇头或蛇尾的坐标,同时调用相关的显示函数,实现蛇运动处理。 4 软件系统设计蛇的头部的方向可以通过按键来捕获实时实现。而蛇尾方向的获得是更加困难的。为了减小所使用的处理器的负担,使用占用大量数据存储的方法,可用数组length80。蛇身运动时需要在此数组中存储每次蛇身移动一个单位点阵,1417蛇头运动的方向。再分别定义代表蛇头和蛇尾的两个变量,每次记录蛇头的运动方向后,表示蛇头的变量自动加一,这样在接下来的位置继续记录蛇头运动的方向;表示蛇尾的变量就指向该数组的起始位置,通过此变量来获取该数组中存储蛇尾运动的方向(由于存储在此数组中的蛇头运动的方向,伴随着蛇头的坐标的变化,存储在数组起始位置的方向就是蛇尾运动的方向),根据读取得到的蛇尾的移动方向就可以得到蛇尾的坐标。2.蛇吃豆子处理。如果蛇头的坐标和豆子的坐标一样,则判断蛇吃到豆子,那么,在蛇头位置就增加一个单元点阵作为新的蛇头,并更新豆子的坐标。3.放置新的豆子。通过更新豆子的坐标实现放置新的豆子,新豆子是随机产生在128*64的单元点阵中。放置豆子时,需要保证新的豆子不能与蛇身坐标重叠,如果重叠,则需要重新放置,以此类推,直到新的豆子不与蛇身坐标重叠为止。4.死亡处理。蛇运动的过程中,若蛇头碰到墙或者蛇身,则判断游戏结束。在游戏中,任何时候都可以选择退出游戏。5.得分和等级处理。蛇每吃一颗豆子,得分就加1,并且,得分到达一定分数,等级加1,得分情况会存储在游戏成绩查询中,并按得分高低排序,以供玩家查看。4.2 主要模块介绍及其功能1.主函数模块程序主函数充当整个程序运行时的一个缩影,它是无限循环的一个程序,完成的操作包含一系列硬件和软件的初始化,利用定时中断可以实现对游戏时钟的控制,调用其他模块实现按键处理,蛇运动与游戏的处理。2.按键模块按键模块主要分为按键的检测模块与按键的处理模块这两部分。按键的检测模块是对按键所对应管脚进行初始化,使用特定的查询模式检测按键是否被按下,然后改变该按键所对应变量的值。按键的处理模块是在不同的状态下,对按键做相应的处理,具体可以划分成六个状态,分别是进入游戏状态,菜单状态,游戏中状态,游戏成绩查询状态,游戏死亡状态,游戏结束状态。143. LCDl2864显示模块16 4 软件系统设计该模块负责显示游戏界面。相对应的六种状态(游戏进入状态,菜单状态,游戏中状态,游戏成绩查询状态,游戏死亡状态,游戏结束状态),在LCDl2864上时时刷新每个不同的界面。 4 软件系统设计4.蛇运动控制模块该模块用来负责控制蛇的运动和状态,包括在游戏开始的时候对蛇进行初始化,蛇运动的处理,存储数组中的地图置1,0和查询操作,以及蛇吃到豆子后的处理,根据当前的坐标和蛇的运动方向,更新蛇头的坐标。5.游戏控制模块这个模块负责对游戏的整体控制,具体内容包括在显示器上随机生成新的豆子;蛇吃到豆子以后得分增加,蛇身增长,等级增加;游戏成绩的查询;控制游戏时钟。6.时钟控制模块该模块负责记录游戏时间,具体为“年-月-日 时:分:秒”,玩家可以通过按键对时钟进行控制、更改,达到控制时钟的目的。4.3 编程语言介绍4.3.1 C语言简介C语言是在70年代初问世的。美国电话电报公司(AT&T)贝尔实验室于一九七八年正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit共同编撰了一本著名的C语言书-“THE C PROGRAMMING LANGUAGE”。通常人们称之为K&R或者K&R标准。但真正的C 语言标准是由后来的美国国家标准学会制定,并于一九八三年发表。这是因为在K&R中并没有对标准C语言进行完整的定义。早期的C语言主要是用于UNIX系统。由于C语言所具有的各种优点以及强大的应用功能,逐渐得到了人们的了解和认识,从80年代开始,C开始被其它一些操作系统使用,并在短时间里广泛应用于各类大、中、小和微型计算机,并成为了当代最优秀的程序设计语言之一。C语言是一种结构化语言。便于按模块化方式组织程序,结构清晰明了,并且容易调试和维护。C语言既可用于系统软件的开发,也适合于应用软件的开发,是一种集低级语言和高级语言的功能于一体的硬件编程语言。此外,在C语言的基础上,还衍生出了很多版本的C语言。4.3.2 C源程序结构特点(1)一个C语言源程序可以由一个或多个源文件组成。(2)每个源文件可由一个或多个函数组成。(3)一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。(4)源程序中的预处理命令通常应放在源文件或源程序的最前面。(5)每一个说明,每一个语句都必须以分号结尾。 (6)标识符,关键字之间若无明显的间隔符,则必须至少加一个空格以示间隔。 5 仿真设计与结果分析4.4 程序设计流程图图4.1 程序设计流程图攀枝花学院本科毕业设计(论文) 5 仿真设计与结果分析5 仿真设计与结果分析5.1 仿真软件的简介5.1.1 仿真软件Proteus的简介Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。Proteus是世界上著名的EDA工具(仿真软件),同时也是目前世界上唯一一个将电路仿真软件、PCB设计软件和虚拟模

温馨提示

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

评论

0/150

提交评论