基于51单片机与点阵的贪食蛇游戏机开发

合集下载

基于单片机的贪吃蛇设计

基于单片机的贪吃蛇设计

基于单片机的贪吃蛇设计

本篇论文主要是设计并且着手致力于实现一种基于51单片机的经典的贪吃蛇游戏,主要是研究该游戏的硬件电路和软件编程的设计,同时也简单介绍了应该如何使用Proteus软件进行仿真。借助仿真软件进行实验测试,可以基本实现游戏一些简单的基本功能。直至现在,大家都知道且明白了51系列的单片机技术相对而言比较成熟,功能也十分强大,应用较为广泛。将单片机作为本设计的控制核心,能够使硬件电路大大地简化,用软件来编程控制单片机,来加以实现硬件电路的功能,可以降低能耗,同时也节约成本。选用C语言编程,比较方便灵活,极大地加快了软件开发的速度,使开发周期缩短了,同时方便移植。本篇论文比较详细的的介绍了各种硬件的基本特性,贪吃蛇游戏实现的基本功能与详细设计,软件设计的具体说明,每一个模块的细节要求,还有一些功能模块的程序流程图和关键部分代码的详细讲解等。

关键词:Proteus软件仿真;51单片机;Keil;贪吃蛇;LED点阵屏

目录

1 绪论 (1)

1.1研究背景及意义 (1)

1.2单片机发展状况 (1)

1.3 LED发展状况 (2)

1.4 设计特点 (3)

2 系统总体设计 (3)

2.1设计要求 (3)

2.2 系统设计方案 (4)

2.2.1硬件设计 (4)

2.2.2软件设计 (4)

3系统硬件设计 (4)

3.18*8LED点阵的原理说明 (4)

3.2 LED阵列驱动电路 (4)

4系统软件设计 (5)

4.1系统主要模块介绍 (5)

4.1.1 主函数模块 (6)

4.1.2 按键模块 (6)

4.1.3 蛇运动控制模块 (6)

单片机贪食蛇课程设计报告

单片机贪食蛇课程设计报告

单片机课程设计报告

目录

目录 (1)

1设计任务及要求 (1)

2总体设计思路及功能描述 (1)

3 各部分软硬件设计原理及方案详细说明 (3)

人机接口电路 (3)

单片机与PC机通信电路 (5)

其他部分电路说明 (5)

软件模块设计 (6)

LCD初始化 (6)

键盘扫描程序 (7)

显示16*16点阵汉字 (8)

食物的随机出现 (8)

8X8点阵LED工作原理说明 (9)

锁存器(74HC573) (9)

软件编译 (11)

4 调试的步骤及调试过程中出现的问题以及解决方法 (11)

PROTEUS仿真 (11)

硬件的安装 (12)

调试注意事项 (12)

硬件调试注意事项 (12)

软件调试注意事项 (12)

5 设计心得体会 (13)

6 附录 (14)

总原理图 (14)

单片机程序代码 (14)

正文:

1设计任务及要求

本设计以51系列单片机STC89C52为控制核心,以点阵液晶显示模块、键盘为人机接口,实现了一个贪食蛇游戏机。通过本设计,令读者掌握利用单片机开发简单电子产品的基本技能,熟悉原理图绘制、仿真、软件设计、优化以及系统调试的基本方法,为进一步设计开发更为复杂的嵌入式模拟/数字混合系统打下一定的基础。

“贪食蛇”又称为“贪吃蛇”,是一种益智小游戏。其游戏规则比较简单,就是一条小蛇,不停地在屏幕上游走去吃屏幕上出现的蛋,越吃越长,只要蛇头碰到屏幕四周或者碰到自己的身子,小蛇就立即毙命并结束游戏。本作品有上下左右四个按键来控制蛇头的移动方向,另有一个复位按键控制程序的重启,

游戏界面方案一:采用分辨率为128×64的液晶显示屏

单片机贪吃蛇课程设计报告

单片机贪吃蛇课程设计报告

电气与信息工程学院

单片机课程设计报告

一、设计任务及要求

基本功能:

制作一个8*8点阵的贪吃蛇游戏,系统以单片机的C语言的软件设计,系统通过LED点阵屏为载体显示数据,并用五个输入端表示五个控制键(上下左右及加速)。系统硬件部分由STC89C52RC单片机,8*8点阵屏,5个按键,软件部分在keil环境下用C51语言编写,包括游戏初始化蛇的节数,以及障碍墙壁,游戏结束时自动复位。

具体要求:

1、用四个按钮控制贪吃蛇的行径,一个按钮控制贪吃蛇的加速,蛇的初始长度为2点,设置墙壁。

2、蛇吃到长度为1点的食物时,自身长度增加1点。

2、速度按钮带有一次加速,按两下速度按钮蛇的行进速度回到初始值。

3、当蛇碰到墙壁或自己的身体时游戏结束。

4、用proteus设计,仿真基于STC89C52RC单片机的8x8点阵贪吃蛇的硬件电路。

二、硬件电路设计

本系统以STC89C52RC为核心,设置12MHz的晶振,使得单片机有合理的运行速度。LED点阵屏通过LED(发光二极管)组成,以灯珠亮灭来显示程序的运行情况,是模块化的显示组件,本设计采用8*8共阳红色点阵显示屏,用来显示贪吃蛇的游戏画面。五个独立按键控制蛇的游走方向(上下左右)和加速减速的功能。贪吃蛇是一款经典的小游戏,玩家通过按键操控贪吃蛇不断地吃食物,蛇身逐渐伸长,当蛇碰到蛇身和墙壁时游戏结束。

需要注意的是实际元件中,点阵的封装不尽相同,因此需要测试出每个引脚的功能,以便正确连线。注意,每个像素点的额定电压在3v左右,电压过大将会彻底损坏。

三、系统软件设计

51单片机贪吃蛇代码

51单片机贪吃蛇代码

#include

#include

#include

typedef unsigned int uint;

typedef unsigned char uchar;

sbit SRCLK=P3^6;

sbit RCLK=P3^5;

sbit SER=P3^4;

sbit k1=P3^1; //up

sbit k2=P3^0; //down

sbit k3=P3^2; //left

sbit k4=P3^3; //right

uchar xz[]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0xff}; uchar yz[]={0x00,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff}; uchar len,flag,x0,y0,r,p,f;

void send(uchar dat);

void keyboard();

struct point

{

uchar x,y;

}s[40];

void int0()

{

len=3;

s[0].x=3,s[0].y=1;

s[1].x=2,s[1].y=1;

s[2].x=1,s[2].y=1;

flag=0;//????

p=1; //???????

f=1;

r=0; //????

}

void delay(uint c) //c=1,1ms

{

uint a,b,t;

for(t=0;t

for(b=102;b>0;b--)

for(a=3;a>0;a--);

}

void show(uchar x,uchar y)

{

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

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

中文摘要

摘要

本文设计了一款新颖的以单片机为控制核心的贪食蛇游戏系统。所设计的贪食蛇能完成移动、吃食物和摆放游戏自动输出的食物、使之默认出现3节蛇身、吃到每个随机点数而得分等功能。硬件设计包括LED模块、键盘模块、供电模块驱动模块和下载模块。软件采用C语言编程,方便灵活,大大加快了软件开发速度,缩短了开发周期,并且便于移植。为提高开发效率和硬件稳定性,采用了功能强大的硬件仿真软件Proteus,依托该软件提供的仿真环境搭配Keil作为软件开发调试环境进行仿真调试成功。所设计的贪食蛇游戏系统轻巧便携、老少皆宜,且成本较低,具有一定的市场前景。

关键词:贪吃蛇;单片机;游戏

I

英文摘要

Abstract

This paper designs a novel single-chip microcomputer as the snake game control system. The snake can complete mobile, food and put the game automatically output of food, which appears by default 3 snake, eat each random points and scoring functions. The hardware design includes LED module, keyboard module, power supply module and driving module and download module. The software is programmed with C language, convenient and flexible, greatly accelerate the speed of software development, shorten the development cycle, and easy to transplant. In order to improve the development efficiency and stability of the hardware, the powerful hardware simulation software Proteus, based on the simulation environment of the software provided with Keil as the software development environment for debugging simulation debugging success. Snake game system design of the light and portable, suitable for all ages, and the cost is low, has a certain market prospects.

基于51单片机的贪食蛇游戏机开发-精品

基于51单片机的贪食蛇游戏机开发-精品

第ChpNum章基于51单片机的贪食蛇游戏机开发

1 本设计的特点和目的

本设计以51系列单片机STC89C52为控制核心,以点阵液晶显示模块、键盘为人机接口,实现了一个贪食蛇游戏机。通过本设计,令读者掌握利用单片机开发简单电子产品的基本技能,熟悉原理图绘制、仿真、软件设计、优化以及系统调试的基本方法,为进一步设计开发更为复杂的嵌入式模拟/数字混合系统打下一定的基础。

2产品简介

“贪食蛇”又称为“贪吃蛇”,是一种益智小游戏。其游戏规则比较简单,就是一条小蛇,不停地在屏幕上游走去吃屏幕上出现的蛋,越吃越长,只要蛇头碰到屏幕四周或者碰到自己的身子,小蛇就立即毙命并结束游戏。本作品有上下左右四个按键来控制蛇头的移动方向,另有一个复位按键控制程序的重启,游戏界面采用分辨率为128×64的液晶显示屏。

3 硬件设计

3.1 人机接口电路

本游戏机游戏界面由液晶显示模块呈现。液晶显示模块中,最主要的就是LCD液晶屏。根据LCD液晶屏显示内容的不同,液晶显示模块可以分为数显液晶模块、点阵字符液晶模块和点阵图形液晶模块3种。本设计使用点阵图形液晶模块OCM12864。OCM12864液晶显示模块是128×64点阵型液晶显示模块,可显示各种字符及图形,可与CPU直接连接,具有8位标准数据总线、6条控制线及电源线,各引脚的信号说明参见表ChpNum-1。

表ChpNum-1 OCM12864引脚说明

管脚名称方向引脚说明

VSS - 逻辑电源地。

VDD - 逻辑电源+5V。

V0 I LCD调整电压,应用时接10K电位器可调端

登峰杯范文。基于51单片机与点阵的贪食蛇游戏机开发

登峰杯范文。基于51单片机与点阵的贪食蛇游戏机开发

基于51单片机与8*8点阵的贪吃蛇游戏机开发

物理与电子信息工程学院 07电信本一蘧孝泼

摘要:设计并实现了一种基于51单片机的贪吃蛇游戏,主要讨论了游戏机的硬件电路与软件编程的设计方案,并介绍了如何使用Proteus进行软件仿真。通过软件测试,可实现贪吃蛇游戏的基本功能。

关键词:单片机;贪吃蛇;LED点阵

Abstract:Designed and implemented a microcomputer-based Snake games, mainly discussed the console hardware design and software programming, and describes how to use the Proteus to software emulation. Software testing, can be realized Snake game's basic functions.

Key words:Single chip microcomputer;Snake;LED lattice

引言

贪吃蛇,是一种益智小游戏。其游戏背景:蛇引诱夏娃吃了苹果之后,就被贬为毒虫,阴险的象征,而蛇吃东西是整只动物吞进去的,大概在文艺复兴的时候就有人发明了这么一种游戏,是现在贪吃蛇的前身,后来慢慢地发展成了现有的贪吃蛇游戏。其游戏规则比较简单,就是一条小蛇,不停地在屏幕上游走去吃屏幕上出现的食物,越吃越长,到了一定的长度之后,就可以进入下一关,越到后面的关卡蛇移动的速度越快,只要蛇头碰到四周的墙壁或者碰到自己的身体,小蛇就立即毙命并结束游戏。本文根据贪吃蛇的游戏规则,以ATMEL AT89S52单片机为控制核心,使用8*8点阵为显示模块,设计并实现贪吃蛇最基本的功能。

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

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

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

贪吃蛇游戏是一种经典的游戏,也是很多人小时候玩过的游戏,其玩法简单,但却能

够让人沉迷其中。本文将介绍如何基于51单片机设计贪吃蛇游戏。

一、功能需求

1. 界面设计

贪吃蛇游戏的界面应简洁美观,可以利用点阵或LCD显示屏来呈现。应包括游戏画面、分数、游戏难度等。

2. 操作方式

游戏的操作主要包括上下左右移动贪吃蛇头部,进行输入、开始游戏、结束游戏等操作。游戏可以使用按键、遥控器或者手柄等方式进行控制。

3. 游戏规则

游戏正常进行时,贪吃蛇必须不断吃到食物,同时不能碰到墙壁或自己的身体。每吃

到一个食物,分数就会增加一点。当贪吃蛇碰到墙壁或自己的身体时,游戏结束。

4. 难度等级

游戏可以设置不同的难度等级,难度等级越高,贪吃蛇的速度就会越快,游戏难度也

会相应提高。

二、设计思路

本设计采用51单片机作为控制器,通过点阵或者LCD显示屏实现游戏界面的显示,通过按键、遥控器或手柄等方式进行游戏的操作。具体设计思路如下:

LCD显示屏:同样可以实现游戏画面的显示,但是可以显示更丰富的内容,如文字、

动画等。

2. 游戏逻辑处理

游戏逻辑处理主要包括游戏规则的实现和贪吃蛇的移动控制。在实现游戏规则时,需

要判断贪吃蛇是否碰到墙壁或自己的身体,同时需要计算分数;在实现贪吃蛇的移动控制时,需要通过按键、遥控器或者手柄等方式实现上下左右的移动。

可以通过按键或者遥控器等方式设置游戏难度等级,从而实现游戏难度的调整。

4. 硬件设计

硬件设计包括主控芯片的选择、显示屏的选择、按键、遥控器或手柄等外设的选择。主控芯片可以选择51单片机,同时可以选择点阵或LCD显示屏,按键、遥控器和手柄等外设可以根据需要进行选择。

基于STC51单片机的LED点阵游戏机的设计开发

基于STC51单片机的LED点阵游戏机的设计开发

理论与研究西部皮革

2018年2月

基于STC 51单片机的LED .

游戏机的设计开发

吕达,池文慧

(包头职业技术学院,内蒙古包头014030)

摘要:现代LED 点阵显示模块的迅速发展,许多研究领域已经研究非常深刻且迅速发展,是用LED 点阵显示模块点阵显示 为图 文字,是非 活方便的,具有感 。对在 大 来说,课上的许多知识永远都是理论,本文主要通过工作

室学生的研究设计,利用单片机驱动LED 显示贪食蛇游戏等,基于STC 51单片机对LED 点阵游戏机设计、开发与实现方法进行讨 论,其主要目的是综合大学所学内容进行整合与运用,

知识的

与拓展。

关键词:显 块;单片;点阵

中图分类号:G 250

文献标志码:A

文章编号$ 1671 -1602 (2018) 02 -0064 -01

引言片 随着大规模集成电路的发展,将CPU 、RAM 、ROM 、时/计 多种WO 接口集成在一个小的芯片上,形成 片计算机, 片 LED 实例化,设计一个LED . 图像的 。 STC 51型片 LED 显

方法。输出号频率 通 片 实现,用8"8LED 进行游戏的设计,通 动 可以 图案 。进行

操控时,LED . 会更据自己 的程序作出相应的 。

设计需要 大量相关资料,以 熟练的单片 程技

术、电子产品 与调试技术以及细致的焊接 ,并进行设计、安装与调试,最后完成视频的录制。

1 设计方案

本设计是基于8 " 8LED 点阵的 系统的设计与开发, 片STC 51片机。本设计的目的是为了将电子产品安装与调试、单片机 原理、传感器技术等课程的知识点与技能点进行整合, 设计能力及实践动手能力,发现问题、分析问题、解 题的能力。

基于51单片机8x8点阵贪吃蛇综合课程设计报告

基于51单片机8x8点阵贪吃蛇综合课程设计报告

《电子线路综合》课程设计报告

设计课题:贪吃蛇掌上游戏机

毕业设计(论文)原创性声明和使用授权说明

原创性声明

本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。

作者签名:日期:

指导教师签名:日期:

使用授权说明

本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。

作者签名:日期:

学位论文原创性声明

本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。

作者签名:日期:年月日

学位论文版权使用授权书

本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

基于51单片机的贪吃蛇游戏设计(Proteus仿真含完整程序)

基于51单片机的贪吃蛇游戏设计(Proteus仿真含完整程序)

中北大学

硬件大型实验说明书

学生姓名:学号:

学院: 计算机与控制工程学院

专业: 计算机科学与技术

题目: “贪吃蛇”游戏设计

指导教师:职称:

2016 年 9 月 14 日

目录

一、需求分析 (1)

二、工具 (1)

三、概要设计 (1)

四、详细设计(硬件设计和连接部分) (2)

1.组件介绍 (2)

1)AT89C55单片机 (2)

2)Matrix-8X8点阵屏幕 (3)

3)74LS154译码器 (3)

4)CMOS反相器 (4)

5)按键 (4)

6)7-SEG BCD (5)

2.硬件设计 (5)

五、心得体会 (7)

附录I(程序) (9)

附录II(运行截图) (16)

一、需求分析

我们的课程设计题目是基于51单片机和一些基础组件设计出一个贪吃蛇游戏。游戏的实现需要一个16x16的屏幕(由4个8x8的点阵屏组成)和5个按键,其中4个按键控制贪吃蛇的前进方向,另外一个按键可以使游戏重新开始。另外还需要一个显示BCD码的数字型LED灯组用于记录得分。

贪吃蛇游戏需要实现的功能是:游戏开始时会出现一个长度为init_length的贪吃蛇,和一个随机出现的苹果(必须是贪吃蛇蛇身以外的一个点)。玩家可以通过按键控制贪吃蛇的前进方向,但是只能转向,而不能向前或者向后,例如:当贪吃蛇向上行走时,只能通过左键和右键来让它左转或者右转,另外两个按键将失灵。

当贪吃蛇吃到苹果后,贪吃蛇尾部将会增加一个点,而屏幕上又会随机出现一个不与贪吃蛇重合的点。此时积分器加一。

当贪吃蛇马上就要“撞向”屏幕边缘时,会从相反的一边钻出来。所以“撞墙”并不会导致游戏结束。而当贪吃蛇吃到自身时则会使游戏结束,并且会自动回到游戏初始化时的状态。

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

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

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

本科时候做的⼀个课程作业,⾃⼰搭⼀个很简易的电路,⽐较有意思且易上⼿,故将之记录下来。(全套的仿真及代码,演⽰视频,课程报告以及PPT展⽰上传在。)

⼀. 实验⽬的

(1)通过对C51语⾔的理解,编写程序实现对贪吃蛇的有效控制;

(2)通过对51单⽚机硬件的学习,学会运⽤⾯包板,独⽴按键、点阵屏等,完成对完整电路的搭建过程;

(3)通过对Proteus仿真软件的学习,实现基于STC89C52单⽚机的8*8点阵贪吃蛇的硬件电路仿真。

⼆. 实验介绍

贪吃蛇是⼀款经典⼩游戏,其游戏的规则是:玩家通过四个⽅向键来控制蛇的移动,控制其在地图上吃⾖⼦。吃掉⾖⼦后蛇⾝相应加长,蛇⾝速度加快。蛇运动过程中撞到墙壁或蛇⾝,则⽴即结束本轮游戏。

三. 实现功能

(1)制作⼀个8*8点阵的贪吃蛇游戏;

(2)通过LED点阵屏为载体显⽰数据;

(3)外接4个独⽴按键作为输⼊端,分别控制蛇的移动⽅向(上、下、左、右);

(4)蛇头与墙壁或蛇⾝相撞,随即结束游戏并复位。

四. ⽅案设计

在该系统中,硬件部分包括STC89C52单⽚机,8*8点阵屏,4个按键;软件部分是在keil环境下⽤C51语⾔编写,设置蛇的初始段数为2点,并设置有障碍墙壁,游戏结束后⾃动复位。

(1)贪吃蛇的移动

在贪吃蛇的移动过程中,每次需要将蛇头要到的下⼀个LED灯点亮,对应蛇尾的LED灯熄灭。在程序中即是先把蛇尾位置的值传给蛇头的下⼀个位置,然后改变蛇尾的值即可。蛇头下⼀个位置的确定由蛇头和偏移量来确定,每次通过操作四个独⽴按键来控制蛇步进的偏移量。因⽽只要将蛇头的位置加上其偏移量的值,即可得到新的蛇头位置。

51单片机+8-8点阵实现的贪食蛇源代码

51单片机+8-8点阵实现的贪食蛇源代码

51单片机+8*8点阵实现的贪食蛇源代码

电路图和单片机仿真文件下载:51hei/bbs/dpj-20604-1.html 下面是源代码:

#include #define uchar unsigned char#define SNAKE 20 //最大长度#define TIME 50 //显示延时时间#define SPEED 71 //速度控制//#define keyenable 1sbit keyenable=P3;//方向使能/*sbit keyx=P0;//左右sbit keyy=P0 ;//上下*///sbit

up=P0;sbit up=P3;//downsbit down=P3;sbit right=P3 ;sbit left=P3;uch a r

x[SNAKE+1];uchar y[SNAKE+1];uchar time,n,i,e; //延时时间,当前蛇长,通用

循环变量,当前速度char addx,addy; //位移偏移量/********************延时

程序*********************/void delay(char MS){char us,usn;while(MS!=0){usn

= 0;while(usn!=0){us=0xff;while (us!=0){us--;};usn--;}MS-- ;}}/*******************************************判断碰撞

*******************************************/bit knock(){bit

基于51单片机实现的贪吃蛇游戏机开题报告

基于51单片机实现的贪吃蛇游戏机开题报告
基于51单片机实现的贪吃蛇游戏机开题报告
• 预期实现目标
以51单片机开发板为核心,通过操控“上”、“下”、 “左”、“右”按键来操控LCD12864显示屏上的贪吃 蛇行进的方向,获取食物,每获得一个食物,贪吃蛇 的长度将增大,达到一定长度时会进行晋级,同时贪 吃蛇运动速度加快。一旦在贪吃蛇的运动过程中碰到 屏幕边缘、障碍物或是蛇身,贪吃蛇死亡,游戏结束。
LCD1604显示游戏信息
TIME: 00:56 LEVEL: EASY SCORE:65
LCD1604
LCD12864显示游戏状态 按键由玩家控制游戏进行
LCD12864
• 工作大体流程
首先进行软件模块分析与硬件模块设想。接下来,使用 Altium Designer软件构件系统的硬件图,确定各部分模块 对应实现的功能,进行画PCB版,制板。使用Keil软件编 写程序,对应各模块功能模块化编写,同时依照电路图 焊接电路板,完成系统实物设计。最后,连接单片机, 调试程序,整体改进完善。
• 硬件实现基本方框图
学生电源
变压器
按键开关
方向按键
单片机 扬声器 LCD12864 LCD1602
• 成员分工
软件程序调试: PCB画图与制版: 焊接电路与调试:
wk.baidu.com
• 时间规划(第一周)
谢谢观看
• 预期实现目标

基于51单片机的贪吃蛇游戏

基于51单片机的贪吃蛇游戏

基于 51单片机的贪吃蛇游戏

063210

摘要:

本文讲的是基于STC89C51单片机为微处理器的贪吃蛇游戏,实现功能有随机产生果实,初始时为2节蛇身,吃到果实然后变长,然后通过数码管显示吃掉的个数即分数,通过16*16的1588BS显示蛇身和果实。软件用C语言进行编写,硬件采用键盘,点阵显示单片机最小系统。事先还通过Proteus进行仿真,仿真成功之后进行硬件搭建。

关键词:单片机;贪吃蛇;仿真

引言如今虽然51是8位微处理器,已经落伍了,但是现在各大高校,仍然对51进行开设课程讲解。51作为一个入门级的单片机,确实比较好理解,对51也将继续应用下去

1.

游戏实现功能

贪吃蛇通过4个8*8点阵组成的16*16点阵显示,然后通过stc89c51单片机作为MCU 进行控制,通过c语言进行编写,通过下载电路将hex文件下载到单片机里面。此游戏,通道8个键盘,实现上下左右,左上右上左下右下,八个方向进行移动。然后通过数码管进行显示吃到的果实的个数,也是得到的分数。

用8个键控制蛇运动的方向,设置边缘为墙壁。当头碰到墙壁或者自己时死亡,死亡之后,恢复到初始状态。

1.

1588BS点阵

1588BS内部就是一个8*8个发光二极管连接起来。一排8个二极管,有个共

阳极,如果把共阳极置1,剩下8个引脚只有置零就会亮,通过这种方式对某个

位置的点阵进行控制。

3.实现贪吃蛇的算法

实现贪吃蛇的基本过程为,就是通过点阵点亮蛇身,然后随机产生果实,也

点亮,通过键盘控制使得蛇身进行移动,吃到果实,蛇身变长。当头碰到墙壁或

者自己时,游戏结束。

基于51单片机与点阵的贪食蛇游戏机开发

基于51单片机与点阵的贪食蛇游戏机开发

基于51 单片机与8*8 点阵的贪吃蛇游戏机开发

目录

一、硬件设计

1、8*8LED 点阵的原理说明

本设计采用的点阵显示模块是 ARK-SZ411288K ,其原理结构图

如图 1 所示。 ARK-SZ411288K 显示模块是 8*8 点阵的显示模块,

从图 1 中可以看出, 8*8 点阵共需要 64个发光二极管组成,且每

个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置 1

电平,某一行置 0电平,则相应的图 1 8*8LED 点阵的原理图二极管就亮。 ARK-SZ411288K 可与 CPU 直接连接,根据引脚说明,将其各个引脚与相应的 I/O 口连接。

2、LED 阵列驱动电路

正向点亮一颗 LED ,至少也得 10~20 毫安,若电流不够大,则 LED 不够亮。而不管是 8051 的输入/输出口,还是 TTL 、CMOS的输出端,其高态输出电流都不是很高,不过 1~2毫安而已,因此,很难直接高态驱动 LED 。这时候就需要额外的驱动电路,本设计采用的是74HC595,用

74HC595 芯片驱动 LED 有以下特点:速度较快,功耗较小, LED 的数目多少随意,既可以控制共阴极的LED 显示器,也可以控制共阳极的 LED 显示器,可以软件控制 LED 的亮度,还可以在必要的时候关断显示(数据保留),以减小功耗,并可随时唤醒显示。用它设计的电路,不仅软硬件设计简单,而且功耗低,驱动能力强,占用的

I/O 口线较少,是一种造价低廉,应用灵活的

图 2 74HC595 管脚图

74HC595 内含 8 位串入、串 / 并出移位寄存器和 8 位三态输出锁存器。寄存器和锁存器分别有各自的时钟输入 (SCLK 和 SLCK) ,都是上升沿有效。当 SCLK 从低到高电平跳变时,串行输入数据 (SDA)移入寄存器;当 SLCK 从低到高电平跳变时,寄存器的数据置入锁存器。清除端 (CLR) 的低电平只对寄存器复位 (QS为低电平 ),而对锁存器无影响。当输出允许控制( EN )为高电平时, 并行输出 (Q0~ Q7)为高阻态,而串行输出 (QS)不受影响。 74HC595 最多需要 5 根控制线,即SDA、SCLK、SLCK、CLR 和 EN。其中 CLR 可以直接接到高电平,用软件来实现寄存器清零;如果不需要软件改变亮度, EN 可以直接接到低电平,而用硬件来改变亮度。把其余三根线和单片机的 I/O 口相接,即可实现对 LED 的控制。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于51单片机与8*8点阵的贪吃蛇游戏机开发

目录

一、硬件设计

1、8*8LED点阵的原理说明

本设计采用的点阵显示模块是ARK-SZ411288K,其原理

结构图如图1所示。ARK-SZ411288K显示模块是8*8点阵的

显示模块,从图1中可以看出,8*8点阵共需要64个发光二

极管组成,且每个发光二极管是放置在行线和列线的交叉点

上,当对应的某一列置1电平,某一行置0电平,则相应的图18*8LED点阵的原理图二极管就亮。ARK-SZ411288K可与CPU直接连接,根据引脚说明,将其各个引脚与相应的I/O 口连接。

2、LED阵列驱动电路

正向点亮一颗LED,至少也得10~20毫安,若电流不够大,则LED不够亮。而不管是8051的输入/输出口,还是TTL、CMOS的输出端,其高态输出电流都不是很高,不过1~2毫安而已,因此,很难直接高态驱动LED。这时候就需要额外的驱动电路,本设计采用的是74HC595,用74HC595芯片驱动LED有以下特点:速度较快,功耗较小,LED的数目多少随意,既可以控制共阴极的LED显示器,也可以控制共阳极的LED显示器,可以软件控制LED的亮度,还可以在必要的时候关断显示 (数据保留),以减小功耗,并可随时唤醒显示。用它设计的电路,不仅软硬件设计简单,而且功耗低,驱动能力强,占用的I/O口线较少,是一种造价低廉,应用灵活的设计方案。

图274HC595管脚图

74HC595内含8位串入、串/并出移位寄存器和8位三态输出锁存器。寄存器和锁存器分别有各自的时钟输入(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的QS和第二个74HC595的SDA 相接,数据即移入第二个74HC595中,照此一个一个接下去,可接任意多个。数据全部送完后,给SLCK一个上升沿,寄存器中的数据即置入锁存器。此时如果EN为低电平,数据即从并口Q0~Q7输出,把Q0~Q7与LED的8段相接,LED就可以实现显示了。要想软件改变LED的亮度,只需改变EN的占空比就行了[1]。

二、软件设计

1、主程序工作流程

主程序工作流程如图3所示,系统上电后首先对LED进行初始化,接着对定时器初始化,并启动定时器,接着执行程序主体逻辑,程序主体逻辑执行一遍后检查是否有中断发生。中断源有两个,一个是驱动贪吃蛇自动前行的定时中断,另一个是用户控制贪吃蛇移动方向的键盘中断,任意中断的到来都将改变贪吃蛇的当前状态。若当前没有中断发生,主程序继续判断蛇头是否碰壁或头尾相撞,若是,结束游戏,否则继续执行程序主体循环。

图3主程序工作流程

2、LED点阵初始化

对点阵初始化,先把点阵所有的信息清空,让其不显示任何信息,再在指定的位置显示蛇所处的最初位置和第一个果实的位置。初始化程序如下:

void Init()

{

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; //蛇头

x[2] = 0; y[2] = 0; //蛇尾1

addx = 0; addy = 0; //位移偏移

}

3、贪吃蛇的移动

当蛇没有吃到任何食物时,每次步进蛇头的将要到的下一个LED灯点亮,而蛇尾那个LED 灯会灭掉,程序设计时只要将蛇尾那点位置的值传给蛇头下一个位置的值,再改变蛇尾的值即可。而蛇头下一个位置根据蛇头和偏移量来确定,每次上下左右按键决定了蛇步进的偏移量,只要将蛇头的位置加上偏移量的值即得到新的蛇头位置。当蛇头碰到四周的墙壁或者碰到自己的身体,小蛇就立即毙命并结束游戏。

4、食物的随机出现

食物的出现是一种随机行为,所以必须做一个随机数,而且食物出现的位置不能与蛇的位置相同,也不能超出墙外,否则就要重置食物。这里使用程序中的定时计数器的低八位TL0的数值,由于TL0不断变化,不同的时间点数值不同,我这里使用的是C++语言里的stdlib.h文件库,使用里面的随机函数srand(),先利用srand(TL0)获得TL0的数值,再利用两次rand()%8分别得到食物出现的横纵坐标的位置。

三、调试及仿真

程序软件编译器使用uVision3。在用uVision3编写单片机程序时,因uVision3往往只能修改语法上的错误,对于算法上的问题不好检查,而直接下到单片机里又受电路板的限制而不方便调试,因此这里使用Proteus进行电路仿真。该软件具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能,同时有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

先在Proteus上绘制硬件电路(并未画出驱动电路),电路设计完成后就可以进行仿真。先双击单片机,把用uVision3编译生成的HEX文件指定为下载文件,点击PLAY键即可进行仿真。当出现ANAL YSER ERRORS时,表示电路有错误,列表中说明了具体的错误,必须要先排错才可以进行仿真。本设计仿真效果如图4所示。

相关文档
最新文档