基于单片机贪吃蛇设计模板.docx

上传人:王** 文档编号:920934 上传时间:2024-03-01 格式:DOCX 页数:7 大小:87.56KB
下载 相关 举报
基于单片机贪吃蛇设计模板.docx_第1页
第1页 / 共7页
基于单片机贪吃蛇设计模板.docx_第2页
第2页 / 共7页
基于单片机贪吃蛇设计模板.docx_第3页
第3页 / 共7页
基于单片机贪吃蛇设计模板.docx_第4页
第4页 / 共7页
基于单片机贪吃蛇设计模板.docx_第5页
第5页 / 共7页
基于单片机贪吃蛇设计模板.docx_第6页
第6页 / 共7页
基于单片机贪吃蛇设计模板.docx_第7页
第7页 / 共7页
亲,该文档总共7页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于单片机贪吃蛇设计模板.docx》由会员分享,可在线阅读,更多相关《基于单片机贪吃蛇设计模板.docx(7页珍藏版)》请在优知文库上搜索。

1、电气与信息工程学院单片机课程设计报告设计题目:基于单片机的贪吃蛇设计专业:-一学生姓名:班级:指导教师:-成绩:2016年11月22日一、设计任务及要求基本功能:制作一个8*8点阵的贪吃蛇游戏,系统以单片机的C语言的软件设计,系统通过LED点阵屏为载体显示数据,并用五个输入端表示五个控制键(上下左右及加速系统硬件局部由STC89C52RC单片机,8*8点阵屏,5个按键,软件局部在keil环境下用C51语言编写,包括游戏初始化蛇的节数,以及障碍墙壁,游戏完毕时自动复位。具体要求:1、用四个按钮控制贪吃蛇的行径,一个按钮控制贪吃蛇的加速,蛇的初始长度为2点,设置墙壁。2、蛇吃到长度为1点的食物时,

2、自身长度增加1点。2、速度按钮带有一次加速,按两下速度按钮蛇的行进速度回到初始值。3、当蛇碰到墙壁或自己的身体时游戏完毕。4、用ProteUS设计,仿真基于STC89C52RC单片机的8x8点阵贪吃蛇的硬件电路。5、游戏完毕,系统自动复位。二、硬件电路设计本系统以STC89C52RC为核心,设置12MHZ的晶振,使得单片机有合理的运行速度。LED点阵屏通过LED(发光二极管)组成,以灯珠亮灭来显示程序的运行情况,是模块化的显示组件,本设计采用8*8共阳红色点阵显示屏,用来显示贪吃蛇的游戏画面。五个独立按键控制蛇的游走方向(上下左右)和加速减速的功能。贪吃蛇是一款经典的小游戏,玩家通过按键操控贪

3、吃蛇不断地吃食物,蛇身逐渐伸长,当蛇碰到蛇身和墙壁时游戏完毕。需要注意的是实际元件中,点阵的封装不尽一样,因此需要测试出每个引脚的功能,以便正确连线。注意,每个像素点的额定电压在3v左右,电压过大将会彻底损坏。三、系统软件设计软件方面采用了C51编写代码,代码编写模块如以以下图:核心代码主要为游戏处理、信息处理和按键处理。编写游戏的功能代码,先定义游戏的数据构造和常量。其中食物的数据构造采用构造体定义,两个UnSignedChar变量分别定义为食物的横纵坐标;蛇的身体定义为长度最大值为20的数组,游戏中贪吃蛇长度到达39,游戏通关完毕。游戏处理模块为贪吃蛇在游玩过程中遇到的需要被处理的情况,主

4、要实现的功能包括以下四个方面,即移动、食物、死亡和加速。1、移动游戏开场后,贪吃蛇在固定的周期内会向前移动一格,此时“贪吃蛇身体从尾巴至头部每一个后序节点会向前序节点移动,后序节点移动完毕后,头部会根据此时按键的方向对相应的横纵坐标进展加减。2、食物放置贪吃蛇向前移动后,此时要判断蛇头是否与食物的横纵坐标一一对应,如果不是那么退出该模块,进入下一模块;如果是,那么贪吃蛇的节数增加一。随后将进入创立新的食物模块,为了防止食物与贪吃蛇的节点坐标重复,食物在创立后要与贪吃蛇的每个节点的坐标一一比较,如果重合那么重新创立食物的坐标,直到创立成功为止。3、加速处理开场在游戏过程中,贪吃蛇的初始速度很慢,

5、为了提高游戏娱乐性,设置独立按键加速键,当按下加速键,那么贪吃蛇的移动速度即时间间隔变短,使游戏更具有挑战性,当再按下那么恢复原来的速度。4、完毕贪吃蛇在向前移动后,有可能撞到墙壁或自己的身体,也有可能吃到食物,或者只是向前移动一格,移动完毕后如果吃到了食物,如果贪吃蛇的节数到达了最大值,那么玩家将会通关游戏,并且游戏退出,此时需要判断游戏是否完毕,一共有三种判别,前两种为失败结局,即撞到了墙壁或自己的身体,最后一种为通关结局,游戏将初始化。源代码如下:#include#defineucharunsignedchar#defineSNAKE20#defineTIME50#defineSPEED

6、80sbitup=P33;sbitdown=P3l;sbitright=P32;sbitleft=P34;sbitspeedup=P35;sbitLATCH1=P36;sbitLATCH2=P37;ucharxSNAKE+1;ucharySNAKE+IJ;uchartime,n,i,e;unsignedcharconstseg=0x81,0x42,0x24,Ox18,Ox18,0x24,0x42,0x81;unsignedcharcodewei=0x7f,Oxbf,Oxdf,Oxef,0xf7,Oxfb,Oxfd,Oxfe;charaddx,addy;voiddelay(charMS)char

7、us,usn;while(MS!=0)usn=O;while(usn!=O)(us=Oxff;while(us!=O)us-usn;)MS-;bitknock()bitk;k=0;if(xl7yl7)k=l;for(i=2;in;i+)if(x1=xi)&(y1=yi)k=l;returnk;)voidgamever()(while(!i=8)(P2=0x00;Pl=0xff;1.atchi=i;latchi=o;P2=weii;1.ATCH2=1;LATCH2=0;Pl=segi;delay(1000);i+;)voidturnkey()(if(!left)(addy=O;if(addx!=

8、1)addx=-1;elseaddx=1;)if(!right)addy=O;if(addx!=-l)addx=l;elseaddx=-l;)if(!up)addx=O;if(addy!=-1)addy=1;elseaddy=-l;)if(!down)addx=Oif(addy!=1)addy=-1;elseaddy=1;)if(!speedup)e=e-40;while(e=39)e=SPEED;ucharmux(uchartemp)(if(temp=7)return128;if(temp=6)return64;if(temp=5)return32;if(temp=4)return16;if

9、(lemp=3)retum8;if(temp=2)return4;iKtemp=1)return2;if(temp=O)return1;return0;voidtimer(uchark)vvhile(k-)fbr(i=O;iSNAKE+1;i+)P2=mux(xi);Pl=255-mux(y(i);tumkey();delay(TIME);P2=0x00;PI=Oxff;)1)voidmain(void)e=SPEED;PO=OxOO;Pl=Oxff;P2=0x00;P3=0xff;while(l)fr(i=3jiSNAKE+lji+)xi=100;for(i=3;iSNAKE+l;i+)yi

10、=100;x0=4;y0=4;n=3;xi=l;yl=O;x2=0;y2=0;addx=O;addy=O;while(1)if(!left!right!up|!down)break;timerO(1);)while(l)(timer(e);if(knock()gameOver();e=SPEED;break;)if(xO=xl+addx)fe(yO=yIJ+addy)n+;if(n=SNAKE+l)(n=3;for(i=3uSNAKE+l;i+)xi=100;for(i=3jlji-)xi=xi-l;yi=yi-l;xl=x2+addx;yl=y2+addy;)四、调试结果与分析结果:本次设计

11、未能在硬件上调试成功,但在PrOteUS上的仿真可以实现。程序软件编译器使用UViSiOn4。在用UViSiOn4编写单片机程序时,因UViSiO4往往只能修改语法上的错误,对于算法上的错误不好检查,而直接下载到单片机中又受电路板的限制不方便调试,所以采用ProteUS仿真。先在Proteus上绘制出硬件电路,电路设计完成后就可以进展仿真。先双击单片机,把用uVision4生成的hex文件指定为下载文件,最后点击play按钮即可进展仿真。系统上电后首先对LED进展初始化,接着对定时器初始化,并启动定时器,接着执行程序主体逻辑,程序主体逻辑执行一遍后检查是否中断发生,中断源有两个,一个是驱动贪吃蛇自行前进时的定时中断,另一个是用户控制贪吃蛇移动方向的键盘中断,任意中断的发生都会改变贪吃蛇的当前状态。假设中断没有发生,主程序继续判断蛇头是否碰到墙壁或蛇头尾相撞,假设是,完毕游戏,否那么,继续执行主程序循环。四、总结六、参考文献

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 论文 > 毕业论文

copyright@ 2008-2023 yzwku网站版权所有

经营许可证编号:宁ICP备2022001189号-2

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!