单片机系统综合课程设计-模拟射击游戏.doc_第1页
单片机系统综合课程设计-模拟射击游戏.doc_第2页
单片机系统综合课程设计-模拟射击游戏.doc_第3页
单片机系统综合课程设计-模拟射击游戏.doc_第4页
单片机系统综合课程设计-模拟射击游戏.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

沈阳航空航天大学 课课 程程 设设 计计 报报 告告 课程设计名称:单片机系统综合课程设计单片机系统综合课程设计 课程设计题目: 模拟射击游戏模拟射击游戏 院(系):计算机学院 专 业: 计算机科学与技术 班 级: 24010101 学 号: 2012040101028 姓 名: 指导教师: 说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要说明:结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要 求;数据不实求;数据不实,不予通过。报告和电子数据必须作为实验现象重复的关键依据。不予通过。报告和电子数据必须作为实验现象重复的关键依据。 沈阳航空航天大学课程设计报告 I 学术诚信声明 本人声明本人声明:所呈交的报告(含电子版及数据文件)是我个人在导师指 导下独立进行设计工作及取得的研究结果。尽我所知,除了文中特别 加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表 或撰写过的研究结果,也不包含其它教育机构使用过的材料。与我一 同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明 并表示了谢意。报告资料及实验数据若有不实之处,本人愿意接受本 教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后 果。 本人签名: 日期: 2015 年 7 月 10 日 沈阳航空航天大学课程设计报告 II 沈阳航空航天大学沈阳航空航天大学 课课程程设设计计任任务务书书 课程设计名称单单片片机机系系统统综综合合课课程程设设计计专业计算机科学与技术计算机科学与技术 学生姓名王圣和班级 24010101 学号 2012040101028 题目名称模拟射击游戏模拟射击游戏 起止日期2015年6月 29日起至2015年7月10日止 课设内容和要求: 了解射击游戏的原理,模拟一个射击游戏。具体内容如下: 1游戏至少分简单、中等、复杂三种级别,预先设计三种级别中猎物每次出现的数量(最 多 四个)、方向、移动的速度、停留的时间等; 2可以自选游戏级别,游戏开始时猎物出来,即单色灯依次亮灭。此时,如果游戏者的按 键 和小灯的位置相同,即代表打中,计分牌加 1 分(单色灯的位置右分别为 0 到 7); 3键盘上设置暂停键、结束键、开始键等,并在游戏进行过程中显示得分数. 二、课程设计要求 1独立完成课程设计任务; 2通过老师当场验收; 3交出完整的课程设计报告。 参考资料: 1 张毅刚,刘杰. MCS-51 单片机原理及应用M. 哈尔滨:哈尔滨工业大学出版社,2008 2 高 锋. 单片微型计算机原理与接口技术M. 北京:科学出版社,2007 3 胡汉才. 单片机原理及其接口技术M. 北京:清华大学出版社,2004 教教研研室室审审核核意意见见: 教教研研室室主主任任签签字字: 指导教师(签名)指导教师(签名) 年月日 沈阳航空航天大学课程设计报告 III 学学 生(签名)生(签名)年月日 沈阳航空航天大学课程设计报告 IV 课程设计总结:课程设计总结: 通过两周的课程设计,让我感受最深的就是学习是一种乐趣。从拿到任务书 起,充分利用网络及图书馆等资源,查询资料,了解单片机的编程原理以及实验 箱的原理。在之前专业课理论知识的基础上,我们又从模糊到熟悉逐渐了解了什 么是单片机编程。在实现的过程中发现我发现自己的理论知识的不足,同时所学 的知识掌握不牢固,就是通过这次课程设计,不仅拓宽了我的知识面,还巩固和 夯实了所学的理论知识,同时纠正了一些知识点上的错误认识和理解。其次,有 一些问题,当我们一个人面对的时候可能怎么都想不明白,可是当我们跟其他人 一起探讨时,好多时候,问题都迎刃而解,可见团队合作的重要性,而且我们要 养成谨慎,认真,踏实,有耐心,坚持的作风,尤其是要亲自动手去做,没有付 出是不会有回报的。回顾这两周的课设,我学会了单片机编程的一些功能的使用, 但只是一小部分而已,我此后将继续研究这么一个强大的工具。对于仿真软件的 使用,非常有成就感,极大的激发了我们对新鲜事物学习的兴趣,从而以积极的 心态去面对这次课程设计。 最后,非常感谢老师的细心指导,让我能开阔我的思路,让我对问题有更深 刻的认识,锻炼了我的解决问题的能力,对我以后无论是学习还是其他方面的能 力都有了很大的提高。 沈阳航空航天大学课程设计报告 V 目目 录录 1 总体设计方案总体设计方案.1 1.1 设计需求.1 1.2 设计环境.1 1.3 设计原理.1 1.3.1 设计思路.2 1.3.2 键盘扫描原理.2 2 详细设计方案详细设计方案.3 2.1 硬件及软件使用.3 2.2 软件的设计.3 2.1.1 主程序设计.3 2.1.2 L1 程序设计.3 2.1.3 L2、L3 程序设计 .5 2.1.4 键盘程序设计.7 3 结果测试及分析结果测试及分析.8 3.1 结果测试.8 3.2 结果分析.9 参考文献参考文献.10 附附 录(关键部分程序清单)录(关键部分程序清单).11 沈阳航空航天大学课程设计报告 1 1 总体设计方案 1.1 设计需求设计需求 通过了解射击游戏的原理,利用 LAB8000 实验箱上的 MSC51 单片机系统、 键盘、数码管和 LED 灯模拟射击游戏的运行过程。用点亮的 LED 彩灯表示猎物 的当前位置,键盘数字键 07 对应 8 个 LED 灯用来表示射击猎物的位置,数码 管显示当前的游戏当前分数。要求设计游戏能按以下工作方式运行: (1)游戏至少分为简单、中等和复杂三个级别,预先设计三种级别中猎物 每次出现的数量(最多四个)、方向、移动的速度、停留的时间等; (2)可以自选游戏的级别,游戏开始时猎物出来,即单色灯有序地依次亮灭。 此时,如果游戏者的按键和小灯的位置相同,即代表打中,记分牌加 1 分; (3)键盘上设置暂停键、结束键、开始键、并在游戏进行过程中显示得分。 1.2设计环境设计环境 本次课程设计所采用芯片,系统设计所需硬件都已集成于 LAB8000 实验箱上。 LAB8000 实验箱一款紧凑、快速调试数字电路设计强有力的便携式逻辑分析仪; 实验箱包括 MSC-51、80C196、8088/86、ARM、PIC57 五种 MCU;键盘、LCD、数 码管,LED 等外部设备,以及各种传感器;高速的 USB2.0 接口、高端的 FPGA、 强大的 ARM 处理器等组成的嵌入式系统全方位智能控制;高速、高效、高性能, 帮你轻松搞定问题。先使用软件使用 Keil uVision3,并用 80C51 单片机的 C 语 言进行编程,然后在试验箱上进行实验。 1.3设计原理设计原理 采用键盘扫描技术,实现矩阵键盘的扫描、延时去抖和对键盘输入数据的自 动识别;通过 MCS-51 单片机的 I/O 接口实现对 8 个 LED 灯亮灭的循环控制;通 过 MCS-51 单片机自身的定时器进行数码管的定时刷新显示;通过软件编程,实 现对射击游戏的具体运行过程的控制。 沈阳航空航天大学课程设计报告 2 1.3.1 设计思路设计思路 (1)通过 MCS-51 单片机点亮的 LED 灯表示猎物的位置,键盘数字键 07 对应 8 个 LED 灯用来表示射击猎物的位置,A 表示游戏开始,B 表示游戏暂停, C 表示游戏结束。 (2)用 MCS-51 的 P1 口保存当前猎物的位置值,按照设定的速度不断变化, 在设定的停留时间将其转换成 LED 灯的亮灭显示。 (3)通过键盘读出键值,比较两位置值是否相等,如果相等这表示射击击中 猎物同时加 1 分,否则不击中,继续等待新的键入判断。 (4)在游戏的过程中可以通过按功能键实现游戏的开始、暂停、结束。 1.3.2 键盘扫描原理键盘扫描原理 键盘扫描程序采用逐列扫描的方式进行,具体算法如下: (1)判断键盘是否闭合:通过扫描键盘的行地址的 KEY0KEY3 进行扫描 若全为,则键盘上无闭合键;若不全为,则有键处于闭合状态。 (2)消除键的机械抖动:判别键盘闭合后,延迟一段时间后再判别键盘的 状态,若仍有键闭合,则认为键盘上处于一个稳定的闭合期,否则为键盘的抖动, 不进行读值处理。 (3)获取闭合的键号:对键盘的列线进行逐列扫描,依次输入 0XFB, 0XF7, 0XEF, 0XDF,即只有一列为低电平,其余各列为高电平。然后,读取键盘的行 值,若该行有键按下则该行为低电平,其余为高电平,从左往右 03 列,从下 往上 03 行。因此,闭合的键号为:N=行号+列号*4。 (4)使 CPU 对键的一次闭合仅作一次处理,利用等待闭合键释放后再做处 理的方法。 沈阳航空航天大学课程设计报告 3 2 详细设计方案 2.1 硬件及软件使用硬件及软件使用 本设计中用到的硬件有 LAB8000 实验箱上的小键盘、八段数码管,以及 8 个 LED 灯。将试验箱上 CS0 口与 KEYLEDCS 口相连而单片机的 P1.0P1.7 分别 与 LED 灯的 L0L7 相连;通过 Keil uVision3 软件进行程序的编写 8051C 语言 程序,并通过其进行与试验箱互联,进行程序的运行与调试工作,详细电路图见 图 2.1 所示。 2.2 软件的设计软件的设计 软件的设计分为主程序设计、游戏等级程序设计、及键盘程序设计 3 部分组成。 2.1.1 主程序设计主程序设计 主程序入口循环检测键盘是否有键入,没有按键则等待按键键入,表示还没 有选择游戏等级,不能开始游戏。游戏者需要先选择 1、2、3 三个游戏等级,然 后键入 A 可以开始相应等级的游戏。,选择不同的等级将分别用 L1、L2、L3 程 序来处理。在游戏的过程中可以同按 B 键进行暂停,通过按 C 键退出相应的游戏 等级并通过选择进入下一个游戏等级,流程图如 2.1 所示。 2.1.2 游戏等级游戏等级 1(L1)程序设计)程序设计 L1 程序是游戏的第 1 等级。主要实现对一个猎物的控制。P1 端口连接 8 个 LED 灯,由于 LED 灯低高平有效,通过 P1 端口送出 8 位二进制数,即可以实现对 8 个 LED 灯亮灭的控制。用 P1 保存要通过 LED 灯显示的猎物的位置值,通过查 表及定时器方式来实现猎物的数量(最多四个)、方向、移动的速度、停留的时 间等,通过不断的查询是否有键盘输入的值与 P1 口当前的值是否相同来判别是 否打中猎物。如果打中则等分加一,否者不得分,程序的流程图如图 2.2 所示。 沈阳航空航天大学课程设计报告 4 图图 2.1 电路原理图电路原理图 沈阳航空航天大学课程设计报告 5 图图 2.2 主程序流程图主程序流程图 2.1.3 游戏等级游戏等级 2、3(L2、L3)程序设计程序设计 L2 程序是游戏的第 2 等级。主要实现对多个猎物的控制和对猎物移动方向 的控制。用 P1 保存要通过 LED 灯显示的猎物的位置值,通过查表及定时器方式 开始 等待按键输入游戏等级 输入 1、2、3 否 等待按键输入开始 是 输入 A 否 L1 程序 L2 程序 L3 程序 等待按键输入 输入 C 否 结束 输出得分 沈阳航空航天大学课程设计报告 6 来实现猎物的数量、方向、移动的速度、停留的时间等,通过不断的查询是否有 键盘输入的值与 P1 口当前的值是否相同来判别是否打中猎物。如果打中则等分 加一。 L3 与 L2 结构基本相同,不同在于查表的值不同,L3 用通过查表实现同时 出现了四个猎物。通过对猎物出现的的时间的控制来实现了对猎物的移动速度的 控制。 图图 2.3 L1 程序流程图程序流程图 开始 输出当前猎物的位置 到 P1 口 等待键盘的输入 判断输入是否与 P1 相等 得分加一 是 判断是否输入 B、C 等待键盘的输入 输入 B 判断输入 A、C 结束 输入 C 输入 C 输入 A 沈阳航空航天大学课程设计报告 7 2.1.4 键盘程序设计键盘程序设计 键盘扫描程序采用逐列扫描的方式进行,通过两次判断是否有键按下来消除 机械抖动。依次向 8002 地址中输入 BUFFER4 = 0XFB, 0XF7, 0XEF, 0XDF;, 然后读取键盘的行值,若该行有键按下则该行为低电平,其余为高电平,从左往 右 03 列,从下往上 03 行。因此,闭合的键号为:N=行号+列号*4,流程图 如图 2.3 所示。 图图 2.4 键盘程序流程图键盘程序流程图 开始 依次向 8002 中输入BUFFERJ TEMP = 0X01;J=0;I=0; J4 I4 key 结束 I+ J+ 是 否 是 是 否 否 沈阳航空航天大学课程设计报告 8 3 结果测试及分析 3.1 结果测试结果测试 程序编译连接完成之后,对课程设计要求的各项内容进行测试,按射击游戏 控制系统连线图连接好电路以后,把程序编译下载到机器中运行。运行的的测试 案例如表 3.1 所示。 表表 3.1 测试表测试表 操作LED 显示 得分 备注 11111111 按 1 键11111111选择游戏等级 1 按 A 键11111111 00开始游戏 00010000 00 00000010 00 按 3 键00001000 01打中 按 3 键00010000 01没打中 按 7 键10000000 02打中 00001000 02 按 B 键00001000 02暂停 00001000 02暂停 00001000 02暂停 按 A 键00100000 02开始 按 C 键00000000 00退出 按 2 键00000000 00选择游戏等级 2 按 A 键00000000 00开始游戏 10000100 00 按 7 键10001000 01打中 按 B 键01001000 01暂停 沈阳航空航天大学课程设计报告 9 01001000 01 按 A 键10010000 01 11000000 01 按 C 键00000000 00退出 按 3 键00000000 00选择游戏等级 3 按 A 键00000000 00开始 01101010 00 按 4 键01011010 01打中 按 B 键11010010 01暂停 11010010 01 按 A 键11001010 01 按 C 键00000000 00退出 经过多次循环测试,程序可实现如下功能: (1)通过选择游戏等级,进入不同的等级游戏。 (2)在猎物移动过程中,游戏者可以射击猎物,如果击中分数加 1 分,否则不 得 分。 (3)在游戏过程中,可以随时暂停游戏,结束暂停,结束游戏。 3.2 结果分析结果分析 按照课程设计的要求,游戏的各项功能基本得以实现。由于 LAB8000 实验箱 对于芯片的集成度较高,外部的连线相对较少。在读入按键键值时,可能是键盘 硬件的原因,某些情况下键盘响应时间不可忽略。由于键盘采用查询方式会造成 延时,对于这种程序上设计的缺陷,本应该将判断键值的程序用中断实现,可以 消除这种时间的不同步,但是考虑处理器执行指令速度较快上述情况发生的概率 很小,并没有改变程序的设计思路。 沈阳航空航天大学课程设计报告 10 参考文献 1 张毅刚,刘杰. MSC-51 单片机原理与应用M. 哈尔滨:哈尔滨工业大学出版 社,2008 2 高峰. 单片微型计算机原理与接口技术M. 北京:科学出版社,2007 3 胡汉才.单片机原理及其接口技术M. 北京:清华大学出版社,2004 4 郭天祥.新概念 51 单片机 C 语言教程M.北京:电子工业出版社,2009. 5 张迎新单片机初级教程单片机基础M北京航空航天出版社,2006 6 江世明,黄同成单片机原理及应用M中国铁道出版社,2010 沈阳航空航天大学课程设计报告 11 附 录(关键部分程序清单) #include #include #define uchar unsigned char #define uint unsigned int xdata uchar key _at_ 0 x8001; xdata uchar led _at_ 0 x8002; xdata uchar dat _at_ 0 x8004; uchar code keytable16=0 x0d,0 x0c,0 x0b,0 x0a,0 x0e,0 x03,0 x06,0 x09,0 x0f,0 x02,0 x05,0 x08,0 x00, 0 x01,0 x04,0 x07;/键盘值表键盘值表 uchar code LEDtable16=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;/七段显示码七段显示码 uchar code Ltable18=0 x80,0 x02,0 x08,0 x10,0 x40,0 x01,0 x04;/L1 表表 uchar code Ltable28=0 x81,0 x12,0 x48,0 x14,0 x42,0 x21,0 x44;/L2 表表 uchar code Ltable38=0 x33,0 x87,0 x72,0 x8e,0 x35,0 x59,0 xc5;、/L3 表表 uint Leds2; uchar num=0; uchar scores=0; uint k2; uchar k,k1=0; uchar i,j,temp; uchar t; uchar k4; uint f2=0; uchar Buffer4 = 0 xfb, 0 xf7, 0 xef, 0 xdf;/存放键盘的列值存放键盘的列值 沈阳航空航天大学课程设计报告 12 void delay(uint p)、/延时延时 1ms int i,j; for(i=0;ip;i+) for(j=0;j124;j+) ; uint getkey()/获取键值获取键值 uchar i,j,temp; uchar Buffer4 = 0 xfb, 0 xf7, 0 xef, 0 xdf; for(j=0; j4; j+) led = Bufferj; temp = 0 x01; for(i=0; i4; i+) if(!(key delay(10); return (i+j*4); temp =1; delay(26); void jianpan(uint k4) /键盘判断程序键盘判断程序 int flag=0; uchar b; f2=0; if(k4=0 x0c) scores=0; f2=1; Leds0=scores/10; Leds1=scores%10; return; if(k4=0 x0b) flag=1; TR0=1; 沈阳航空航天大学课程设计报告 15 if(k4=0 x00) b=0 x01; if(P1 Leds0=scores/10; Leds1=scores%10; if(k4=0 x01) b=0 x02; if(P1 Leds0=scores/10; Leds1=scores%10; if(k4=0 x02) b=0 x04; if(P1 沈阳航空航天大学课程设计报告 16 Leds0=scores/10; Leds1=scores%10; if(k4=0 x03) b=0 x08; if(P1 Leds0=scores/10; Leds1=scores%10; if(k4=0 x04) b=0 x10; if(P1 Leds0=scores/10; Leds1=scores%10 ; if(k4=0 x05) b=0 x20; if(P1 Leds0=scores/10; Leds1=scores%10; if(k4=0 x06) b=0 x40; if(P1 Leds0=scores/10; Leds1=scores%10; if(k4=0 x07) b=0 x80; if(P1 Leds0=scores/10; Leds1=scores%10; while(flag) 沈阳航空航天大学课程设计报告 18 k2=getkey(); k4=keytablek2; /TR0=0; if(k4=0 x0a) flag=0; TR0=1; break; if(k4=0 x0c) flag=0; return; void start() /L1 开始程序开始程序 uchar s=0; Time0_Init(); while(1) k2=getkey(); k4=keytablek2; jianpan(k4); if(num=20) 沈阳航空航天大学课程设计报告 19 num=0; s+; P1=Ltable1s%8; if(f2=1) return; void Lever1() /L1

温馨提示

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

评论

0/150

提交评论