基于51单片机的小游戏
- 格式:doc
- 大小:141.00 KB
- 文档页数:13
摘要单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。
它的应用必定导致传统的控制技术从根本上发生变革。
因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。
本课设是打地鼠游戏机的设计其主要功能是以按键和LED发光二级管相互配合,当有对应的LED点亮的时候,立即按下对应的按键即可,并得到相应的分数。
可分为5个模块如下:单片机控制模块,矩阵键盘模块,发光二极管阵列模块,LED数码管以及蜂鸣器发音模块组成。
当按下电源开关可以开始游戏,在打地鼠阵列中,会有地鼠(发光二级管亮)随机出现,当按下对应的按钮时,表示击打成功,分数加一,同时蜂鸣器发音提示,游戏结束时,可以通过观察四位数码管来看此次游戏所得的分数。
关键词:单片机、键盘矩阵、打地鼠、LED四位数码管、随机显示目录1 引言 .................................................................................................... 错误!未定义书签。
2 设计总体方案 ...................................................................................... 错误!未定义书签。
2.1 设计要求 .................................................................................... 错误!未定义书签。
2.2 设计思路 .................................................................................... 错误!未定义书签。
2.3 设计方案 .................................................................................... 错误!未定义书签。
基于51单片机的四驱无线遥控小车(附电路图,源代码)遥控小车大家都玩过,网上也有各种DIY小车的制作详解,本文介绍的这个遥控小车和其他的作品大同小异,但作为单片机设计,这次设计主要强调单片机控制,就是说,这个小车是由单片机控制的,把单片机按键发送程序、无线模块使用、电机驱动是本教程的核心内容。
一硬件组装1 小车运动部分所需工件:直流电机4个,L293D电机驱动模块,蓄电池一块,车身底盘说明:车身底盘大家根据自己的购买力自行购买,蓄电池也是,至于L293D模块,淘宝上卖的比较贵,不过我用的就是成品模块,效果非常好,钱不多的同学可以自己买芯片,自制模块,原理很简单,官方资料是很详细的;或者改为继电器控制都可以,具体看自己的实际购买力。
用模块的好处是,模块可以输出5V 电源给系统供电,详细请参考淘宝网。
如果你买的是现成的底盘,那就和我的一样了,组装实在是没啥可说的,把电机固定上去就是,不行?别开玩笑了,小学生都会的!至于想自己做底盘的,我想说,要搞结实点,咱这次的小车马力是很足的,因为有电机驱动,速度比较快(不带减速齿轮的底盘一定要小心,速度非常的快),后劲也足,不小心撞墙很正常,所以不好的底盘就得小心了!组装好后,就是电机和驱动模块的接线了,下面我就详细的说一下L293D模块的使用:L293D是专门的电机驱动芯片,工作电压5V,驱动电压输入可达36V,输出电流正负600ma,4个控制端,4个输出端,原理如图:其中A为输出控制端,Y为输出控制端,1A即控制1Y,以此类推。
1,2EN 3,4EN需要短接,芯片最大工作电压不得超过7V。
封装图:Vcc1接工作电压,5V,Vcc2接电机的驱动电源,一般来说,这个电压要比5V 高,我用的是12V蓄电池,就把12v的正极接到VCC2,要记住的是,芯片、单片机、蓄电池电源是需要共地的,不要觉得你电机是12V,单片机控制部分是5V就把电源完全独立开来,正极是完全独立的没错,但是GND(负极)都必须是接在一起的。
第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电位器可调端RS I 数据\指令选择:高电平:数据D0-D7将送入显示RAM;低电平:数据D0-D7将送入指令寄存器执行。
R/W I 读\写选择:高电平:读数据;低电平:写数据。
E I 读写使能,高电平有效,下降沿锁定数据。
DB0 I/O 数据输入输出引脚。
DB1 I/O 数据输入输出引脚。
DB2 I/O 数据输入输出引脚。
贪吃蛇游戏单片机程序贪吃蛇游戏是一款经典的游戏,其简洁的规则和有趣的玩法使其成为了许多人喜爱的游戏之一。
在单片机中实现贪吃蛇游戏需要利用单片机的输入输出功能以及控制算法来完成游戏的控制和显示。
下面是一个简单的贪吃蛇游戏单片机程序的实现。
首先,我们需要定义一些常量和变量来表示游戏中的一些参数和状态。
比如,我们可以定义一个常量来表示屏幕的宽度和高度,以及一个变量来表示蛇的长度和当前的移动方向。
c#define SCREEN_WIDTH 16#define SCREEN_HEIGHT 8#define SNAKE_MAX_LENGTH 64int snake_length;int snake_direction;接着,我们需要定义一个数据结构来表示蛇的身体,可以使用一个数组来表示蛇的每一节身体的位置。
同时,我们还需要定义一个数据结构来表示食物的位置。
cstruct point {int x;int y;};struct point snake[SNAKE_MAX_LENGTH];struct point food;然后,我们可以编写一个函数来初始化游戏的状态。
在这个函数中,我们需要初始化蛇的位置和长度,以及随机生成食物的位置。
void init_game{// 初始化蛇的位置和长度snake[0].x = SCREEN_WIDTH / 2;snake[0].y = SCREEN_HEIGHT / 2;snake_length = 1;// 随机生成食物的位置food.x = rand% SCREEN_WIDTH;food.y = rand% SCREEN_HEIGHT;}接下来,我们需要编写一个函数来处理用户输入,并更新蛇的移动方向。
这个函数可以通过读取按键的状态来实现,比如可以通过一个变量来记录当前的按键状态。
cvoid handle_input{// 读取按键状态int key = read_key// 根据按键状态更新蛇的移动方向if (key == 'W' && snake_direction != 'S') {snake_direction = 'W';} else if (key == 'S' && snake_direction != 'W') {snake_direction = 'S';} else if (key == 'A' && snake_direction != 'D') {snake_direction = 'A';} else if (key == 'D' && snake_direction != 'A') {snake_direction = 'D';}然后,我们可以编写一个函数来更新蛇的位置。
基于单片机实现的俄罗斯方块游戏MCU based Russia block game摘要本设计是通过AT89S52单片机来实现俄罗斯方块游戏的设计,使用C语言进行编程,并通过Proteus来进行仿真。
本设计要实现的基本功能是:应用按键来控制方块的变换与移动;消除一行并计分;消除多行额外奖励记分,方块堆满时结束游戏等俄罗斯方块的基本功能。
单片机在手持娱乐设备上的应用具有非常大的潜力,它能将其带入到一个新的阶段。
为了解决外部电路图,必须充分了解所用液晶的显示方法和单片机的外部接口功能,和所需要处理的逻辑关系;还要理解LCD液晶的控制原理,来通过数据端口和控制端口来实现画面在液晶上面的显示。
程序则要求对外部电路了解的情况下完成自己所需要的功能,并将所要完成的功能用编程语言的形式来实现。
然后通过Protues仿真实现通过外部按键来控制各种不同图形的方块来玩游戏,并且实现记录分数和通过过关数来改变方块下降的速度。
最后将程序下载至AT89S52单片机并进行实际运行,实际运行表明,本设计可以实现基本的游戏功能,达到预期的目的。
关键词:AT89S52;C语言;Proteus仿真;LCD液晶ABSTRACTThis design is achieved through the AT89S52 microcontroller Tetris game design, programming using C language, and carried out by proteus simulation.The design to achieve the basic functions are: application buttons to control the box, change and movement; eliminate line and scoring; eliminate multi-line incentive points, the game ends when the box filled with basic functions such as Tetris. MCU in the application of handheld entertainment devices have great potential, it can be brought to a new stage. In order to solve the external circuit, we must fully understand the liquid crystal display method and external interface MCU features, and the need to address the logical relationship; also understand that the principle of LCD liquid crystal control to a data port and control port to achieve the above the LCD screen display.Program requires knowledge of the external circuit where they need to complete the function and the function to be completed in the form of programming language used to achieve. Simulation then protues buttons to control an external box to play a variety of graphical games, and achieve record number of scores and the relationship had to change the speed of the module down. Finally, the program downloaded to AT89S52 MCU and the actual operation, the actual operation indicate that this design can achieve basic game functions, to achieve the desired purpose.Key Words:AT89S52; C language; Proteus simulation; LCD liquid cryst目录1绪论 (1)课题背景 (1)电子游戏及其分类 (1)电子游戏发展现状 (2)电子游戏国外发展现状 (2)电子游戏国内发展现状 (3)2整体设计方案 (5)系统的核心部分单片机 (5)单片机的选择 (5)AT89S52引脚功能描述 (7)晶振特性 (9)液晶显示模块 (10)液晶显示控制驱动器HD61202的特点 (10)液晶显示控制驱动器HD61202的引脚功能 (10)液晶显示控制驱动器HD61202的指令系统 (11)HD61202的软件设计 (12)JM12864J的电路结构特点 (15)JM12864J的应用 (15)键盘电路 (17)3系统程序的设计 (17)俄罗斯方块驱动流程图 (17)俄罗斯方块所有绘图工作流程图 (18)俄罗斯方块中按下键的流程图 (19)俄罗斯方块所有绘图工作流程图 (20)4系统仿真 (22)PROTUES软件介绍 (22)Keil软件介绍 (22)俄罗斯方块系统PROTUES仿真 (24)5实物的制作与调试 (26)电路的焊接 (26)系统性能测试与功能说明 (27)结论 (28)参考文献 (29)附录1:C语言程序 (29)附录2:电路原理图 (59)附录3:英文资料及中文翻译 (60)致谢 (76)1绪论计算机系统的发展已明显地朝三个方向发展;这三个方向就是:巨型化,单片化,网络化。
第2期2019年1月No.2January,2019目前,科技的发展,尤其是微电子、计算机软件和应用技术,使人们的日常生活变得丰富多彩。
单片机(单片机)作为微电脑家庭成员,其结构独特、稳定性好、价格低廉,在嵌入式领域得到广泛应用[1-2]。
本文利用计算机上传统的蛇游戏设计,利用Proteus 仿真软件、硬件、8×8点矩阵的单片机、按键和其他硬件平台,C 语言编程,实现了便携式蛇游戏。
1 本游戏基本功能将蛇游戏的8×8点矩阵,系统与MCU C 语言软件设计,系统通过LED 点阵屏幕作为载波显示数据,有4个输入表示4个控制键(上下左右)。
部分系统硬件是AT89C52单片机,8×8点矩阵屏幕,4个键,软件部分用C 语言编写,在keil 环境中运行游戏以及隔墙,在游戏结束时自动重置。
具体要求:(1)4个按钮用来控制蛇的方向,并且设置墙壁。
(2)当蛇碰到墙壁和自己的身体时死亡。
(3)如果蛇死亡了,则表示Game Over ,系统将会自动复位[3]。
2 系统设计方案硬件运用了单片机技术和C 程序设计技术,通过点阵显示屏来显示。
软件采用C 语言编程,方便灵活。
设计蛇的理念和原则:通过点阵屏幕点亮一个点,然后照亮另一个点,形成了“蛇”,为蛇晶格屏幕上选择一个点食物,通过手动按钮蛇,并确定是否抢上。
找到食物,吞下食物,蛇会生长,直到蛇咬它的尾巴或撞到墙上,然后再开始。
系统的结构框图如图1所示,基本结构可以区分为三大部分[4-5]。
3 系统硬件电路设计3.1 单片机最小系统模块单片机的最小系统是一个可以正常工作的系统,它可以有最小的组件和一个单片机。
根据52单片机的要求,最小系统包括单片机、复位电路和晶体振动电路。
单片机接口主要用于PC 机和其他外部设备的连接[6-8]。
复位电路:单片机的复位时间直接受非极性电容C4的影响,容量大小一般为10~30 μF ,设计采用10 μF ,52单片机常见的复位模式为自动复位和按键复位。
基于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灯熄灭。
在程序中即是先把蛇尾位置的值传给蛇头的下⼀个位置,然后改变蛇尾的值即可。
蛇头下⼀个位置的确定由蛇头和偏移量来确定,每次通过操作四个独⽴按键来控制蛇步进的偏移量。
因⽽只要将蛇头的位置加上其偏移量的值,即可得到新的蛇头位置。
(2)⾷物的出现在市场上所流⾏的贪吃蛇游戏中,⾷物的出现是⼀种随机⾏为,这在程序中需要做⼀个随机数来⽀撑该过程。
我们组在实验过程中也尝试了该过程,最终选择让⾷物出现在蛇尾的后⼀步,来执⾏整个程序。
与此同时,⾷物出现的位置不能与蛇的位置重合,也不能超出墙外,否则需要重置⾷物。
中北大学硬件大型实验说明书学生姓名:学号:学院: 计算机与控制工程学院专业: 计算机科学与技术题目: “贪吃蛇”游戏设计指导教师:职称: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单片机开发板,Keil uVision3,ISIS 7 Professional。
三、概要设计根据我们要实现的功能,我们决定把这次课程设计分成三个部分。
第一个部分为硬件设计和连接部分。