基于51单片机与点阵的贪食蛇游戏机开发
基于单片机和液晶显示器的游戏开发
龙源期刊网
基于单片机和液晶显示器的游戏开发
作者:王晓威唐叔进邢瑞
来源:《电子世界》2005年第07期
摘要:提出了以单片机和彩色液晶显示器为硬件基础开发游戏的思想。
并具体介绍贪吃蛇游戏的开发过程。
同时给出了完整的硬件电路原理图与主要程序流程图。
单片机凭着其强大的功能、低廉的价格和体积小等优点,在许多领域中都得到了广泛的应用。
而当前在游戏开发中,单片机并没有充分显示出它的这些特点。
而彩色液晶显示器具有功耗低、显示信息量大、显示效果逼真等特点。
所以若用彩色液晶显示器为游戏提供界面,一定会受到欢迎。
本文介绍了以8031单片机与YD-602S 型彩色液晶显示器接口电路和贪吃蛇游戏的软件设计。
毕业设计(论文)-基于51单片机的led点阵屏的设计与实现[管理资料]
基于51单片机的LED点阵屏的设计与实现摘要本文主要阐述了用51单片机控制单色32*64的LED点阵屏显示的方法,对LED点阵屏如何进行行列信号控制及信号传输中的驱动问题进行了研究,并讨论了单片机控制系统中关键的数据处理以及发送问题。
结果表明采用并行数据输入、串行数据及同步时钟传输的专用电路可大大减少CPU的辅助时间,提高了数据的发送速度。
并给出了通过软件控制点阵屏显示的几种方式,如静态显示,分屏显示以及左移显示,对其软件的算法给出了具体分析。
基于各种算法我们就可以灵活的运用软件实现各种显示,并将其用于商业用途。
关键词LED点阵屏;单片机;驱动;扫描The Design and Realization of LED Lattice ScreenBased On MCU-51AbstractThis article mainly elaborates the method of using MCU-51 to control single color 32*64 LED lattice screen display, and researching how to carry on the ranks signal control and the question of signal actuation with the LED lattice screen, and discusses the essential data processing and the transmission question in the monolithic integrated circuit control system. The result indicates that CPU non-cutting time can be reduced greatly by using the allocated-use circuit with parallel data input, serial data and synchronism clock transmission, which has raised the data transmitting speed. This system has given several ways to control lattice screen display via software such as the static state display, divided screen display and left shift display, which has given the concrete analysis of software's algorithm. We can realize all kinds of display nimbly by using software based on each algorithm, and use it in the commercialtrade .Key wordsLED lattice screen;One-chip computer;Drive;Scan前言随着社会文化的不断发展,人们的消费标准不断提高,户外灯箱广告更是扮演着越来越重要的宣传角色,不论是汽车站,火车站,股票交易市场,还是学校都离不开它,然而传统的霓虹灯广告牌不论是在显示效果、耗电量还是可修改性上都无法满足当前社会的需求,传统的霓虹灯广告亟待改进。
单片机贪吃蛇的原理和应用
单片机贪吃蛇的原理和应用
1. 简介
贪吃蛇是一款非常经典的游戏,它在过去的几十年里一直深受玩家们的喜爱。
在单片机领域,我们也可以使用单片机来实现贪吃蛇游戏。
本文将介绍单片机贪吃蛇的原理以及其应用领域。
2. 原理
单片机贪吃蛇游戏的实现原理如下: 1. 使用单片机控制蛇头和食物的移动。
2. 使用矩阵键盘或者其他输入设备控制蛇的移动方向。
3. 利用LED点阵或者LCD显
示屏来展示游戏界面。
4. 使用定时器来控制游戏的帧率,使得蛇头和食物能够以
一定的速度移动。
5. 利用碰撞检测算法判断蛇头是否与食物相撞,以及是否与自
身或者墙壁相撞。
3. 应用领域
单片机贪吃蛇游戏可以应用于以下领域: - 教育培训:通过搭建单片机贪吃蛇
游戏平台,可以帮助学生学习单片机的原理和应用,提高他们的程序设计能力和逻辑思维能力。
- 娱乐产品:通过将单片机贪吃蛇游戏制作为嵌入式娱乐产品,可以
提供给用户一个简单而有趣的游戏体验。
- 科普展示:在科普展览或者科技馆中,
通过展示单片机贪吃蛇游戏平台,可以向大众普及单片机的工作原理和应用。
4. 总结
单片机贪吃蛇游戏是一种基于单片机的嵌入式应用,通过单片机控制蛇头和食
物的移动,利用定时器来控制游戏的帧率,同时使用碰撞检测算法判断游戏的结果。
该游戏在教育培训、娱乐产品和科普展示等领域都有着广阔的应用前景。
通过深入了解单片机贪吃蛇的原理和应用,我们可以更好地运用单片机技术,开发出更多有趣和实用的嵌入式应用。
STM32课程设计贪吃蛇
STM32大作业报告学生姓名:学号:所在院系:光电信息与计算机工程学院专业班级:授课教师:完成时间:2016年前言随着科学技术的不断进步,嵌入式近些年来逐渐兴起,其领域比较新,发展非常迅速,由于它属于新兴领域,接触的人并不是很多,但是嵌入式在各种电子设备上的应用越来越越广泛,并且各种电子设备也在朝着嵌入式微系统,智能化的方向前进。
STM32系列是基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核。
作为21世纪的人才,为了与社会实际需要相衔接,提高我们的学习兴趣,利用STM32系列单片机进行了一次嵌入式系统设计。
摘要在本次作业中采用STM32系列中的STM32F103RCT6微控制器芯片,采用ALIENTEK战舰STM32开发板,使用MiniSTM32开发板上的LCD 接口,来点亮TFTLCD,实现触摸屏功能。
一、课程设计任务要求本次的课程设计目的是实现一个经典的贪吃蛇游戏,整个游戏实现功能分别为:1、初始化程序。
2、随机红点、左转、右转、判断边框。
二、系统硬件设计硬件设计原理图根据此硬件设计图再结合软件设计就能做出此游戏。
三、系统软件实现此次的课程设计在于开发个贪吃蛇游戏,其流程图如下图所示。
程序流程图为方便介绍,此软件实现只给出主要程序部分:1、本例程提供了硬件平台的初始化GPIO是常规输入/输出端口,STM32F103RCT6有PA、PB、PC、PD、PE 共5个16位的GPIO。
STM32的GPIO都可编程,具有很多复用功能。
GPIO 可以配置为很多总模式,这些模式有:输入浮空、输入上拉、输入下拉、模拟输入、开漏输入、推挽输出、推挽复用、开漏复用。
通过对GPIO寄存器编程,可以设置每个端口的工作模式。
24C02 EEPROM是开发板板载的2Kbit(256 个字节)EEPROM ,型号为:24C02,用于掉电数据保存。
因为STM32 内部没有EEPROM,所开发板外扩了24C02,用于存储重要数据,用来做IIC 实验,该芯片直接挂在STM32 的IO 口上。
基于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电位器可调端RS I 数据\指令选择:高电平:数据D0-D7将送入显示RAM;低电平:数据D0-D7将送入指令寄存器执行。
R/W I 读\写选择:高电平:读数据;低电平:写数据。
E I 读写使能,高电平有效,下降沿锁定数据。
DB0 I/O 数据输入输出引脚。
DB1 I/O 数据输入输出引脚。
DB2 I/O 数据输入输出引脚。
嵌入式课设实验报告——贪吃蛇
题目:贪吃蛇游戏设计专业:电子信息工程班级:姓名:、成绩:导师签字:年月日任务书题目:贪吃蛇游戏设计参数:供电电源电压3.3V矩形墙壁的位置坐标(20,20)(200,200)蛇的初始位置坐标(40,20)(30,20)(20,20)蛇的每一节为边长为10的矩形要求:利用嵌入式开发系统设计一个贪吃蛇的小游戏。
开始显示为初始界面,然后开始进行游戏。
游戏开始出现3节的蛇,一个食物,右边显示得分。
当进入游戏后,蛇自动向右前行。
通过按键上下左右来控制蛇前行的方向,当蛇吃到食物后,得分加100分,蛇身体变长一节。
当蛇在游行过程中撞到墙壁或者自身则游戏结束。
日程安排:6月30日:选择课设题目、查阅资料、完成第一步。
7月1、2日:完成方案设计。
即提出设计思路与软硬件的设计方案。
7月3、4日:学习硬件原理7月7、8、9日:根据软件设计方案做软件。
7月10日:测试7月11日:完成论文目录第一章课题研究······························· 1.1研究目的······································ 1.2研究背景······································ 1.3主要研究内容··································第二章设计思路及方案设计····················· 2.1设计思路······································ 2.1.1实现功能································· 2.1.2各功能的实现方法························· 2.1.3硬件说明································· 2.1.4软件说明································· 2.2硬件设计······································ 2.3软件设计······································第三章硬件设计······························· 3.1处理器最小系统································ 3.2硬件基本电路··································3.2.1按键····································· 3.2.2 LCD····································· 3.2.3 USB接口与电源···························第四章软件设计·······························第五章调试与测试·····························5.1调试··········································5.2测试··········································第六章结论···································参考文献······································第一章课题研究1.1研究目的为了巩固所学嵌入式系统的基础知识,加强实际应用和动手实践能力,开始为期2周的课程设计。
贪吃蛇游戏单片机程序
贪吃蛇游戏单片机程序贪吃蛇游戏是一款经典的游戏,其简洁的规则和有趣的玩法使其成为了许多人喜爱的游戏之一。
在单片机中实现贪吃蛇游戏需要利用单片机的输入输出功能以及控制算法来完成游戏的控制和显示。
下面是一个简单的贪吃蛇游戏单片机程序的实现。
首先,我们需要定义一些常量和变量来表示游戏中的一些参数和状态。
比如,我们可以定义一个常量来表示屏幕的宽度和高度,以及一个变量来表示蛇的长度和当前的移动方向。
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';}然后,我们可以编写一个函数来更新蛇的位置。
基于51单片机贪吃蛇游戏设计
基于51单片机贪吃蛇游戏设计贪吃蛇游戏是一种经典的游戏,也是很多人小时候玩过的游戏,其玩法简单,但却能够让人沉迷其中。
本文将介绍如何基于51单片机设计贪吃蛇游戏。
一、功能需求1. 界面设计贪吃蛇游戏的界面应简洁美观,可以利用点阵或LCD显示屏来呈现。
应包括游戏画面、分数、游戏难度等。
2. 操作方式游戏的操作主要包括上下左右移动贪吃蛇头部,进行输入、开始游戏、结束游戏等操作。
游戏可以使用按键、遥控器或者手柄等方式进行控制。
3. 游戏规则游戏正常进行时,贪吃蛇必须不断吃到食物,同时不能碰到墙壁或自己的身体。
每吃到一个食物,分数就会增加一点。
当贪吃蛇碰到墙壁或自己的身体时,游戏结束。
4. 难度等级游戏可以设置不同的难度等级,难度等级越高,贪吃蛇的速度就会越快,游戏难度也会相应提高。
二、设计思路本设计采用51单片机作为控制器,通过点阵或者LCD显示屏实现游戏界面的显示,通过按键、遥控器或手柄等方式进行游戏的操作。
具体设计思路如下:LCD显示屏:同样可以实现游戏画面的显示,但是可以显示更丰富的内容,如文字、动画等。
2. 游戏逻辑处理游戏逻辑处理主要包括游戏规则的实现和贪吃蛇的移动控制。
在实现游戏规则时,需要判断贪吃蛇是否碰到墙壁或自己的身体,同时需要计算分数;在实现贪吃蛇的移动控制时,需要通过按键、遥控器或者手柄等方式实现上下左右的移动。
可以通过按键或者遥控器等方式设置游戏难度等级,从而实现游戏难度的调整。
4. 硬件设计硬件设计包括主控芯片的选择、显示屏的选择、按键、遥控器或手柄等外设的选择。
主控芯片可以选择51单片机,同时可以选择点阵或LCD显示屏,按键、遥控器和手柄等外设可以根据需要进行选择。
三、实现步骤1. 硬件搭建搭建硬件时需要将主控芯片、显示屏、按键、遥控器或手柄等外设连接起来,并进行电路调试。
2. 程序设计程序设计包括游戏界面的设计、游戏逻辑的实现和难度等级的设置。
其中游戏界面的设计可以根据实际需要进行调整,游戏逻辑的实现需要考虑到游戏规则和贪吃蛇的移动控制,难度等级的设置可以通过按键或遥控器等方式实现。
(完整版)基于C语言的贪吃蛇游戏开发与设计毕业论文
毕业设计说明书(论文)题目:基于C语言的贪吃蛇游戏开发与设计毕业设计说明书(论文)中文摘要毕业设计说明书(论文)外文摘要目录前言 (1)第一章概述………………………………………………………………………41.1中国手机游戏产业现状 (4)1.2中国手机游戏的产业局势及其种类的多元化 (5)1.3中国手机游戏的未来展望 (7)第二章开发工具的简介 (9)2.1 Visual C++6.0简介 (9)2.2 Visual C++6.0安装 (10)2.3 Visual C++ 6.0开发过程 (12)第三章需求分析 (13)3.1可行性分析 (13)3.2 功能性分析 (13)第四章概要设计 (16)4.1功能介绍 (16)4.2概要设计图 (16)第五章详细设计 (18)5.1程序设计分析 (18)5.2主要函数 (19)5.3主要代码 (19)5.4其他函数代码 (30)第六章运行与测试 (35)6.1 运行程序 (35)6.2程序的调试与测试 (37)第七章结论 (40)致谢…………………………………………………………………………………42参考文献 (43)附录A (44)前言C语言是目前世界上流行、使用最广泛的高级程序设计语言。
C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。
C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。
常用的编译软件有Microsoft Visual C++,Borland C++,WatcomC++ ,Borland C++, Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++, Lccwin32 C Compiler 3.1,Microsoft C,High C,等等......C语言的发展历史C语言的发展颇为有趣。
基于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)不受影响。
基于51单片机的LED点阵显示屏系统的设计与实现课程设计报告书
课程设计题目:基于单片机的点阵电子显示屏设计(显示大学人民武装学院信息工程系)毕业论文(设计)原创性声明本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。
据我所知,除文中已经注明引用的容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。
对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示意。
作者签名:日期:毕业论文(设计)授权使用说明本论文(设计)作者完全了解**学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。
有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。
学校可以公布论文(设计)的全部或部分容。
的论文(设计)在解密后适用本规定。
作者签名:指导教师签名:日期:日期:注意事项1.设计(论文)的容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键词5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订基于单片机的点阵电子显示屏设计摘要:本文介绍了一款以单片机AT89S51为控制器的LED点阵显示屏系统的设计。
基于单片机的贪吃蛇游戏设计
基于单片机的贪吃蛇游戏设计学生姓名:学生学号:院(系):电气信息工程学院年级专业:指导教师:二〇一五年五月摘要摘要在21世纪的今天,人们的生活开始变得更加丰富多彩。
在繁忙的工作之余,娱乐成为人们生活不可或缺的一份子,而游戏作为近年来逐渐兴起的一种娱乐方式,已经越来越受到人们的青睐。
在工作学习之余,通过玩游戏来放松、调节紧张的学习工作压力是不错的选择;然而大型的网络游戏玩起来比较耗费时间,且不能随时随地的玩。
那么如果这时候拥有一款简单易携带,并且能够缓解压力的小游戏将是个不错的选择,所以,我就设计了这样一款简单易携带的经典小游戏——贪吃蛇。
具体实现上,硬件系统平台采用STC89C52R单片机,搭载LCD12864显示屏,构成一个轻巧简单的游戏机系统。
软件系统采用C语言编程,Protues软件设计电路并仿真,KEIL软件进行程序的调试。
最终实现贪吃蛇游戏系统。
本次设计的贪吃蛇游戏,实现了传统意义上的贪吃蛇游戏的特点:蛇吃掉豆子后,得分增加并且蛇身变长;分数到达一定数目进行升级以后,蛇运动速度加快。
而玩家只需利用方向按钮“上↑、下↓、左←、右→”来改变蛇的运行方向,就能达到娱乐的目的,操作非常简单。
关键词:贪吃蛇游戏,STC89C52R单片机,LCD12864,C语言ABSTRACTIn the 21st century today, people's life become more colorful, In the outside of busy work, entertainment become an integral part of people's 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 can't 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 game system.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 snake's 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.Key words:Greedy Snake Game, STC89C52RCSingle chip microcomputer, LCD12864,C language目录摘要 (I)ABSTRACT (2)1绪论 (6)1.1本课题研究的背景及意义 (6)1.2 国内外研究现状、水平 (6)1.3 本课题的发展趋势 (1)1.4本课题的研究内容和达到的要求 (1)2 方案分析与选择 (2)2.1 系统方案设计 (2)2.2显示器模块设计方案 (2)2.3 按键输入模块设计方案 (3)2.4 本课题的技术指标 (3)2.5 本课题的创新 (3)3 系统硬件设计 (4)3.1单片机的选择与其性能分析 (4)3.1.1 单片机概述 (4)3.1.2 单片机STC89C52RC的介绍 (4)3.1.3 单片机最小系统的介绍 (5)3.2 LCD12864简介 (6)3.2.1 LCD12864概述 (6)3.2.2 LCD128*64的基本特性 (6)3.2.3 模块接口说明 (7)3.2.4 指令说明 (9)3.3 键盘电路的设计 (11)3.4 蜂鸣器电路的设计 (11)3.4.1蜂鸣器简介 (11)3.4.2 蜂鸣器的设计 (12)4 软件系统设计 (13)4.1 游戏设计思想 (13)4.2 主要模块介绍及其功能 (14)4.3 编程语言介绍 (15)4.3.1 C语言简介 (15)4.3.2 C源程序结构特点 (15)4.4 程序设计流程图 (16)5 仿真设计与结果分析 (17)5.1 仿真软件的简介 (17)5.1.1 仿真软件Proteus的简介 (17)5.1.2 keiluVision4编程开发工具的简介 (17)5.2本系统的Proteus仿真设计 (18)5.2.1仿真设计的预期目标 (18)6 PCB设计 (19)6.1 PCB设计软件 (19)6.1.1 PCB原理图设计 (19)6.1.2 PCB板制作方法 (19)6.2 PCB的EMC设计 (1)6.2.1 元器件布局的基本原则 (1)6.2.2 布线设计原则 (1)6.3 印制电路板 (1)6.3.1 印制电路板的结构 (1)6.3.2 印制电路板的种类 (1)6.3.3 印制电路板制作流程 (1)7 系统调试 (2)7.1 硬件调试 (2)7.2 软件调试 (3)7.3 硬件软件联合调试 (3)7.4 调试结果 (3)结论 (7)参考文献 (8)附录一:系统PCB原理图 (9)附录二:系统仿真图 (10)附录三:PCB图 (11)附录四:程序主函数 (1)附录五:原器件清单 (6)致谢 ............................................................................................. 错误!未定义书签。
2016届物理学、应用物理学毕业论文(设计)选题登记表
谌宗保
物理学
15989011569 2.计算机模拟在物理学习中的积极作用
3.平板模式对南海混合层内海流的模拟 1.调频话筒的设计与制作
王义
18875034685 2.调频无线接收器的设计与制作
3.基于OCL音频功放的设计与制作
应用物理学
物理学
应用物理学
1.云存储模拟系统 2.基于zigbee的物联网模拟系统 3.基于web的视频监控系统 4.基于ARM平台的视频监控系统 5.遥控式3G机器人 6.短信平台演示项目 7.基于QT的电子地图模拟系统 8.智能农业管理模拟系统 9.智能家居模拟系统 10.车载电脑模拟系统 应用物理学
物理学
物理学
张杰
副教授/硕士 13885686099
2.课堂中的合作学习——同伴教学法对力学概念学习的促进作用 1.基于WEKA的学生量化成绩评价体系的对比分析 2.基于WEKA的少数民族语言的对比研究 1.一种电池防过充保护电路(设计) 2.片式钽电容的开发与应用(综述)
物理学
代启林 杨飞
应用物理学
494591590 352603678 577477953 736522948 1573212972 1958442396 2694219129 278462156 794874041 1010697976 326474221
12物理学 12物理学 12物理学 12物理学 12物理学 12物理学 12物理学 12物理学 12物理学 12物理学 12物理学
周志鹏 许仲文
应用物理学
第 3 页,共 8 页
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 华 清 远 见 实 践 课 题 学 生 自 拟 题 目 麻银金 硕士 万云娇 硕士
基于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灯熄灭。
在程序中即是先把蛇尾位置的值传给蛇头的下⼀个位置,然后改变蛇尾的值即可。
蛇头下⼀个位置的确定由蛇头和偏移量来确定,每次通过操作四个独⽴按键来控制蛇步进的偏移量。
因⽽只要将蛇头的位置加上其偏移量的值,即可得到新的蛇头位置。
(2)⾷物的出现在市场上所流⾏的贪吃蛇游戏中,⾷物的出现是⼀种随机⾏为,这在程序中需要做⼀个随机数来⽀撑该过程。
我们组在实验过程中也尝试了该过程,最终选择让⾷物出现在蛇尾的后⼀步,来执⾏整个程序。
与此同时,⾷物出现的位置不能与蛇的位置重合,也不能超出墙外,否则需要重置⾷物。
基于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单片机开发板,Keil uVision3,ISIS 7 Professional。
三、概要设计根据我们要实现的功能,我们决定把这次课程设计分成三个部分。
第一个部分为硬件设计和连接部分。
基于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.实现贪吃蛇的算法实现贪吃蛇的基本过程为,就是通过点阵点亮蛇身,然后随机产生果实,也点亮,通过键盘控制使得蛇身进行移动,吃到果实,蛇身变长。
当头碰到墙壁或者自己时,游戏结束。
我通过一个一维数组存储蛇身的位置信息和果实的位置信息,当移动时,蛇头根据计算得到移动后的距离,而后面的每一节等于上次上一节的数据。
来实现移动的效果。
当吃到过果实时,将果实的位置赋值为蛇头,依次执行之前的操作,接着再随机产生果实。
移动主要实现代码如下:for(i=n-1;i>1;i--){x[i]=x[i-1];y[i]=y[i-1];}x[1]=x[2]+addx;y[1]=y[2]+addy;判断撞墙或者撞自己代码bit knock(){bit k;k=0;if(x[1]>15||y[1]>15)k=1;for(i=2;ireturn k;}4.系统仿真设计因为stc89c51的引脚过少,所以为了节省引脚,用了74ls138译码器,进行对1588BS进行控制,由于译码器只是一个引脚输出为1其余为0,所以为了和1588BS搭配使用,我又采用了非门进行取反。
基于51单片机的贪吃蛇游戏的开题报告
基于51单片机的贪吃蛇游戏的开题报告
一、项目背景
贪吃蛇是一个经典的游戏,深受广大玩家的喜爱。
本项目基于51单片机实现贪吃蛇游戏,旨在通过此项目掌握嵌入式系统设计及单片机编程技术。
二、项目概述
本项目的主要功能是实现贪吃蛇游戏。
通过51单片机实现游戏中的各种功能,包括蛇的移动,食物的产生,得分统计等。
同时,还需要设计合适的硬件电路,包括数码管、按键等,实现游戏的交互。
三、项目计划
1. 硬件设计
设计所需硬件电路,包括数码管、按键等,以实现游戏的交互。
2. 软件设计
(1)初始化
初始化游戏画面,初始化蛇的位置和方向,初始化食物位置,初始化得分等变量。
(2)蛇的移动
实现蛇的移动,根据按键输入确定蛇的方向,并判断是否碰到边界或自己的身体,以及是否吃到食物等。
(3)食物的产生
通过随机函数产生食物的位置,并将其显示在屏幕上。
(4)得分统计
统计蛇吃到的食物数量,每吃一个食物得分加一。
(5)游戏结束
当蛇碰到边界或自己的身体时,游戏结束,显示得分。
3. 调试测试
完成软硬件设计后,进行测试调试,确保游戏功能正常。
四、预期成果
通过本项目,期望掌握51单片机编程技术,熟练掌握嵌入式系统设计,实现一个基于51单片机的贪吃蛇游戏。
五、参考文献
1.《51单片机原理与应用》
2.《嵌入式系统开发技术详解》
3.《C语言程序设计实践》。
工作报告之贪吃蛇开题报告
贪吃蛇开题报告【篇一:51贪吃蛇开题报告】毕业设计开题报告院校:专业:班级:姓名:指导老师:开题日期:汕头职业技术学院应用电子技术 0902班张优亮陈麒 2012年1月一、选题的背景与意义二、研究的基本内容与拟解决的主要问题贪吃蛇游戏设计主要硬件由单片机最小系统,8*8点阵,4个矩形按键,7805稳压电路,整个的游戏设计外围电路比较少,主要核心在于游戏的程序设计,本设计的游戏规则也参照现在手机流行的贪吃蛇游戏的规则去设计,当蛇吃到食物时,蛇身就会自动增加一格,食物随机出现在屏幕上,当蛇碰到墙壁时,游戏结束。
本设计需要考虑的问题有以下几个:1. 8*8点阵的选择2. 保证游戏的流畅性和及时响应性3. 游戏的设计应该接近人性化贪吃蛇初始化子程序流程图贪吃蛇运行子程序是整个程序设计的核心,首先由系统检测是否有按键按下,确定有按键按下后,外部中断程序自动执行,开始扫描矩阵键盘,得到键值,根据键值判断贪吃蛇要走的方向。
在游戏运行的期间,系统不断检测蛇是否死亡,蛇是否已经最长,蛇是否吃到了食物。
若蛇已经死亡,则蛇的死亡标记位被置位,跳转到死亡界面,检测是否有按键按下,有就跳转到游戏开始界面,重新开始游戏,无则等到有任意键按下。
游戏的速度控制由延时程序决定,若延时程序延时短,则蛇移动得快,若延时比较长,则蛇移动得慢。
若蛇已经吃到食物,则在放食物的原来的坐标会消除显示,重新读取计数器的值,通过计算得到要放置食物的坐标,在该坐标上显示食物。
1.准备工作? 认真详细的阅读任务书,深刻了解主要的内容和要求。
? 查阅与贪吃蛇相关的书籍,了解贪吃蛇的工作原理。
? 了解历年全国大学生电子竞赛有关贪吃蛇的资料。
? 根据控制要求初步确定所使用的元器件。
2. 实施步骤? 明确控制要求,绘制电路连接图。
? 参考文献,检查电路图的正确性。
? 根据电路连接图焊接电路板,制作贪吃蛇模型。
? 分析操作流程,绘制程序流程图。
? 编写程序代码。
基于单片机的游戏机设计与实现毕业设计.
主电路图
主流程图
开始
扫描端口
初始化液晶屏
N
是否有按键按下
显示开机画面 扫描端口
是否有按键按下
NN
Y
执行移动或者旋 转程序
游戏是否结束
Y
开始游戏
Y
显示结束画面
液晶屏显示
液晶屏是由KS0108控制FG12864E显示 无字库、无背光 分左右屏控制 横128列,纵64行,每8行一个page,共有8个page 可以显示32个汉字,分为4行8列
游戏画面时的液晶显示
显示分数 显示速度 下个图形
游戏区域
提示按 键操作
方块生成
方块是由四个小正方形组成的,其中每个小正方 形是由4*4个点组成,将这4*4个点看做一组点阵, 可以直接对这组点阵进行编辑。
图1 一组4*4的点阵
当画俄罗斯方块时需要4*4个点阵,也就是 16*16个点。将每个点阵看成一组,然后对整个 4*4的点阵进行编辑,将每个点阵看成一位二进 制的数,因为每个点阵都有被编辑(记为1)和 不被编辑(记为0)两种状态。所以一个4*4位的 点阵可以看成一个四位的十六进制数。
形状 第一种类型
第一种形状; 第二种形状; 第三种形状 ; 第四种形状;
形状 第二种类型
方块的移动:
1、方块的自由下落: 由定时器0控制方块下降。
2、按左或右键: 编辑显示数组中的列,让列加一或者减一。
3、按下: 先检测是否能下降,如果能就下降,直到不能
再下降为止。
谢谢
基于单片机的游戏机设计与实现主电路图主流程图开始初始化液晶屏显示开机画面扫描端口执行移动或者旋转程序开始游戏扫描端口是否有按键按下游戏是否结束显示结束画面是否有按键按下液晶屏显示液晶屏是由ks0108控制fg12864e显示无字库无背光分左右屏控制横128列纵64行每8行一个page共有8个page可以显示32个汉字分为4行8列游戏画面时的液晶显示显示分数显示速度下个图形游戏区域提示按键操作方块生成方块是由四个小正方形组成的其中每个小正方形是由44个点组成将这44个点看做一组点阵可以直接对这组点阵进行编辑
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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=-1x[1] = 1; y[1] = 0; //蛇头x[2] = 0; y[2] = 0; //蛇尾1addx = 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所示。
图4系统测试效果图软件调试及Proteus仿真完成后就进行硬件的安装。
本设计按照原先设计好的电路图进行总体上的布置,采用人工搭电路的方法进行硬件的安装。
安装时要考虑受热、稳固等多方面的影响使用电烙铁时要控制好焊接的时间,电烙铁停留的时间太短,焊锡不易完全熔化,形成“虚焊”,而焊接时间太长又容易损坏元器件,每一两秒内要焊好一个焊点,若没完成,宁愿等一会儿再焊一次。
其次芯片的摆置要方便连线,焊接时要先把芯片拔出,等线接好了再插上去。
在焊接时要考虑电路的抗干扰能力同时要充分考虑电源对单片机的影响。
每焊接完一个模块,要用万能表根据电路图检查有没有接错、短路等现象,确认正确后再继续下一个模块[2]。
附录:代码#include <reg51.h>#define uchar unsigned char#define SNAKE 20 //最大长度#define TIME 50 //显示延时时间#define SPEED 71 //速度控制sbit keyenable=P3^6; //方向使能sbit keyy=P0^2; //上下*/sbit up=P3^3; //downsbit down=P3^1;sbit right=P3^2;sbit left=P3^4;uchar 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 k;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; //撞自己return k;}/*****************上下左右键位处理*****************/void turnkey()// interrupt 0 using 2{if(keyenable){if(left){addy=0;if(addx!=1)addx=-1; else addx=1;}if(right){addy=0;if(addx!=-1)addx=1; else addx=-1;}if(up){addx=0;if(addy!=-1)addy=1; else addy=-1;}if(down){addx=0;if(addy!=1)addy=-1; else addy=1;}}}/*****************乘方程序*****************/uchar mux(uchar temp){if(temp==7)return 128;if(temp==6)return 64;if(temp==5)return 32;if(temp==4)return 16;if(temp==3)return 8;if(temp==2)return 4;if(temp==1)return 2;if(temp==0)return 1;return 0;}/*****************显示时钟显示程序*****************/void timer0(uchar k){while(k--){for(i=0;i<SNAKE+1;i++){P2=mux(x[i]);P1=255-mux(y[i]);turnkey(); //上下左右键位处理delay(TIME); //显示延迟P2=0x00;P1=0xff;}}}/*****************主程序*****************/void main(void){e=SPEED;P0=0x00;P1=0xff;P2=0x00;P3=0x00;while(1){//if(keyenable==1){P1=0x00;P2=0xff;}else{P1=0xff;P2=0x00;}for(i=3;i<SNAKE+1;i++)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; //蛇尾1addx=0;addy=0; //位移偏移 //k=1;while(1){if(keyenable)break;timer0(1);}while(1){timer0(e);if(knock()){e=SPEED;break;} //判断碰撞if((x[0]==x[1]+addx)&(y[0]==y[1]+addy)) //是否吃东西{n++;if(n==SNAKE+1){n=3;e=e-10;for(i=3;i<SNAKE+1;i++)x[i]=100;for(i=3;i<SNAKE+1;i++)y[i]=100;}x[0]=x[n-2];y[0]=y[n-2];}for(i=n-1;i>1;i--){x[i]=x[i-1];y[i]=y[i-1];}//x[n-1]=x[2];y[n-1]=y[2];x[1]=x[2]+addx;y[1]=y[2]+addy; //移动 }}}。