基于51单片机的小游戏
基于51单片机的遥控赛车设计
![基于51单片机的遥控赛车设计](https://img.taocdn.com/s3/m/662603829ec3d5bbfd0a746d.png)
case(0x09):xc=0x40;;break; case(0x16):xc=0x02;break; case(0x0d):xc=0x08;;break; case(0x08):xc=0x11;break; case(0x5a):xc=0x44;break; case(0x42):xc=0x22;break; case(0x4a):xc=0x88;;break; default:break; } } delay(100); }
二、设计组成
1.硬件部分
赛车车轮及底盘、L289N 模块(两个)、51 单片机开发板、红外遥控器、导线若干、螺杆 螺母若干、南孚电池 4 节、充电宝一个。
赛车底盘
红外遥控
L289N 模块
51 单片机开发板
2、程序设计(基于 STM89C51 的程序设计)
开关:指示灯亮,小车停止运动 暂停:指示灯灭,小车停止运动 半前进: 前轮向前,后轮不动 半后退: 后轮向后,前轮不动
{
delay(1);
err--;
}
for(k=0;k<4;k++)
//共有 4 组数据
{
for(j=0;j<8;j++) //接收一组数据
{
err=60;
while((IRIN==0)&&(err>0))//等待信号前面的 560us 低电平过去
{
delay(1);
err--;
}
err=500;
while((IRIN==1)&&(err>0)) //计算高电平的时间长度。
按键
数据码
开关
45H
Mode
46H
创新周 小游戏打地鼠报告
![创新周 小游戏打地鼠报告](https://img.taocdn.com/s3/m/6e8c51b51a37f111f1855be9.png)
摘要单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。
它的应用必定导致传统的控制技术从根本上发生变革。
因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。
本课设是打地鼠游戏机的设计其主要功能是以按键和LED发光二级管相互配合,当有对应的LED点亮的时候,立即按下对应的按键即可,并得到相应的分数。
可分为5个模块如下:单片机控制模块,矩阵键盘模块,发光二极管阵列模块,LED数码管以及蜂鸣器发音模块组成。
当按下电源开关可以开始游戏,在打地鼠阵列中,会有地鼠(发光二级管亮)随机出现,当按下对应的按钮时,表示击打成功,分数加一,同时蜂鸣器发音提示,游戏结束时,可以通过观察四位数码管来看此次游戏所得的分数。
关键词:单片机、键盘矩阵、打地鼠、LED四位数码管、随机显示目录1 引言 .................................................................................................... 错误!未定义书签。
2 设计总体方案 ...................................................................................... 错误!未定义书签。
2.1 设计要求 .................................................................................... 错误!未定义书签。
2.2 设计思路 .................................................................................... 错误!未定义书签。
2.3 设计方案 .................................................................................... 错误!未定义书签。
基于51单片机的四驱无线遥控小车(附电路图,源代码)
![基于51单片机的四驱无线遥控小车(附电路图,源代码)](https://img.taocdn.com/s3/m/33dd7f4ce45c3b3567ec8bbc.png)
基于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(负极)都必须是接在一起的。
51单片机写的项目
![51单片机写的项目](https://img.taocdn.com/s3/m/ff224f2ea55177232f60ddccda38376baf1fe000.png)
51单片机写的项目
7. 电子门锁:使用51单片机和密码输入模块,设计一个电子门锁系统,可以通过输入正 确的密码来开启门锁。
8. 智能灌溉系统:利用51单片机和湿度传感器,设计一个智能灌溉系统,可以根据土壤 湿度自动控制灌溉设备的开关。
51单片机写的项目
51单片机是一种经典的单片机型号,广泛应用于嵌入式系统和电子设备中。以下是一些 常见的基于51单片机的项目示例:
1. 温度监测系统:使用51单片机和温度传感器,设计一个温度监测系统,可以实时监测 环境温度,并将数据显示在液晶显示屏上。
2. 电子琴:利用51单片机的IO口和蜂鸣器,设计一个简单的电子琴,可以发出不同音调 的声音,通过按键控制。
3. 智能家居控制系统:使用51单片机和各种传感器,设计一个智能家居控制系统,可以 实现对家居设备(如灯光、窗帘、空调等)的远程控制和自动化控制。
51单片机写的项目
4. 智能车辆:利用51单片机和各种传感器(如外线传感器、超声波传感器等),设计 一个智能车辆,可以实现避障、跟随等功能。
5. 电子时钟:使用51单片机和数码管,设计一个电子时钟,可以显示当前的时间,并具 备闹钟功能。
这些项目只是一些常见的示例,基于51单片机的项目种类繁多,可以根据实际需求和兴 趣进行创新和扩展。
基于51单片机的贪食蛇游戏机开发-精品
![基于51单片机的贪食蛇游戏机开发-精品](https://img.taocdn.com/s3/m/bc48101f76c66137ee0619ce.png)
第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 数据输入输出引脚。
贪吃蛇游戏单片机程序
![贪吃蛇游戏单片机程序](https://img.taocdn.com/s3/m/04f065650622192e453610661ed9ad51f11d5478.png)
贪吃蛇游戏单片机程序贪吃蛇游戏是一款经典的游戏,其简洁的规则和有趣的玩法使其成为了许多人喜爱的游戏之一。
在单片机中实现贪吃蛇游戏需要利用单片机的输入输出功能以及控制算法来完成游戏的控制和显示。
下面是一个简单的贪吃蛇游戏单片机程序的实现。
首先,我们需要定义一些常量和变量来表示游戏中的一些参数和状态。
比如,我们可以定义一个常量来表示屏幕的宽度和高度,以及一个变量来表示蛇的长度和当前的移动方向。
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';}然后,我们可以编写一个函数来更新蛇的位置。
毕业设计(论文)-基于单片机的俄罗斯方块游戏[管理资料]
![毕业设计(论文)-基于单片机的俄罗斯方块游戏[管理资料]](https://img.taocdn.com/s3/m/be6bf68931b765ce0408146f.png)
基于单片机实现的俄罗斯方块游戏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绪论计算机系统的发展已明显地朝三个方向发展;这三个方向就是:巨型化,单片化,网络化。
贪吃蛇游戏设计
![贪吃蛇游戏设计](https://img.taocdn.com/s3/m/1f9547246bd97f192279e9d9.png)
第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单片机的贪吃蛇游戏设计
![基于51单片机的贪吃蛇游戏设计](https://img.taocdn.com/s3/m/c1bfbf77f4335a8102d276a20029bd64783e62f0.png)
基于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)⾷物的出现在市场上所流⾏的贪吃蛇游戏中,⾷物的出现是⼀种随机⾏为,这在程序中需要做⼀个随机数来⽀撑该过程。
我们组在实验过程中也尝试了该过程,最终选择让⾷物出现在蛇尾的后⼀步,来执⾏整个程序。
与此同时,⾷物出现的位置不能与蛇的位置重合,也不能超出墙外,否则需要重置⾷物。
基于51单片机的贪吃蛇游戏设计(Proteus仿真含完整程序)
![基于51单片机的贪吃蛇游戏设计(Proteus仿真含完整程序)](https://img.taocdn.com/s3/m/be8585ecfab069dc51220104.png)
中北大学硬件大型实验说明书学生姓名:学号:学院: 计算机与控制工程学院专业: 计算机科学与技术题目: “贪吃蛇”游戏设计指导教师:职称: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。
三、概要设计根据我们要实现的功能,我们决定把这次课程设计分成三个部分。
第一个部分为硬件设计和连接部分。
基于单片机的贪吃蛇游戏设计学士学位论文
![基于单片机的贪吃蛇游戏设计学士学位论文](https://img.taocdn.com/s3/m/a22768154a7302768e9939ec.png)
基于单片机的贪吃蛇游戏设计学生姓名:学生学号:院(系):电气信息工程学院年级专业:指导教师:二〇一五年五月毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:日期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:日期:年月日导师签名:日期:年月日注意事项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
(完整word版)用51单片机汇编语言编写八位抢答器程序(word文档良心出品)
![(完整word版)用51单片机汇编语言编写八位抢答器程序(word文档良心出品)](https://img.taocdn.com/s3/m/c7731a603b3567ec102d8a73.png)
课题用51单片机汇编简易的8键数码蜂鸣抢答器日期:2013 年7 月10日随着科学技术的不断发展,促使人们学科学、学技术、学知识的手段多种多样。
抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。
但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低,减少兴致。
做为一个单位若专购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。
本设计是以8路抢答为基本理念。
考虑到依需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,只需要人为的编写汇编语言到单片机里,就能实现和满足不同的控制方案,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使LED数码管能够正确地显示倒计时间和抢答情况。
具体功能为:1,按下复位键代表主持人宣布抢答开始,同时数码管开始进行抢答倒计时,倒计时开始计时后方能开始抢答,抢答用按键形式;2,开抢答限定时间为30秒,超过30秒后倒计时停止,之后选手将抢答无效;3,先按下键的选手即为抢答成功,蜂鸣器将持续几秒将提示抢答成功,数码管将显示该选手的号码,同时相应的选手灯会亮;4,抢答成功的选手即先按下键盘,其他按键将锁定,无效;5,5,按下复位键进行下一次抢答。
本系统是借用单片机采用模块化设计的简易版抢答器,主控与参赛者设为终端分系统。
参赛者分系统设有:抢答按纽、计时显示、提示功能;主控分系统有:复位开始,计时显示。
其主要模块为:1.主控制器模块:采用AT89S51单片机控制;2.抢答器显示模块:数码管和灯显示;3.抢答成工提示模块:蜂鸣器提示;4.抢答器键盘:S1到S8八个按钮分别代表1-8号选手下图为系统主要功能模块图工作流程图为程序流程图程序源代码为org 0ajmp mainorg 0bhajmp top main:setb et0setb eamov tmod,#1 mov th0,#3ch mov tl0,#0b0h setb tr0mov dptr,#tabmov 31h,#30hmov r2,#20display:lcall l5msmov a,31hanl a,#0fhmovc a,@a+dptrmov p0,amov p2,#0fbhacall l5msmov a,31hswap aanl a,#0fhmovc a,@a+dptrmov p0,amov p2,#0f7hacall l5msljmp displayl5ms:mov r3,#0djnz r3,$retTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H top:L: MOV P3,#1FHMOV A,P3CJNE A,#1FH,L1SJMP aiL1: MOV 20H,AMOV P3,#0E3HMOV A,P3ai:mov tl0,#0b0h mov th0,#3chdjnz r2,lendmov r2,#20mov a,31hanl a,#0fhcjne a,#0,yimov a,31hsubb a,#7cjne a,#0h,c1sjmp eryi:mov a,31hdec acjne a,#0,c1sjmp erc2:mov 31h,asjmp lendc1:mov 31h,a lend:retier:mov r5,#1cjne r5,#0,erL2: ORL 20H,AMOV A,20HMOV P2,#0FEHMOV P0,#0F9Hmov p1,#7fhacall beepSJMP LL3: CJNE A,#0BBH,L4 MOV P0,#0A4Hmov p1,#0bfhacall beepL4: CJNE A,#07BH,L5MOV P0,#0B0Hmov p1,#0dfhacall beepL5: CJNE A,#0D7H,L6MOV P0,#99Hmov p1,#0efhacall beepL6: CJNE A,#0B7H,L7MOV P0,#92Hmov p1,#0f7hacall beepL7: CJNE A,#77H,L8MOV P0,#82Hmov p1,#0fbhacall beepL8: CJNE A,#0CFH,L9 MOV P0,#0F8Hmov p1,#0fdhacall beepMOV P0,#80Hmov p1,#0fehacall beepL10: aJMP Lbeep:clr eaclr et0clr tr0LCALL DLYCPL P2.4DJNZ R4,beepsjmp $DLY: MOV R6, #20 D1: MOV R7, #248DJNZ R7, $DJNZ R6, D1retEND心得体会通过课程设计使我进一步熟悉和掌握单片机内部结构和工作原理,了解单片机应用系统设计的基本方法和步骤通过利用ATC89C51单片机,理解单片机在自动化仪表中的作用以及掌握单片机的编程方法;通过本次设计,掌握单片机仿真软件kill的使用方法;理论联系实践,体现出大学生动手能力。
51单片机设计实例
![51单片机设计实例](https://img.taocdn.com/s3/m/506f5c44bfd5b9f3f90f76c66137ee06eff94ee8.png)
51单片机设计实例
1. 电子钟:使用51单片机设计一个数字时钟,可以显示小时和分钟,并能够设置闹钟功能。
2. 温度监控器:使用51单片机设计一个温度监控器,可以实时监测当前温度,并根据设定的阈值发出警报。
3. 电子秤:使用51单片机设计一个电子秤,可以精确测量物体的重量,并显示在LCD屏幕上。
4. 电子门锁:使用51单片机设计一个电子门锁系统,可以使用密码或者指纹进行解锁,并记录进出门的时间。
5. 智能家居控制器:使用51单片机设计一个智能家居控制器,可以通过手机APP控制家庭中的灯光、空调、窗帘等设备。
6. 智能车:使用51单片机设计一个智能车,可以根据传感器检测到的环境信息进行自主导航和避障。
7. 电子琴:使用51单片机设计一个简单的电子琴,可以通过按键发出不同的音符。
8. 电子游戏机:使用51单片机设计一个简单的电子游戏机,可以玩一些简单的游戏如打砖块、赛车等。
9. 电子宠物:使用51单片机设计一个虚拟宠物,可以通过按钮和
显示屏与宠物进行互动,喂食、玩耍等。
10. 无线遥控器:使用51单片机设计一个无线遥控器,可以控制电视、空调、音响等家电设备。
挑战十秒游戏,概率可调
![挑战十秒游戏,概率可调](https://img.taocdn.com/s3/m/fab8b8c6e45c3b3566ec8b66.png)
1
按钮
4
导线
若干
原理图
程序
#include <reg52.h>
#include "intrins.h"
typedef unsigned int u16;//???????????
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
case(1):
LSA=1;LSB=0;LSC=0; break;
case(2):
LSA=0;LSB=1;LSC=0; break;
case(3):
LSA=1;LSB=1;LSC=0; break;
}
P0=DisplayData[4-i];
delay(100);
P0=0x00;
}
}
void Timer1Init()//定时器初始化
“挑战十秒”小游戏(概率可调)设计
|
|
|
|
|
|
|
|
||Βιβλιοθήκη ||||
|
前言
“挑战十秒”小游戏在APP流行之后,已经被许多商家用于吸引顾客的工具,我们也可以用51单片机做出来。
利用51单片机定时器实现精准计时,按钮用于控制开始/停止,调整“挑战10秒”成功机率
元器件
名称
数量
80C52单片机
1
74HC573
1
if(P3=0XFC){EE=10;}//EE的大小决定的“10秒”显示的时间,时间越长,成功机率越大
while(1)
{
if(i10MSi==10){i100MSi++;i10MSi=0;fuck++;}
基于51单片机的打地鼠游戏
![基于51单片机的打地鼠游戏](https://img.taocdn.com/s3/m/d4fdf1f50975f46527d3e187.png)
《电子系统设计课程设计》项目设计书项目名称打地鼠小组成员1小组成员2小组成员3专业任课教师成都理工大学信科院电子系2013年6月1项目名称,并简要说明应用背景。
项目名称:打地鼠应用背景:打地鼠游戏是人们生活中常见的一种休闲小游戏。
此游戏玩法简单,考验人们的反应速度。
开发者可以根据人们兴趣开发出具有多功能的打地鼠游戏,比如升级、道具、过关等,增加游戏的趣味性。
2项目设计需求(包括功能描述和性能设计指标)功能描述:1.启动系统,液晶屏第一排随机显示一个1-9的数字,显示地鼠(Ö)或地雷(*),中间显示剩余时间,右边显示分数;液晶屏第二排显示游戏的英文名称——打地鼠。
2.开始游戏后,在背景音乐伴随下显示“Ready Go”,之后正式进入游戏游戏历时2min,随着时间的增加,数字显示速度加快,游戏中课随时按K10键暂停,再次按则恢复游戏。
3.进入游戏界面后,随机产生地鼠和地雷(地雷产生的概率为10%),但随着时间的增加,地雷出现的概率会增加,数字更新的速度也越快。
按键分别对应独立键盘的9个按键,按下某个键即代表击打相应位置。
4.若击中地鼠:正常情况下分数加1,若在较短时间(实际为地鼠产生到消失的前一半时间内)击中,则“快速反应,双倍加分”,即分数加2。
若击中地雷,则分数减1,若未按下相应键,则分数加1。
5.游戏结束,背景音乐停止,保留最高分,分数和时间在按复位后刷新。
性能设计指标:能通过复位,玩家可以持续玩游戏。
自动保存和人为清除游戏数据。
3设计方案3.1 系统设计框图及原理阐述设计框图:原理阐述:1)复位电路复位条件:89C52单片机复位需要一个长达24个时钟周期的高电平才能复位,复位的作用就是使程序的指针指向地址0,每个程序都是从地址0开始执行,所以复位的概念就是让程序从头开始执行。
复位原理:该复位电路具有上电复位的功能,此功能是由C3实现的。
当系统上电时C3有一个充电放电的过程,放电过程会产生一个高电平,放电的时间根据公式(RCt )计算。
开题报告基于单片机的俄罗斯方块游戏系统的设计
![开题报告基于单片机的俄罗斯方块游戏系统的设计](https://img.taocdn.com/s3/m/e107d236fd4ffe4733687e21af45b307e871f9c7.png)
开题报告基于单片机的俄罗斯方块游戏系统的设计毕业设计开题报告题目基于单片机的俄罗斯方块游戏系统的设计一、本课题的研究背景俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。
这款游戏最初是由苏联的游戏制作人制作的,它看似简单但却变化无穷,令人上瘾。
相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。
究其历史,俄罗斯方块最早还是出现在PC机上,而我国的用户都是通过红白机了解、喜欢上它的。
现在联众又将重新掀起这股让人沉迷的俄罗斯方块风潮。
对一般用户来说,它的规则简单,容易上手,且游戏过程变化无穷,而在"联众俄罗斯方块"中,更有一些联众网络游戏所独有的魅力――有单机作战与两人在线对战两种模式,用户可任选一种进行游戏。
网络模式还增加了积分制,使用户既能感受到游戏中的乐趣,也给用户提供了一个展现自己高超技艺的场所。
俄罗斯方块游戏可以说是随计算机的发展而发展,并不断推陈出新演变出各种类似游戏, 深受广大玩家喜爱。
这个游戏有的简单, 有的复杂, 但其根本原理是一样的都是对运动的方块进行组合, 来训练玩家的反应能力。
本文利用单片机进行俄罗斯方块设计,采用51汇编语言进行编程,基于汇编语言的原因是在编写程序的过程中,对于程序的执行会有一个比较直观的表现。
二、国内外研究现状1984年6月.俄罗斯科学院的数学家帕基特诺夫在空闲时编出了一个游戏程序.用来测试计算机的性能。
帕基特诺夫从拼图游戏里得到灵感,设计出了俄罗斯方块。
最早的俄罗斯方块背景颜色图案单一,发展到今天,各种版本的画面变得多姿多彩。
虽最初版本没有积分和通关,但帕基特诺夫仍然玩上了瘾。
这样一种看来粗糙的游戏.却在当年迅速受到欢迎。
1988年,罗杰斯在美国的一个展览上看到了俄罗斯方块。
觉得非常好玩,并从中立刻嗅到了巨大商机。
他先与日本游戏厂商任天堂达成口头协议。
然后出发前往莫斯科与莫斯科科学院谈判,最终罗杰斯于1989年代表任天堂取得了俄罗斯方块在家用机上的授权。
基于单片机的射击游戏
![基于单片机的射击游戏](https://img.taocdn.com/s3/m/fbf5c72aed630b1c59eeb523.png)
毕业设计(论文)题目:基于51单片机智能游戏机开发设计院系:专业:学生姓名:学号:指导教师:二〇一二年六月目录摘要 (4)第一章前言 (6)本系统主要研究内容 (7)第二章系统组成及工作原理 (8)2.1系统组成 (8)2.2工作原理说明 (8)2.3系统组成框图 (9)第三章系统软硬件模块开发 (10)3.1 系统硬件总体设计 (10)3.1.1 AT89C51单片机简介 (10)3.1.2 JM160128LCD简介 (14)3.2 显示模块 (18)3.3 按键控制模块 (18)3.4 系统软件模块 (19)第四章智能游戏机仿真及硬件实现 (23)4.1 系统运行环境及开发 (23)4.1.1 KEIL Cx51软件的使用 (23)4.1.2 操作说明 (24)4.2电路硬件原理图 (25)4.3 软件设计方案 (26)4.4 仿真结果 (28)第五章结论及展望 (31)致谢 (32)参考文献 (33)附录 (34)摘要本文主要内容是利用AT89C51单片机与160*128的液晶组合设计的模拟射击游戏,实现模拟简单的射击游戏,在像素为160*128的液晶上显示模拟的手枪图标,并可通过按键控制手枪的上下移动和射击并判断是否击中目标然后统计得分显示出来,每次击中目标时蜂鸣器会发出击中音效,另有重新开始的功能键。
本课题是基于单片机技术和160*128的广泛应用而提出。
本次做的模拟射击游戏是以单片机为核心,结合JM160128ALCD 显示器,再配以相应的软件,达到实现模拟射击游戏的目的. 近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
基于51单片机的打地鼠游戏设计(源码齐全)
![基于51单片机的打地鼠游戏设计(源码齐全)](https://img.taocdn.com/s3/m/56ca780bcc17552707220846.png)
12864 液晶显示
(一) 液晶显示模块概述
12864 中文 汉字图形点阵液晶显示模块,可显示汉字及图形,内置8192 个中 文汉字(16X16 点阵)、128个字符(8X16 点阵)及64X256 点阵显示RAM (GDRAM)。 主要技术参数和显示特性: 电源:VDD 3.3V~+5V(内置升压电路,无需负压); 显示内容:128 列× 64 行 显示颜色:黄绿/蓝屏/灰屏 显示角度:6:00 钟直视 LCD 类型:STN 与MCU 接口:8 位或4 位并行/3 位串行
case 1 : if(d2==0){d2=1;lcd_pos(1,1);lcd_wdat(0x02);} else goto again;break;
case 2 : if(d3==0){d3=1;lcd_pos(1,2);lcd_wdat(0x02);} else goto again;break;
case 7 : if(d8==0){d8=1;lcd_pos(2,3);lcd_wdat(0x02);} else goto again;break;
default: break;
}
/* **若该位置已有地鼠,则再回到 again 位置再出现一次随机数,直到不重复为止
*/ }
} Showone 函数用在定时器 0 中,每隔一段时间就出现一只地鼠
3
(二) 扩展设计
4. 游戏计分,用一全局变量 score (初始值为零),每打中一个地鼠 score 的值 加一,游戏结束,显示得分数据,并与 TOP3 最高分数进行对比,判断是否存 储此数据
5. 游戏时间设为 60 秒,用单片机内部定时器即可,游戏时间一到,游戏结束。 6. 游戏等级设计。每 9 分一个等级,分数达到 9 分后进入下一个等级,每进入下
单片机小游戏实训报告
![单片机小游戏实训报告](https://img.taocdn.com/s3/m/4d80676c0a4c2e3f5727a5e9856a561252d321ab.png)
一、实训目的通过本次单片机小游戏实训,旨在掌握单片机的基本原理和编程方法,提高动手实践能力,锻炼团队合作精神。
本次实训以设计一款基于单片机的简单游戏为主,通过对硬件电路的搭建和软件编程的实现,完成游戏功能的开发。
二、实训内容1. 游戏选题与规则本次实训设计一款基于单片机的贪吃蛇游戏。
游戏规则如下:(1)玩家通过四个方向键控制蛇的移动,蛇在地图上吃豆子,吃掉豆子后蛇身相应加长,速度加快。
(2)蛇运动过程中,若撞到墙壁或蛇身,则游戏结束,并自动复位。
(3)游戏目标:在限定时间内,获取最高分数。
2. 硬件电路搭建(1)单片机:选用STC89C52单片机作为游戏的核心控制单元。
(2)显示屏:选用88点阵屏作为游戏画面的显示载体。
(3)按键:选用4个独立按键,分别控制蛇的上下左右移动。
(4)电源:选用5V直流电源为电路供电。
3. 软件编程(1)编程环境:使用Keil C51进行软件编程。
(2)编程语言:采用C语言进行编程。
(3)主要功能模块:a. 初始化模块:初始化单片机、显示屏、按键等硬件资源。
b. 游戏主循环模块:实现蛇的移动、豆子的生成、分数计算等功能。
c. 显示模块:将蛇、豆子、分数等信息显示在88点阵屏上。
d. 检测模块:检测按键状态,控制蛇的移动。
e. 结束模块:游戏结束后,自动复位并显示最终分数。
三、实训过程1. 设计阶段(1)分析游戏规则,确定游戏功能模块。
(2)选择合适的硬件设备,绘制电路原理图。
(3)编写软件需求规格说明书。
2. 搭建电路阶段(1)根据电路原理图,搭建硬件电路。
(2)连接单片机、显示屏、按键等硬件设备。
3. 编程阶段(1)在Keil C51环境中编写程序。
(2)编译、调试程序,确保程序正常运行。
4. 调试阶段(1)检查硬件电路连接是否正确。
(2)调试程序,优化游戏性能。
(3)测试游戏功能,确保游戏流畅、稳定。
四、实训成果1. 成功设计并实现了一款基于单片机的贪吃蛇游戏。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sbit P3_0=P3^0;sbit P3_2=P3^2;sbit P3_3=P3^3;
//蜂鸣器位外部中断0外部中断1
sbit P3_7=P3^7;sbit P3_6=P3^6;sbit P3_1=P3^1;//指示灯位
sbit P0_7=P0^7;sbit P0_6=P0^6;sbit P0_5=P0^5;sbit P0_4=P0^4;
while(1)
{wait=0;//游戏已开始,wait置0
if(knock()){pace=SPEED;break;} //判断是否碰撞
/*************显示部分************************/
if(P0_6&P0_4)display(pace); //判断是否速度运动
sbit P2_3=P2^3;sbit P2_2=P2^2;sbit P2_1=P2^1;sbit P2_0=P2^0;
uchar x[SNAKE+1];//蛇身的坐标行
uchar y[SNAKE+1]; //蛇身的坐标列
uchar n,i,pace,xz;//当前蛇长,通用变量,当前速度,选择游戏标志
判断是否碰撞,是则返回1,否则返回0
**************************************************************/
bit knock()
{bit k=0;
if(x[1]>7||y[1]>7)k=1; //撞墙
for(i=2;i<n;i++)
ห้องสมุดไป่ตู้if((x[1]==x[i])&(y[1]==y[i]))k=1; //撞自己
//暂停增关卡,加速减关卡,退出加速
//doruaimifa
sbit P0_2=P0^2;sbit P0_1=P0^1;sbit P0_3=P0^3;sbit P0_0=P0^0;
//左下右上
// saolaxi退出
sbit P2_7=P2^7;sbit P2_6=P2^6;sbit P2_5=P2^5;sbit P2_4=P2^4;
for(i=3;i<SNAKE+1;i++)y[i]=100;//初始化虚拟蛇身
}
do
{x[0]=rand()%8;y[0]=rand()%8;//产生随机果实
again=0;
for(i=1;i<n;i++)//判断是否与蛇身重叠
case 5:if(addx!=1||addy!=-1){addx=-1;addy=1;}break;//左上
case 9:if(addx!=-1||addy!=-1){addx=1;addy=1;}break;//右上
case 6:if(addx!=1||addy!=1){addx=-1;addy=-1;}break;//左下
/*************选关******************************************/
if(~P0_6)//增关卡
{delay10ms(2);//去抖动
if(~P0_6)
{if(++guanqia<=7)//最大到7关
{P3_7=~guanqia_2;P3_6=~guanqia_1;P3_1=~guanqia_0;
P2=~mux(y[i]);P1=~mux(x[i]);//按点依次显示
delay1ms(1);//显示延时1ms
}
}
}
/*****外部中断1,用于切换游戏,xz=0为贪吃蛇,xz=1为电子琴******/
void my_int1(void) interrupt 2
{delay10ms(2); //去抖动
{switch(~P0)
{case 1:addx=0;addy=addy==-1?-1:1;break;//上
case 2:addx=0;addy=addy==1?1:-1; break;//下
case 4:addy=0;addx=addx==1?1:-1; break;//左
case 8:addy=0;addx=addx==-1?-1:1;break;//右
仿真图:
PCB图:
#include <reg52.h>
#include<stdlib.h>
#include"ours.h"
#define uchar unsigned char
#define SNAKE 20 //最长蛇身
#define SPEED 50 //运动速度控制,值越大,则扫描整个蛇
//身的时间越长,即表现为移动速度慢
else display(10);//当P0^4或P0^6被按下时加速运动
if(~P0_5)break;//判断是否退出
/*************判断是否吃东西,及进入下一关**************/
if((y[0]==y[1]+addx)&&(x[0]==x[1]+addy)) //如果吃到
char bdata guanqia;//定义关卡,可谓寻址,便于控制指示灯
sbit guanqia_0=guanqia^0;sbit guanqia_1=guanqia^1;sbit guanqia_2=guanqia^2;
char addx,addy; //移动方向,同直角坐标系,addx为横向,addy为纵向
return k;
}
/**************************************************************
键位处理
**************************************************************/
void key_press()
{n++;//蛇身加1
if(n==SNAKE+1)//如果进入下一关
{n=3;//蛇身长从2开始
pace=pace-MQ; guanqia++;//运动加速,关卡加1
P3_7=~guanqia_2;P3_6=~guanqia_1;P3_1=~guanqia_0;
//将关卡的值用三个指示灯显示出来
for(i=3;i<SNAKE+1;i++)x[i]=100;//初始化虚拟蛇身
*******主程序***************************************
***************************************************************/
void main(void)
{EA=1;//开总中断
EX0=1;//开外部中断0
TCS:while(1)
{/**************初始化游戏**********************/
for(i=3;i<SNAKE+1;i++)x[i]=100;//初始化虚拟蛇身
for(i=3;i<SNAKE+1;i++)y[i]=100;//初始化虚拟蛇身
n=3; //初始蛇身长为n-1
//将其值用发光二极管以二进制的形式显示出来
pace=pace-MQ; //加速
}else --guanqia;
while(~P0_6)display_p(1);
//直到松开按键才跳出,以防连续增加关卡
}
}
if(~P0_5)//减关卡
{delay10ms(2);
if(~P0_5)
{if(--guanqia>=1)
{P3_7=~guanqia_2;P3_6=~guanqia_1;P3_1=~guanqia_0;
pace=pace+MQ;
}else ++guanqia;
while(~P0_5)display_p(1);
}
}
}
/*************贪吃蛇游戏正在运行**************************/
P3_7=~guanqia_2;P3_6=~guanqia_1;P3_1=~guanqia_0;//显示关卡
while(1)//等待选择游戏
{wait=1;//等待选择游戏
if(xz) goto DZQ;//如果xz=1,则进入电子琴
display_p(1);//显示贪吃蛇初始位置
if(~P0_3|~P0_0)break;//如果按上或右键,则开始游
EX1=1;//开外部中断1
/***********************************************************************
*****************贪吃蛇****************************************
************************************************************************/
again=0;
for(i=1;i<n;i++)//判断是否与蛇身重叠
if((x[0]==x[i])&&(y[0]==y[i]))again=1;
}while(again);//若重叠则再次产生
/************等待开始游戏,贪吃蛇开始前可选关****************/
guanqia=1;//第一关
}