单片机贪吃蛇课程设计报告模板_第1页
单片机贪吃蛇课程设计报告模板_第2页
单片机贪吃蛇课程设计报告模板_第3页
单片机贪吃蛇课程设计报告模板_第4页
单片机贪吃蛇课程设计报告模板_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.电气与信息工程学院单片机课程设计报告设计题目: 基于单片机的贪吃蛇设计 专 业: 学 生 姓 名: 班 级: 指 导 教 师: 成 绩: 2016 年 11月 22 日一、 设计任务及要求基本功能:制作一个8*8点阵的贪吃蛇游戏,系统以单片机的C语言的软件设计,系统通过LED点阵屏为载体显示数据,并用五个输入端表示五个控制键(上下左右及加速)。系统硬件部分由STC89C52RC单片机,8*8点阵屏,5个按键,软件部分在keil环境下用C51语言编写,包括游戏初始化蛇的节数,以及障碍墙壁,游戏结束时自动复位。具体要求:1、用四个按钮控制贪吃蛇的行径,一个按钮控制贪吃蛇的加速,蛇的初始长度为2点,设置墙壁。2、蛇吃到长度为1点的食物时,自身长度增加1点。2、速度按钮带有一次加速,按两下速度按钮蛇的行进速度回到初始值。3、当蛇碰到墙壁或自己的身体时游戏结束。4、用proteus设计,仿真基于STC89C52RC单片机的8x8点阵贪吃蛇的硬件电路。5、游戏结束,系统自动复位。二、 硬件电路设计本系统以STC89C52RC为核心,设置12MHz的晶振,使得单片机有合理的运行速度。LED点阵屏通过LED(发光二极管)组成,以灯珠亮灭来显示程序的运行情况,是模块化的显示组件,本设计采用8*8共阳红色点阵显示屏,用来显示贪吃蛇的游戏画面。五个独立按键控制蛇的游走方向(上下左右)和加速减速的功能。贪吃蛇是一款经典的小游戏,玩家通过按键操控贪吃蛇不断地吃食物,蛇身逐渐伸长,当蛇碰到蛇身和墙壁时游戏结束。需要注意的是实际元件中,点阵的封装不尽相同,因此需要测试出每个引脚的功能,以便正确连线。注意,每个像素点的额定电压在3v左右,电压过大将会彻底损坏。三、 系统软件设计软件方面采用了C51编写代码,代码编写模块如下图:核心代码主要为游戏处理、信息处理和按键处理。编写游戏的功能代码,先定义游戏的数据结构和常量。其中食物的数据结构采用结构体定义,两个unsigned char变量分别定义为食物的横纵坐标;蛇的身体定义为长度最大值为20的数组,游戏中贪吃蛇长度达到39,游戏通关结束。游戏处理模块为贪吃蛇在游玩过程中遇到的需要被处理的情况,主要实现的功能包括以下四个方面,即移动、食物、死亡和加速。1、移动开始是否按下方向键将节点坐标覆盖到前一节点蛇头节点横坐标对应加减蛇头节点纵坐标对应加减按键的方向是水平结束NYNY游戏开始后, 贪吃蛇在固定的周期内会向前移动一格,此时“贪吃蛇”身体从尾巴至头部每一个后序节点会向前序节点移动,后序节点移动完毕后,头部会根据此时按键的方向对相应的横纵坐标进行加减。2、食物放置开始蛇头与食物坐标重合创建新的食物蛇身节数+1创建是否成功显示新的食物结束NNYY贪吃蛇向前移动后,此时要判断蛇头是否与食物的横纵坐标一一对应,如果不是则退出该模块,进入下一模块;如果是,则贪吃蛇的节数增加一。随后将进入创建新的食物模块,为了避免食物与贪吃蛇的节点坐标重复,食物在创建后要与贪吃蛇的每个节点的坐标一一比较,如果重合则重新创建食物的坐标,直到创建成功为止。3、加速处理开始加速键是否按下蛇加速结束NY在游戏过程中,贪吃蛇的初始速度很慢,为了提高游戏娱乐性,设置独立按键加速键,当按下加速键,则贪吃蛇的移动速度即时间间隔变短,使游戏更具有挑战性,当再按下则恢复原来的速度。4、结束开始结束蛇的节数最大蛇头碰到墙壁蛇头碰到蛇身NNNYYY贪吃蛇在向前移动后,有可能撞到墙壁或自己的身体,也有可能吃到食物,或者只是向前移动一格,移动完毕后如果吃到了食物,如果贪吃蛇的节数达到了最大值,那么玩家将会通关游戏,并且游戏退出,此时需要判断游戏是否结束,一共有三种判别,前两种为失败结局,即撞到了墙壁或自己的身体,最后一种为通关结局,游戏将初始化。源代码如下:#include #define uchar unsigned char#define SNAKE 20 #define TIME 50 #define SPEED 80 sbit up=P33; sbit down=P31;sbit right=P32;sbit left=P34;sbit speedup=P35;sbit LATCH1=P36;sbit LATCH2=P37;uchar xSNAKE+1;uchar ySNAKE+1; uchar time,n,i,e; unsigned char const seg=0x81,0x42,0x24,0x18,0x18,0x24,0x42,0x81;unsigned char code wei=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;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(x17|y17)k=1; for(i=2;in;i+)if(x1=xi)&(y1=yi)k=1; return k;void gameOver()while(!i=8) P2=0x00;P1=0xff;LATCH1=1;LATCH1=0; P2=weii;LATCH2=1;LATCH2=0; P1=segi; delay(1000); i+; void turnkey() 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;if(!speedup) e=e-40; while(e=39) e=SPEED;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;iSNAKE+1;i+)P2=mux(xi);P1=255-mux(yi);turnkey(); delay(TIME); P2=0x00;P1=0xff; void main(void)e=SPEED; P0=0x00; P1=0xff; P2=0x00; P3=0xff;while(1) for(i=3;iSNAKE+1;i+)xi=100;for(i=3;iSNAKE+1;i+)yi=100; x0=4;y0=4; n=3; x1=1;y1=0; x2=0;y2=0; addx=0;addy=0; while(1)if(!left|!right|!up|!down)break;timer0(1); while(1) timer0(e); if(knock()gameOver();e=SPEED;break; if(x0=x1+addx)&(y0=y1+addy) n+; if(n=SNAKE+1) n=3; for(i=3;iSNAKE+1;i+)xi=100; for(i=3;i1;i-)xi=xi-1;yi=yi-1; x1=x2+addx;y1=y2+addy; 四、调试结果与分析结果:本次设计未能在硬件上调试成功,但在proteus上的仿真可以实现。程序软件编译器使用uVision4。在用uVision4编写单片机程序时,因uVisio4往往只能修改语法上的错误,对于算法上的错误不好检查,而直接下载到单片机中又受电路板的限制不方便调试,所以采用Proteus仿真。先在Proteus上绘制出硬件电路,电路设计完成后就可以进行仿真。先双击单片机,把用uVision4生成的hex文件指定为下载文件,最后点击play按钮即可进行仿真。系统上电后首先对LED进行初始化,接着对定时器初始化,并启动定时器,接着执行程序主体逻辑,程序主体逻辑执行一遍后检查是否中断发生,中断源有两个,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论