基于51单片机贪吃蛇游戏设计.docx

上传人:b****6 文档编号:8794999 上传时间:2023-02-01 格式:DOCX 页数:58 大小:1.03MB
下载 相关 举报
基于51单片机贪吃蛇游戏设计.docx_第1页
第1页 / 共58页
基于51单片机贪吃蛇游戏设计.docx_第2页
第2页 / 共58页
基于51单片机贪吃蛇游戏设计.docx_第3页
第3页 / 共58页
基于51单片机贪吃蛇游戏设计.docx_第4页
第4页 / 共58页
基于51单片机贪吃蛇游戏设计.docx_第5页
第5页 / 共58页
点击查看更多>>
下载资源
资源描述

基于51单片机贪吃蛇游戏设计.docx

《基于51单片机贪吃蛇游戏设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机贪吃蛇游戏设计.docx(58页珍藏版)》请在冰豆网上搜索。

基于51单片机贪吃蛇游戏设计.docx

基于51单片机贪吃蛇游戏设计

摘要

本文设计了一款新颖的以单片机为控制核心的贪食蛇游戏系统。

所设计的贪食蛇能完成移动、吃食物和摆放游戏自动输出的食物、使之默认出现3节蛇身、吃到每个随机点数而得分等功能。

硬件设计包括LED模块、键盘模块、供电模块驱动模块和下载模块。

软件采用C语言编程,方便灵活,大大加快了软件开发速度,缩短了开发周期,并且便于移植。

为提高开发效率和硬件稳定性,采用了功能强大的硬件仿真软件Proteus,依托该软件提供的仿真环境搭配Keil作为软件开发调试环境进行仿真调试成功。

所设计的贪食蛇游戏系统轻巧便携、老少皆宜,且成本较低,具有一定的市场前景。

关键词:

贪吃蛇;单片机;游戏

 

Abstract

Thispaperdesignsanovelsingle-chipmicrocomputerasthesnakegamecontrolsystem.Thesnakecancompletemobile,foodandputthegameautomaticallyoutputoffood,whichappearsbydefault3snake,eateachrandompointsandscoringfunctions.ThehardwaredesignincludesLEDmodule,keyboardmodule,powersupplymoduleanddrivingmoduleanddownloadmodule.ThesoftwareisprogrammedwithClanguage,convenientandflexible,greatlyacceleratethespeedofsoftwaredevelopment,shortenthedevelopmentcycle,andeasytotransplant.Inordertoimprovethedevelopmentefficiencyandstabilityofthehardware,thepowerfulhardwaresimulationsoftwareProteus,basedonthesimulationenvironmentofthesoftwareprovidedwithKeilasthesoftwaredevelopmentenvironmentfordebuggingsimulationdebuggingsuccess.Snakegamesystemdesignofthelightandportable,suitableforallages,andthecostislow,hasacertainmarketprospects.

 

KeyWords:

GreedySnake;51MCU;Game

第一章绪论

“贪食蛇”又称为“贪吃蛇”,是一种益智小游戏。

其游戏规则比较简单,就是一条小蛇,不停地在屏即毙命并结束游戏。

本设计以51系列单片机AT89C51为控制核心,以点阵液晶显示模块、按键为人机接口,实现了一个贪食蛇游戏机。

1.1课题设计的背景与意义

随着社会的发展,人们生活的步调日益加快,越来越多的人加入了全球化的世界。

人们不再拘束一块天地,加班,出差成了现代人不可避免的公务。

而此时一款可以随时随地娱乐的游戏成了必需品。

贪吃蛇这一游戏简单易行,操作方便,娱乐性较强,吸引了不少人。

这一款游戏紧紧地抓住了人们的心理,虽然简单,却其乐无穷,在人们不断追求更多的欲望下,该游戏给人们带来了追逐的快感,以及成功后的满足感,对于一直处于高压下的现代人是很好的放松工具。

当前科学技术飞速发展,特别是微电子技术,计算机软件与应用技术的发展,使得人们的日常生活丰富多彩。

单片微型计算机(简称单片机)作为微型计算机家族的一员,以其独特的结构,良好的稳定性,便宜的价格在嵌入式领域广泛应用。

与传统的PC上设计的贪吃蛇游戏不同,本次作者利用Proteus硬件仿真软件,采用单片机、液晶显示屏、扬声器、按键等搭建硬件平台,C语言编程,实现便携地贪吃蛇游戏。

传统的贪吃蛇游戏只有单纯的吃豆子,得分,升级以后蛇运动的速度加快等功能。

本次作者对贪吃蛇游戏进行了升级,出上述基本功能外,针对现有硬件条件,加入地图选择,游戏中途暂停与退出,各种背景音的播放(包括吃豆子背景音、错误提示背景音、升级背景音、游戏结束背景音、游戏通关背景音等),背景音静音与否的选择等,使玩家的游戏体验更上一层楼。

LED显示屏是八十年代后期在全球迅速发展起来的新型信息显示媒体,显示屏由几万甚至几十万个半导体发光二极管像素点均匀排列组成。

利用不同的材料可以制造不同色彩的LED像素点。

目前应用最广的是红色、绿色、黄色。

而蓝色和纯绿色LED的开发已经达到了实用阶段。

LED显示屏可以显示变化的数字、文字、图形图像;不仅可以用于室内环境还可以用于室外环境,具有投影仪、电视墙、液晶显示屏无法比拟的优点。

在短短的十来年中,LED点阵显示屏就以亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定的优点迅速成长为平板显示的主流产品,在信息显示领域得到了广泛的应用。

LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性、可靠性、全色化方向发展。

LED显示屏的应用涉及社会经济的许多领域,主要包括:

(1)证券交易、金融信息显示。

(2)机场航班动态信息显示。

(3)港口、车站旅客引导信息显示。

(4)体育场馆信息显示。

(5)道路交通信息显示。

(6)调度指挥中心信息显示。

(7)邮政、电信、商场购物中心等服务领域的业务宣传及信息显示。

(8)广告媒体新产品等。

  

通过本次设计可以使我更加了解我国LED显示屏的发展前景,以及更好的了解了LED显示屏的主要功能和适用范围,并且通过自己不懈的努力,对其工作原理和安装过程更为了解,利用点阵屏幕设计游戏的一些思路,对一些电子电路知识更为精通。

我想通过本次设计所取得成果是巨大的而深远的,首先对我以后的工作会有很大的帮助,其次是通过我自己的亲身制作很的提高了我的动手能力。

1.2贪食蛇游戏的发展及现状

1.2.1贪食蛇游戏发展历史

贪吃蛇发明者是Jeremy蛇引诱夏娃吃了苹果之后,就被贬为毒虫,阴险的象征。

而蛇吃东西是整只动物吞进去的,更加显得贪婪的样子.大概在文艺复兴的时候就有人发明的一种游戏,是现在贪吃蛇的前身。

后来慢慢的发展就变成了今天的贪吃蛇了。

蛇引诱夏娃吃了苹果之后,就被贬为毒虫,阴险的象征。

贪吃蛇是个悲剧游戏,无论玩家如何技术高超,最终结果都是小蛇挂了.貌似还含有哲理意义给人警示戒贪.贪吃蛇产生于1970年代中后期的计算机游戏。

此类游戏在1990年代由于一些小屏幕设备引入而再度流行起來,在现在的手机上基本都可安装此小游戏。

贪吃蛇游戏是一种简单的大众的游戏,自从计算机实现以来,深受广大电脑玩家的喜爱,做一个简单的贪吃蛇小游戏。

贪吃蛇的核心算法时如何实现移动和吃掉食物,没有碰到食物的时候,把当前运动方向上的下个节点入队,并以蛇节点的颜色绘制这个节点,然后把头指针所指的节点出队,并以游戏框架内部背景色重绘出队的节点,这样就可以达到移动的效果。

而在吃到食物的时候,则只需把食物入队即可。

实现贪吃蛇的基本的蛇身移动、吃到食物身体增长、和碰到墙壁或自身死亡,能够暂停和开始。

本次设计我将主要运用C语言来完成。

C语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,用C写的应用程序可移植性强、可靠性好、执行型强等。

1.2.2我国单机游戏的现状

近年来,因特网在国内迅速普及,导致了游戏的高速发展。

同样手机的普及,导致了手机游戏市场呈现爆炸式的发展。

尤其是国内外巨大的手机拥有量,更是让商家看到了商机,手机游戏市场利润将会十分丰厚。

面对潜力如此巨大的手机游戏市场,各游戏开发商、运营商、服务商以及手机终端厂商等都纷纷开始了各自的应战准备,以便抢占商机。

各大手机以及游戏厂商开始不断的提升手持设备在游戏方面的性能,同时还在操作系统方面采用开放式的平台,方便用户享受不同的游戏业务。

而国内游戏开发商,如盛大、网易等公司,纷纷跻身手机游戏开发商行列。

新浪、搜狐等著名的门户网站,也纷纷涉足手机游戏领域,相继开辟了各自的手机游戏频道和栏目,其他一些游戏网站也都全面加快了手机游戏开发的步伐。

目前SUN公司的J2MECLDC/MIDP环境和高通公司的BREW(BinaryRuntimeEnvironmentforWireless)客户端程序是国内外游戏开发的两大主要平台。

中国电信业巨头中国移动建立了无线Java增值服务体系,推出了基于SUN公司的J2ME环境的“百宝箱”业务,包括游戏类、商务类、生活类等丰富的数据服务。

中国移动用户只要使用支持Java的手机,通过GPRS的无线上网方式,访问移动梦网门户的“百宝箱”服务菜单,就能方便地下载各种由Java语言编写的应用程序。

而中国联通与高通公司合作,采用高通公司的BREW平台技术,推出了“神奇宝典”业务,中国联通用户可以从联通公司的应用下载服务器上以无线方式下载应用程序。

手机游戏成了电信增值业务中一项主要的应用,在公交车等公共场合不时会看到拿着手机玩游戏的人。

相比较早开发的“贪吃蛇”、“俄罗斯方块”等手机游戏,如今的手机游戏,无论是从视觉效果、听觉效果还是游戏的可玩性来说,都要精彩的多。

在全球,移动电话数量巨大,除美国之外,其他各个发达国家拥有手机的人数比拥有计算机的人数还多。

在我国,手机拥有量甚至超过了美国的人口数量,而且每个月手机数量还正以惊人的速度递增着。

手机市场的高速增加带动了手机游戏市场的急速膨胀,基于JAVA、C等技术平台的手机游戏市场规模纷纷呈现几何增长态势。

1.3课题设计的内容与要求

1.3.1课题设计的内容

本设计涉及到硬件部分和软件部分,硬件部分采用主控芯片为STC89C51、2片74HC595、2片74HC138译码器,单片机P2口设置4个触点按键,软件设计程序关键在于表示蛇的图形及蛇的移动。

用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。

移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。

食物的出现与消失也是画矩形块和覆盖矩形块。

为了便于理解,定义两个结构体:

食物与蛇。

1.3.2课题设计的要求

1、电路要求通过使用单片机和点阵完成电路的各部分,并实现贪食蛇所需要的功能,通过仿真软件实现对电路和软件的测试与检查。

2、软件要求通过使用KEIL软件,使用C语言并结合硬件电路,实现硬件所需的功能,要求程序简单易懂,移植性好,执行型强,代码效率高,无错误,生成HEX文件并写入芯片。

1.4设计方案

1.4.1硬件设计

运用单片机技术和C程序设计及其模拟电子技术,通过点阵显示屏显示。

需要使用的电路分为以下模块,单片机最小系统图、阵显示屏电路、方向控制电路,三个部分组成。

使用单片机作为控制核心,可以简化硬件电路。

1.4.2软件设计

采用软件编程控制单片机实现硬件电路的功能,降低能耗,降低成本。

软件采用C语言编程,方便灵活,大大加快了软件开发速度,并且便于移植。

为提高开发效率和硬件稳定性,依托该软件提供的仿真环境搭配Keil作为软件开发调试环境进行仿真调试成功。

贪吃蛇的制作思路及原理。

通过点阵屏点亮一个点,然后再点亮旁边的另一个点,形成“蛇”,然后,再在点阵屏上面选一个点为蛇的食物,通过手动按键使蛇移动,并判断是否撞墙。

并找到食物,并吞下食物,然后蛇变长,直到蛇咬住尾巴或者撞墙死亡,重新开始。

第二章系统总体设计

2.1系统基本组成及工作原理

系统的大体结构图如如图2-1所示,图文显示屏的硬件模块基本结构可以分为屏体和控制器和驱动器三大部分:

图2-1系统框图

屏体部分主要是4个8×8的LED点阵组成的16×16的LED点阵和行列驱动电路构成。

不论是图形还是文字,都是控制与组成这些图形或文字的各个点所在的位置相对应的LED器件发光。

根据屏幕所需的平面面积大小,选择一定数量的LED。

用点阵方式构成图形或文字,是非常灵活的,可以根据需要任意组合和变化,只要设计好合适的数据文件,每个LED发光器件占据数据中的一位,通过对点阵上全部的LED进行控制,在需要该LED器件发光时,数据中相应的位填1,否则填0,这样依照所需显示的图形文字,按显示屏的各行各列逐点填写显示数据,就可以构成一个显示数据文件,得到比较满意的显示效果。

由于文字的显示点阵格式比较规范,可以采用现行计算机通用的字库字模,如汉字的宋体、楷体和黑体等多种可供选择的方案;其大小也可以有16×16、24×24、32×32、48×48等不同规格。

因为本次毕业设计使用的四个8×8的LED点阵组成一个16×16得LED点阵,然后通过级联,把两个16×16的LED连在一起组成了16×32的LED点整,分别显示汉字,所以仍然可以使用16×16的字模。

字体选择了在16×16规格下,显示的比较清晰、容易识别的宋体。

从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在的位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。

16x16的点阵共有256个发光二极管,显然单片机没有这么多的端口,如果我采用锁存器来扩展端口,按8位的锁存器来计算,16x16的点阵需要256/8=32个锁存器。

这个数字很庞大,因为我们仅仅是16x16的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。

因此在实际应用中的显示屏几乎都不采用这种设计,而采用另外一种称为动态扫描的显示方法。

动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套驱动器。

具体就16x16的点阵来说,把所有同1行的发光管的阳极连在一起,把所有同1列的发光管的阴极连在一起(共阳极的接法),先送出对应第一行发光管亮灭的数据并锁存,然后选通第1行使其燃亮一定时间,然后熄灭;再送出第二行的数据并锁存,然后选通第2行使其燃亮相同的时间,然后熄灭;以此类推,第16行之后,又重新燃亮第1行,反复轮回。

当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能够看到显示屏上稳定的图形了。

采用扫描方式进行显示时,每一行有一个行驱动器,各行的同名列共用一个驱动器。

显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。

显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。

从控制电路到列驱动器的数据传输可以采用并列方式或串行方式。

显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。

当列数很多时,并列传输的方案是不可取的。

采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。

但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都以传输到位之后,这一行的各列才能并行地进行显示。

这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两部分。

对于串行传输方式来说,列数据准备时间可能相当长,在行扫描周期确定的情况下留给行显示的时间就太少了,以致影响到LED的亮度。

解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。

即在显示本行各列数据的同时,传送下一列数据。

为了达到重叠处理的目的,列数据的显示就需要具有所存功能。

经过上述分析,就可以归纳出列驱动器电路应具有的功能。

对于列数据准备来说,它应能实现串入并处的移位功能,对于列数据显示来说,应具有并行锁存的功能。

这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。

控制器部分主要是单片机及其外围电路。

由16行16列组成的16×16显示屏其LED发光器件数量相当大,不宜使用静态显示驱动电路,而采用多行的同名列共用一套列驱动器。

控制电路负责有序的选通各行,在选通每一列之前还要把该列各行的数据准备好。

这样,这一行上的LED发光器件就可以根据列数据进行显示。

这种时序控制电路,一般都采用单片机实现。

控制电路采用单片机,主要负责控制存储显示数据模块、安排控制信号的定时与顺序、控制驱动LED显示点阵的电路等。

驱动电路,则分为行驱动电路和列驱动电路,用来驱动LED显示点阵。

综上所述,系统逻辑结构如图2-2所示。

图2-2系统逻辑结构

2.2系统的主要元器件介绍

2.2.174HC138

74HC138是一款高速COMS器件,74HC138引脚兼容低功耗肖特基TTL(LSTTL)系列。

74HC138译码器可接受3位二进制加权地址输入(A0,A1和A2),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。

74HC138特有3个使能输入端:

两个低有效(E1和E2)和一个高有效(E3)。

除非E1和E2置低且E3置高,否则74HC138将保持所有输出为高。

利用这种复合使能特性,仅需4片74HC138芯片和1个反相器,即可轻松实现并行扩展,组合成为一个1-32(5线到32线)译码器。

任选一个低有效使能输入端作为数据输入,而把其余的使能输入端作为选通端,则74HC138亦可充当一个8输出多路分配器,未使用的使能输入端必须保持绑定在各自合适的高有效或低有效状态。

译码过程实际上是一种翻译过程,即编码的逆过程。

译码器的输入是n位二值代码,输出是m个表征代码原意的状态信号(或另一种代码)。

小于等于2的n次方,即译码器输入线比输出线要少。

译码器按其功能可分为三大类:

(1)变量译码器:

将输入的二进制代码还原为原始输入信号。

例如有两位二进制代码(0,1),可经译码器还原为四个信号状态(0,0)(0,1)(1,0)(1,1)

(2)代码变换译码器:

用于将一个数据的不同代码之间的相互转换。

例如二-十进制译码器可将8421码转换为十个状态。

(3)显示译码器:

将数字、文字或符号的代码还原成相应的数字、文字、符号并显示出来的电路74HC1383-8线译码器/CD74HC138,CD74HC238和CD74HCT138,CD74HCT238是高速硅栅CMOS解码器,适合内存地址解码或数据路由应用。

74HC138作用原理于高性能的存贮译码或要求传输延迟时间短的数据传输系统,在高性能存贮器系统中,用这种译码器可以提高译码系统的效率。

将快速赋能电路用于高速存贮器时,译码器的延迟时间和存贮器的赋能时间通常小于存贮器的典型存取时间,这就是说由肖特基钳位的系统译码器所引起的有效系统延迟可以忽略不计。

74HC138按照三位二进制输入码和赋能输入条件,从8个输出端中译出一个低电平输出。

两个低电平有效的赋能输入端和一个高电平有效的赋能输入端减少了扩展所需要的外接门或倒相器,扩展成24线译码器不需外接门;扩展成32线译码器,只需要接一个外接倒相器。

在解调器应用中,赋能输入端可用作数据输入端功能表如表2-1所示。

1、低静态电流:

80mA最大

2、低输入电流:

1mA最大

3、8位串行,并行输出移位寄存器与存储

4、宽工作电压范围:

为2V到6V

5、级联

6、移位寄存器具有直接清除

7、保证移频:

DC至30兆赫

正常使用时的典型参数:

1、电源电压(Vcc):

2~6V

2、直流输入/输出电压:

0~VccV

3、工作环境温度:

-40~85℃

4、输入上升/下降延时:

VCC=2.0V1000ns

VCC=4.5V500ns

VCC=6.0V400ns

表2-174HC138功能表

74HC13874HCT138T1TRUTHTABLE真值功能表

INPUTS输入

Outputs输出

ENABLE使能

ADDRESS地址

E3

E2

E1

A2

A1

A0

Y0

Y1

Y2

Y3

Y4

Y5

Y6

Y7

X

X

H

X

X

X

H

H

H

H

H

H

H

H

L

X

X

X

X

X

H

H

H

H

H

H

H

H

X

H

X

X

X

X

H

H

H

H

H

H

H

H

H

L

L

L

L

L

L

H

H

H

H

H

H

H

H

L

L

L

L

H

H

L

H

H

H

H

H

H

H

L

L

L

H

L

H

H

L

H

H

H

H

H

H

L

L

L

H

H

H

H

H

L

H

H

H

H

H

L

L

H

L

L

H

H

H

H

L

H

H

H

H

L

L

H

L

H

H

H

H

H

H

L

H

H

H

L

L

H

H

L

H

H

H

H

H

H

L

H

H

L

L

H

H

H

H

H

H

H

H

H

H

L

2.2.274HC154

4线-16线译码器简要说明:

74HC154为4线-16线译码器,其主要电特性的典型值如下:

当选通端(G1、G2)均为低电平时,可将地址端(ABCD)的二进制编码在一个对应的输出端,以低电平译出。

若将G1和G2中的一个作为数据输入端,由ABCD对输出寻址,74HC154还可作1线-16线数据分配器。

74HC154,其中最外面的那些数字和字母是外部功能引脚。

靠近内部的数字,为管脚的分部情况,功能表如表2-2。

74HC154是一款高速CMOS器件,74HC154引脚兼容低功耗肖特基TTL(LSTTL)系列。

74HC154译码器可接受4位高有效二进制地址输入,并提供16个互斥的低有效输出。

74HC154的两个输入使能门电路可用于译码器选通,以消除输出端上的通常译码“假信号”,也可用于译码器扩展。

该使能门电路包含两个“逻辑与”输入,必须置为低以便使能输出端。

任选一个使能输入端作为数据输入,74HC154可充当一个1-16的多路分配器。

当其余的使能输入端置低时,地址输出将会跟随应用的状态。

引出端符号:

A、B、C、D译码地址输入端(低电平有效)

G1、G2选通端(低电平有效)

0~15输出端(低电平有效)

1、电源静态电流:

80毫安(74HC)

2、低输入电流:

1mA最大

3、三宽电源电压范围:

2-6V的

正常使用时的典型参数:

1、电源电压(Vcc):

2~6V

2、直流输入/输出电压:

0~VccV

3、工作环境温度:

-40~85℃

4、输入上升/下降延时:

VCC=2.0V1000ns

VCC=4.5V500ns

VCC=6.0V400ns

 

输入

低电平

输出

控制译码值

G1

G2

D

C

B

A

L

L

L

L

L

L

0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1