ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:509.79KB ,
资源ID:30492910      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/30492910.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的新贪吃蛇游戏设计与制作.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的新贪吃蛇游戏设计与制作.docx

1、基于单片机的新贪吃蛇游戏设计与制作暑期任务实验报告总结题目: 红外控制贪吃蛇游戏2012年8月28日1 引 言如今,游戏机风行的程度,是第一台电子游戏机的研制者诺兰-布什纳尔先生始料不及的。在全世界最大的城市,直至最小的村庄,从纽约最辉煌的游乐场,到高加索最小的乡镇儿童娱乐点,在千家万户,正在进行着千千万万这样的“战斗”,伴随着无数成功与失败,兴奋与懊丧。游戏机带来了一个全球性的疯狂症,其他任何娱乐与之相比都望尘莫及。然而,究竟是什么原因使游戏机如此风行呢? 在回顾了游戏机发展简史之后,我们不难悟出,技术进步在游戏机发展过程中起到了极大的促进作用。第二次世界大战以后,电子计算机技术得到了突飞猛

2、进的发展。先是由晶体管代替了笨重的真空管,后来出现了集成电路和大规模集成电路,使电子计算机一代一代实现更新,同时软件技术也发展迅速。在美国,集中了许多计算机软件的设计人才,他们工作之余,时常喜爱编一种能与人斗智的“游戏”,以此来锻炼编程的能力。这种“游戏”花样繁多,但其特点都是利用计算机软件事先设计好的“分析”、“判断”能力反过来与人较量。由于不断修改更新,使计算机的“智力”水平与人难分高低。随着深蓝计算机与人的棋类对决,到现在的PSP游戏机或者是家庭用的X-BOX游戏机,游戏机的技术是日益的发展、进步。但是,技术进步绝不是游戏机风行的唯一因素。随着终端设备开发能力的加强,作为娱乐终端的游戏机

3、也得到了很大程度的发展。只有得到了游戏终端技术的支持,才能做出更新、更高难的游戏。这也加速了游戏机在全球风行程度,所以对于游戏机的研究和设计具有很重要的意义,这也是本课题研究的来源二 课题任务及设计思路2.1主要任务组建遥控器控制电路,要求通过遥控器的方向键控制贪吃蛇游戏。(类似于贪吃蛇游戏)2.2 设计思路1此实验我们采用38k的红外对LCD控制,通过红外接收模块对遥控数据进行采集,MCU中心模块主要对采集数据进行判断,并相应的去控制LCD的显示模块。2软件设计流程: 2.2.1 主控制器的选择STC90C51是标准的40引脚双列直插式集成电路芯如图2-1所示,AT89C51是一种带64K字

4、节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 STC90C51具有以下标准功能:64K 字节 Flash,1280 字节 RAM,32 位 I/O 口线,看门狗定时器,2 个数据指针,2个 16 位 定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口, 片内晶振及时钟电路。另外,STC90C51 可降至

5、0Hz 静态逻 辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RAM、定时器/计数器、串口、中断继续工 作。掉电保护方式下,RAM 内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止。图2-1 AT89S52的引脚图(1)管脚功能输入/输出口P0.0P0.7 P0口8位双向口P1.0P1.7 P1口8位双向口P2.0P2.7 P2口8位双向口P3.0P3.7 P3口8位双向口 ALE 地址锁存控制信号在系统扩展时,ALE用于控制把P0口输出的低8位地址送入锁存器锁存起来,以实现低位地址和数据的分时传送。此外由于ALE是以六分之一晶振频率的

6、固定频率输出的正脉冲,因此可作为外部时钟或外部定时脉冲使用。 PSEN 外部程序存储器读选通信号在读外部ROM时 PSEN有效(低电平),以实现外部ROM单元的读操作。 EA 访问程序存储器控制信号当 EA 信号为低电平时,对ROM的读操作限定在外部程序存储器;而当 EA信号为高电平时,则对ROM的读操作是从内部程序存储器开始,并可延续至外部程序存储器。 RST 复位信号当输入的复位信号延续2个机器周期以上高电平时即为有效,用以完成单片机的复位操作。 XTAL1和XTAL2 外接晶体引线端当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。 V

7、ss 地线Vcc +5V电源(2) 常见的第二功能信号 P3口线的第二功能P3的8条口线都定义有第二功能如表2-1所示表2-1 端口第二功能口线第二功能信号名称P3.0RXD串行数据接收P3.1TXD串行数据发送P3.2INT0外部中断0申请P3.3INT1外部中断1申请P3.4T0定时器/计数器0记数输入P3.5T1定时器/计数器1记数输入P3.6WR外部RAM写选通P3.7RD外部RAM读选通(3) EPROM存储器程序固化所需要的信号有内部EPROM的单片机芯片(例如80C51),为写入程序需提供专门的编程脉冲和编程电源,它们也是由信号引脚以第二功能的形式提供的,即:编程脉冲:30脚(A

8、LE/ PROG)编程电压(25V):31脚(EA/Vpp)2.2.2 液晶屏的选择 采用320*240LCD,根据CPU的指令进行输出。320*240的分辨率对于小游戏来讲已经是非常高的分辨率了,足以满足小游戏的显示要求,使图像清晰,色彩丰富!红外的选择 采用38K的红外遥控和接收,红外遥控的特点是不影响周边环境、不干扰其它电器设备。由于其无法穿透墙壁,故不同房间的家用电器可使用通用的遥控而不会产生相互干扰;电路调试简单,只要按给定电路连接无误,一般不需任何调试即可投入工作;编解码容易,可进行多路遥控。三 具体设计3.1软硬件基本分工硬件:主要实现红外的发射与接收,单片机最小系统使红外接受管

9、工作及实现彩屏的输出;软件:实现红外的解码,实现按键映射到游戏屏幕的动作,实现游戏规则的判定等等。3.2硬件设计部分3.2.1电源部分 电源部分由手机充电器直接提供,大概是5V/500MA,刚好是单片机需要的电源。 3.2.2 复位电路上电复位采用电平方式开关复位。如图3-4所示。 上电复位用RC电路,电容用10uF,电阻用10K。 如图3-4 复位电路3.2.3液晶显示芯片与单片机接口电路液晶显示屏共有15个引脚,其中VDD接电源,GND接地,RS接单片机的P0.0脚,RW接单片机的P0.1脚,复位接P0.4脚,RD接P0.2脚,CS接P0.3脚,D0D7数据段接口接P2.0P2.7。如图3

10、-2.3所示图3-2.3液晶显示与单片机相连电路图3.2.4 K38与单片机接口电路 图3-6 K38与单片机接口电路本游戏共有4个控键,分别是:四个方向键,用于控制小点的移动方向;分别是上下左右四个方向程序通过中断的方式检查是否有按键按下,调用移动函数。每次有按键按下,小点会做出相应的反应。3.3 软件部分设计3.3.1 软件部分主要负责a红外解码,b将按键输入通过算法映射为小蛇在屏幕上的动作、c生成随机数(既小蛇的食物),d判定是否吃到食物/是否过关/是否结束游戏等等;1.红外编码方式 本实验红外采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示

11、二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,(如下图所示) 本红外每次发送的数据格式为引导码+8位系统码+8位系统反码+8位数据码+8位数据反码,周期约为108ms。其中引导码由9ms低电平和4.5ms的高电平组成。(如下图所示) 如果键按下超过108ms仍未松开,接下来发射的代码(连发码)将仅由起始码(9ms)和结束码(2.25ms)组成。(如下图所示)2.软件解码 基于红外的编码方式我们的软件解码思路为,用红外的引导码的脉冲负边沿触发单片机的外部中断,进入中断,在中断中完成解码,并转换得到按键的具体的按键值。具体实现步骤:a. 外

12、部触发进入中断,延时约2ms,若仍是低电平则确认为信号出现,进入下一步,否则跳出中断,等待下一次触发;b. 等待9MS的低电平后再等待经过4.5MS的高电平(此时引导码已结束);c. 收集四组数据存入数组IRCOMj中(其中IRCOM0为系统码,IRCOM1为系统反码,IRCOM2数据码,IRCOM3为数据反码);d. 判定数据是0还是1。我们采用的是在每位数据的高电平期间在适当的延时下让N自加(由红外编码方式知0与1的区别在于高电平的时长不一样,1的高电平比0的长),然后判定N的值可知数据为0或1,我们预设当N8时数据为0,当8=N30时为无效数据,跳出中断等待下一次触发;e. 小循环8次得

13、到一组数据;f. 大循环4次得到4组数据;g. 数据码存在IRCOM2中,所以判定IRCOM2的值就知道按键按的是哪个了。(上0X18,下0X5A,左0X08,右0X52)。遥控器按键上下左右按键码0X180X5A0X080X52附加具体代码:void IR_IN(void) interrupt 0 /外部中断服务程序 unsigned char j,k; unsigned int N=0; EX0 = 0; delay_14(15); if (IRIN=1) EX0 =1; return; /确认IR信号出现 while (!IRIN) /等IR变为高电平,跳过9ms的前导低电平信号。 de

14、lay_14(1); for (j=0;j4;j+) /收集四组数据 for (k=0;k=30) EX0=1; return; /0.14ms计数过长自动离开。 /高电平计数完毕 IRCOMj=IRCOMj 1; /数据最高位补“0” if (N=8) IRCOMj = IRCOMj | 0x80; /数据最高位补“1” N=0; /end for k /end for j if (IRCOM2!=IRCOM3) EX0=1; return; switch(IRCOM2) case 0x18: Dx=0;Dy=-5 ; break;/按键2 case 0x08: Dx=-5;Dy=0 ; b

15、reak;/按键4 case 0x5A: Dx=+5;Dy=0 ; break;/按键6 case 0x52: Dx=0;Dy=+5 ; break;/按键8 EX0 = 1; 3.3.2 几个主要部分的具体算法 a.本实验采用中断解码,具体算法在3.3.1软件解码以说明;b.小蛇食物由rand()函数产生随机数,通过Sx=rand()%213+13; Sy=rand()%193+53; 将其限定在游戏框图中;c. 小蛇是否吃到食物的判定:通过小蛇当前坐标的值(X,Y)与随机数(SX,SY)比较,当X与SX的差的绝对值与 Y与SY的差的绝对值 同时满足小于等于3,则判定小蛇吃到食物;d.小蛇出

16、界判为游戏结束:当小蛇当前坐标X226或Y249 就判为出界,游戏结束;E.过关:当吃到的食物数m8,则进入下一关。 N 3.3.3 软件实现的结果 实现结果与预期基本一致,红外遥控可以实时的控制小蛇的上下左右的运动,当吃到食物后小蛇加长,并且分数加一分,当吃到食物数大于8时进入下一关,随机数产生的小蛇的食物都能落在游戏限定的框图内部,当小蛇触碰游戏框图边缘时游戏结束并显示“GAME OVER”.四、整机调试和检测结果4.1遇到问题及解决方法:a.本次实验硬件部分较简单,所以未出现什么重大问题,就是在焊接时彩屏引脚的GND脚虚焊导致一开始时彩屏显示不正常,经万用表检测后很快排除了问题;b.本次

17、实验软件问题出现的较多,具体如下:1.由于未能正确理解红外的编码方式,在解码时将引导码部分9MS的低电平忽略,导致数据经常读错或是未能读出数据等,后来按照正确的顺序解码就得到了正确的数据;2.由于小蛇的食物需要随机数产生,所以一开始设想使用读取定时器的TL0来作为随机数,但是实验时,中断一直无法开启,无法得到随机数,后来经查阅资料及询问老师得知外部中断输入脚不能与计数/定时器同时使用,后来改用RAND()函数产生随机数后解决了问题;3.在实验过程中出现了总是有一个随机的方块出现(非随机数产生的),后来经认真检查程序后得知是坐标数组Zx,Zy的最后一个值程序未给,于是系统每次都给其填充一个随机值

18、或是上次该内存地址的值直接赋给了该数组的最后一位,再经程序在彩屏上输出就是一个乱点了。后来,经过把小蛇吃到的食物的坐标SX,SY赋给Zx,Zy后乱点小时,问题解决。五总 结 通过本次的实验项目,我们加深了对红外遥控的了解,将小游戏的控制有传统的有线连接升级到无线控制,相信这项技术将给游戏的控制带来极大的方便,玩游戏时只要拿个红外遥控器就可以了,而不必再连笨重的屏幕与主机之类的都要提在手上了,这必将被喜欢轻便的年轻人所热衷,由此看其有相当大的发展空间。这项技术在其它许多领域也有许多有许多可以改造运用的空间,例如,在家用电器的控制方面,以及多媒体教学方面也有极大的用途,在工业方面,尤其是在有些特殊

19、的操作环境下,例如,高温处人无法直接到达的地方,使用红外控制,既可以高度的防止环境干扰,又可以达到实时精确的操作机械的目的。参考文献1全国大学生电子设计竞赛组委会.第五届全国大学生电子设计竞赛获奖作品选编.北京理工大学出版社,2005. 10-172 康华光,陈大钦.电子技术基础模拟部分第四版. 第四版.北京:高等教育出版社,1999.82-1553 康华光,邹寿彬.电子技术基础数字部分第四版. 第四版.北京:高等教育出版社,2000. 83-1554周坚如何用C语言编写计数器程序无线电合订本,2004年(下):213-2145黄智伟,王彦,陈文光.全国大学生电子设计竞赛训练教程.电子工业出版

20、社,2005.304-314 6张万奎模拟电子技术M湖南湖南大学出版社,2005:226-2297彭为,黄科,雷道仲.单片机典型系统设计实例精讲.电子工业出版社.2006.58李广弟,朱月秀,王秀山.单片机基础.第2版.北京航空航天大学出版社,2001.13-719梅丽风,王艳秋,张军等.单片机原理及接口技术.清华大学出版社,2004.296-32310 涂时亮等单片机软件设计技术 科学技术文献出版社重庆分社:199811 席德勋现代电子技术D北京高等教育出版社,2002:121-12512 陆子明,徐长根.单片机设计与应用基础M.北京:国防工业出版社,2005 13 刘胜利.新型显示器电路分

21、析.北京:电子工业出版社,1999.122-34414 胡伟单片机C程序设计及应用实例.北京:人民邮电出版社, 2003.1-24715 实用电子元器件手册.上海:上海科学技术出版社,1998.1-2116 李广弟等.单片机基础 (修订本).北京:北京航空航天大学出版社,2002.1-22317 胡汉才.单片机原理及接口技术.清华大学出版社,1996 18 刘征宇,韦立华.最新74系列IC特性代换手册.福州:福建科学技术出版社,2002.1-12219 李玉峰等 MCS-51系列单片机原理与借口技术. 北京:人民邮电出版社2004.12-55附 录1 总电路图 1原理图 2 工作PCB附 录2

22、 部分程序#include#include#include#include#include delay.h#define uchar unsigned char#define uint unsigned int#define FOSC 22118400 /*/ sbit IRIN = P32; /红外接收器数据线/*/uchar IRCOM7;uchar NUM=0123456789;uint Zx35,Zy35;/*/uint y=160 ,x=120,Dx=5,Dy=0,Sx,Sy,n=0,m=1;unsigned char time=200;/*/void chushihua(); /游

23、戏界面初始化void xianshi(uint x);void diyiguan();void dierguan();/*/void main() / 主函数 IRIN=1; IE = 0x81; /允许总中断中断,使能 INT0 外部中断 TCON = 0x01; /触发方式为脉冲负边沿触发 Zx0=120; Zy0=160; /I/O口初始化 chushihua(); /游戏界面初始化 diyiguan(); while(1) n+; x=x+Dx; Zxn=x; y=y+Dy; Zyn=y; if(x226)|(y249)|(y50) GUI_sprintf_string(80, 120

24、, GAME OVER, RED,0); /显示 GAME OVER while(1); if(abs(Zxn-Sx)=5)&(abs(Zyn-Sy)=9) y=160;x=120;Dx=5;Dy=0; n=0;m=1; Zxn=x; Zyn=y; dierguan(); /*/void chushihua() /游戏界面初始化 ILI9325_initial(); /*TFT彩屏初始化*/ delayms(20); GUI_clearscreen(0); /清屏 GUI_sprintf_HZ(20, 20, YELLOW,0); /显示 贪吃蛇小游戏 GUI_sprintf_string(6

25、0, 60, -CDD, RED,0); /显示 -CDD GUI_sprintf_HZ2(110, 60, BLUE,0); /显示小组制作 GUI_sprintf_HZ3(40, 130, RED,0); /显示开始游戏 GUI_DisPicture(53, 180, 133, 100); /显示图片 while(1)/扫描按键 等待开始游戏 if(IRCOM2=0x18|IRCOM2=0x08|IRCOM2=0x5A|IRCOM2=0x52) break; GUI_sprintf_string(20, 130, , YELLOW,0); delay200ms(); GUI_sprintf_string(20, 130, , 0,0); delay50ms(); /*/void IR_IN(void) interrupt 0 /外部中断服务程序 unsigned char j,k; unsigned int N=0; EX0 = 0; delay_14(15); if (IRIN=1) EX0 =1; return; /确认IR信号出现 while (!IRIN) /等IR变为高电平,跳过9ms的前导低电平信号。 delay_14(1); for (j=0;j4;j+) /收集四组数据 for (k=0;k8;k+) /每组数据有8位

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1