基于51单片机8x8点阵贪吃蛇综合课程设计报告_第1页
基于51单片机8x8点阵贪吃蛇综合课程设计报告_第2页
基于51单片机8x8点阵贪吃蛇综合课程设计报告_第3页
基于51单片机8x8点阵贪吃蛇综合课程设计报告_第4页
基于51单片机8x8点阵贪吃蛇综合课程设计报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、电子线路综合课程设计报告设计课题: 贪吃蛇掌上游戏机 专业班级: 电子信息121班 学生姓名: 指导教师: 设计时间: 2015 .12 . 31 赣南师范学院科技学院数学与信息科学系 贪吃蛇掌上游戏机 一、设计任务与要求基本功能:制作一个8*8点阵的贪吃蛇游戏,系统以单片机的c语言的软件设计,系统通过led点阵屏为载体显示数据,并用四个输入端表示四个控制键(上下左右)。系统硬件部分由stc89c52rc单片机,8*8点阵屏, 4个按键,软件部分在keil环境下用c51语言编写,包括游戏初始蛇的段数,以及障碍墙壁,游戏结束时自动复位。具体要求:1、用四个按钮控制蛇的方向,蛇的原始段数为2点,并

2、设置墙壁。2、蛇的移动速度随着蛇的段数增加而增加,当蛇碰到墙壁和自己的身体时死亡 3、用proteus设计,仿真基于stc89c52rc单片机的8*8点阵贪吃蛇的硬件电路。4、蛇死亡,游戏结束,系统自动复位。二、方案设计与论证图1、系统框图1、贪吃蛇的移动当蛇没有吃到任何食物时,每次步进蛇头的将要到的下一个led灯点亮,而蛇尾那个led灯会灭掉,程序设计时只要将蛇尾那点位置的值传给蛇头下一个位置的值,再改变蛇尾的值即可。而蛇头下一个位置根据蛇头和偏移量来确定,每次上下左右按键决定了蛇步进的偏移量,只要将蛇头的位置加上偏移量的值即得到新的蛇头位置。当蛇头碰到四周的墙壁或者碰到自己的身体,小蛇就立

3、即毙命并结束游戏。2、食物的随机出现食物的出现是一种随机行为,所以必须做一个随机数,而且食物出现的位置不能与蛇的位置相同,也不能超出墙外,否则就要重置食物。这里使用程序中的定时计数器的低八位 tl0的数值,由于tl0不断变化,不同的时间点数值不同,我这里使用的是c语言里的stdlib.h文件库,使用里面的随机函数srand(),先利用srand(tl0)获得tl0的数值,再利用两次rand()%8分别得到食物出现的横纵坐标的位置。三、原理图及元器件清单1单位电路设计(1)at89c52单片机最小系统模块本系统以stc89c52rc为核心加上复位电路和晶振电路组成,本系统选用12m的晶振,使得单

4、片机有合理的运行速度。起振电容30pf对振荡器的频率高低,振荡器的稳定性和振荡器的快速性影响较合适复位电路为按键高电平复位。图2、最小系统模块(2)8*8点阵屏模块led点阵屏通过led(发光二极管)组成,以灯珠亮灭来显示程序的运行情况,是模块化的显示组件,本设计采用8*8共阳红色点阵显示屏,用来显示贪吃蛇的游戏画面。图3、8*8点阵屏模块(3)独立按键模块4个按键控制蛇的游走方向(上下左右)的功能简介明了图4、独立键盘(4)系统总原理图说明贪吃蛇是一款经典的小游戏,玩家使用方向键控制一条很短(游戏刚开始)的蛇,通过不断的吃豆豆,蛇身会逐渐的加长,当蛇撞到身体或墙壁时游戏结束图5、总原理图2元

5、件清单表1、元件清单元件名称符号数值单位备注单价(元/个)电阻r1r810k欧姆1/4瓦8电解电容c510f电解,250v耐压2瓷片电容c1-4103pf50v耐压48*8点阵屏led8*81晶振x112m250v耐压1单片机muc1stc89c52rc1按键key1-44二极管d1-41n34a正向导通压降约为0.20.3v4总计: 12 元四、安装与调试程序软件编译器使用uvision3。在用uvision3编写单片机程序时,因uvision3往往只能修改语法上的错误,对于算法上的问题不好检查,而直接下到单片机里又受电路板的限制而不方便调试,因此这里使用proteus进行电路仿真。该软件具

6、有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统仿真、rs232动态仿真、i2c调试器、spi调试器、键盘和lcd系统仿真的功能,同时有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。先在proteus上绘制硬件电路(并未画出驱动电路),电路设计完成后就可以进行仿真。先双击单片机,把用uvision3编译生成的hex文件指定为下载文件,点击play键即可进行仿真。当出现analyser errors时,表示电路有错误,列表中说明了具体的错误,必须要先排错才可以进行仿真。软件调试及proteus仿真完成后就进行硬件的安装。本设计按照原先设计好的电路图进行总体上的布置,采用人工搭电路的

7、方法进行硬件的安装。安装时要考虑受热、稳固等多方面的影响使用电烙铁时要控制好焊接的时间,电烙铁停留的时间太短,焊锡不易完全熔化,形成“虚焊”,而焊接时间太长又容易损坏元器件,每一两秒内要焊好一个焊点,若没完成,宁愿等一会儿再焊一次。其次芯片的摆置要方便连线,焊接时要先把芯片拔出,等线接好了再插上去。在焊接时要考虑电路的抗干扰能力同时要充分考虑电源对单片机的影响。每焊接完一个模块,要用万能表根据电路图检查有没有接错、短路等现象,确认正确后再继续下一个模块五、性能测试与分析主程序工作流程如图3所示,系统上电后首先对led进行初始化,接着对定时器初始化,并启动定时器,接着执行程序主体逻辑,程序主体逻

8、辑执行一遍后检查是否有中断发生。中断源有两个,一个是驱动贪吃蛇自动前行的定时中断,另一个是用户控制贪吃蛇移动方向的键盘中断,任意中断的到来都将改变贪吃蛇的当前状态。若当前没有中断发生,主程序继续判断蛇头是否碰壁或头尾相撞,若是,结束游戏,否则继续执行程序主体循环。图6 主程序工作流程七、结论与心得1.通电前要检查电路是否短路。2.严禁在系统连错的情况下通电。3.在调试过程中发现有元器件烧毁,应立即切断主电源,认真检查电路找出原因,才可再次通电.4. 在调试过程中如有发现时间变化参数很大,应认真找出原因,是否原件的热性不好。应更换元件,电路设计是否合理。八、参考文献1 李朝青,刘艳玲等.单片机原

9、理及接口技术m.北京:北京航空航天大学出版社,2013. 2边春元等.c51单片机典型模块设计与应用m.北京:机械工业出版社,2008.3杨将新,李军华,刘东骏等.单片机程序设计及 应用从基础到实m. 北京:电子工业出版社,2006.4雷思孝,冯育长等.单片机系统设计及工程应用m.北京:电子工业出版社,2005.5白小明,徐芳等.汇编语言程序设计m.北京:中国铁道出版社,2009.6于京,张景璐.51单片机c程序设计与应用案例m.北京:中国电力出版社,2006.7王港元.电子电工实践指导(第三版)m.南昌:江西科学技术出版社,2003.8阎石.数字电子技术基础m.北京:高等教育出版社,2006

10、.9高吉祥,徐欣,吴帅等.基本技能训练与单元电路设计m.北京:电子工业出版社,2007.10孙裕晶,沙玲等.实用控制系统设计教程m.长春:吉林大学出版社,2000.九、附录1、电路总原理图图7、总原理图2、pcb设计图图8、pcb图3、电路板效果图图9、实物图4、外型设计图图10、外观cad图5、作品整体效果图图11、作品整体效果图6、程序#include #define uchar unsigned char#define snake 20 /最大长度#define time 50 /显示延时时间#define speed 71 /速度控制sbit keyenable=p36;/方向使能sb

11、it keyy=p02;/上下*/sbit up=p33; /downsbit down=p31;sbit right=p32;sbit left=p34;uchar xsnake+1;uchar ysnake+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

12、k;k=0;if(x17|y17)k=1; /撞墙for(i=2;in;i+)if(x1=xi)&(y1=yi)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!

13、=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;isnake+1;i+)p2=mux(xi);p1=255-

14、mux(yi);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;elsep1=0xff;p2=0x00; for(i=3;isnake+1;i+)xi=100;for(i=3;isnake+1;i+)yi=100;/初始化 x0=4;y0=4; /果子 n=3; /蛇长 n=-1 x1=1;y1=0; /蛇头 x2=0;y

15、2=0; /蛇尾1 addx=0;addy=0; /位移偏移 k=1; while(1)if(keyenable)break;timer0(1); while(1) timer0(e); if(knock()e=speed;break; /判断碰撞 if(x0=x1+addx)&(y0=y1+addy) /是否吃东西 n+; if(n=snake+1) n=3;e=e-10; for(i=3;isnake+1;i+)xi=100; for(i=3;i1;i-)xi=xi-1;yi=yi-1; /xn-1=x2;yn-1=y2; x1=x2+addx;y1=y2+addy; /移动 电子线路综合课程设计成绩

温馨提示

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

评论

0/150

提交评论