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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机设计兵乓球游戏模拟器设计.docx

1、单片机设计兵乓球游戏模拟器设计单片机课程设计乒乓球游戏模拟器设计 时间:2009年6月3日摘要以AEDK5196ET实验系统为平台,藉由51单片机与可编程接口芯片8279,利用单片机中的定时器、I/O接口系统及数码管显示电路,设计一个具有一定功能的乒乓球游戏模拟器,可以在仿真环境下模拟单轨道的乒乓球比赛。设计的电路采用P1口模拟球的移动,用8个LED灯反映。主要实现了比赛中的左右击球、比分的调节和清零等功能;并在基本要求基础上,引入“击球失误”情况判断,进一步完善了该游戏模拟器。出于操作方便考虑,模拟器以开关量K1k8电平状态的改变作为信号输入。K1和K8分别对应乒乓球的右击、左击,K2实现所

2、有比分清零,K3、K4和K6、K7用于双方局数或每局比分的调节。赛制设定为每局11分制、三局两胜制,并增设了“胜利”判定功能。关键字:单轨道乒乓球游戏 8279芯片 开关电平量 数码管显示目录一、实验目的 1二、实验器材 1三、实验基本步骤 1四、系统主要功能 1五、硬件电路设计及描述 21.硬件设计描述 22.硬件连线 3六、实验控制原理 4七、实验设计程序 9八、效果分析及有待改进之处 15九、实验心得体会 15参考文献: 16一、实验目的结合自己所学,在单片机系统箱上设计一个具有一定功能的单轨道乒乓球游戏模拟器。通过该实验,从日常接触的游戏机设计入手,进一步了解单片机系统的基本组成与使用

3、方法,切身体会到单片机设计的基本流程,提高自身解决实际问题的能力。同时,在实践中检验所学理论的疏漏与不足,做到查漏补缺、学以致用。本实验重点培养学生对单片机的定时器设置、I/O接口电路和可编程芯片8279管理显示数码管的能力。二、实验器材AEDK5196ET 实验系统三、实验基本步骤(1)熟悉AEDK5196ET实验系统,了解各模块的布局,及各接口芯片硬件电路。(2)完成实验指导书上的基础实验和创新部分,掌握试验系统的基础应用。(3)选定设计题目,即乒乓球游戏模拟器设计。(4)根据实验要求,采用P1口模拟球的移动,选取8279及数码管完成比分的显示,并拟定了诸如比分清零、调节等扩展功能部分。(

4、5)完成硬件的连线与程序的设计工作。经反复调试,最终圆满实现了所有的实验设计效果,达到了实验目的。四、系统主要功能所设计的游戏模拟器,可在仿真环境下进行模拟乒乓球比赛,实现以下功能:1基本功能(1)采用两个开关K1、K8作为击球键。为便于操作,以开关量的电平改变作为输入信号,分别实现乒乓球的左击和右击。(2)采用P1口模拟球的移动,并在LED反映乒乓球的运动状态。(3)按乒乓球游戏规则设计打球的基本过程模拟。基本规则为:每局采用采用11分制、三局两胜制,在各数码管上反映双方比分。每当一方得分后,采用一球轮换制发球,由对方选手开始发球。若球移至最边上一个LED后,对应的选手还在1s仍内未击回,即

5、判定另一方选手得分。2提高功能所有提高功能均依赖于开关量K,以其电平的改变作为触发信号。(1) 加设“失误”判断模式,即一方发球,在球还未到对方近前时,若对方提前击球,则认为其击球失误,判负。(2)所有比分清零。等待发球时,拨动K2,可实现双方局数、每局分数的清零。(3)比分调节。等待发球时,拨动K3、K4可实现双方局数比分的自增调节,拨动K6、K7可实现双方每局比分的自增调节。五、硬件电路设计及描述1.硬件设计描述AEDK5196ET实验系统芯片:8279,74LS138,74LS244 ,74LS240,数码管实验系统内部连接块如下:(1)8279键盘显示图1 8279键盘显示电路(2)1

6、38译码电路图2 138译码电路空间地址8000-87FFH,由D2 74LS138分成8个片选信号,其中:Y0:8000H Y1:8100H Y2:8200HY3:8300H Y4:8400H Y5:8500H Y6:8600 Y7:8700H(3)单片机I/O线图3 单片机I/O线(4)开关量输入 图4 开关量输入电路开关向上拨至H端,输出孔为1;开关向下拨至L端,输出孔为0。(5)简单并行口输入图5 简单并行口输入电路(6)单色LED灯图6 单色LED灯电路2.硬件连线:(参见图7)(1)开关量输入K1K8接74LS244的输入端PI0PI7。 (2)74LS244设备选择端“CS*”接

7、编号为8000H的译码器输出端。(3)输出端P1.0P1.7接发光二极管驱动器74LS240的输入端DL1DL8,其输出控制发光二极管的显示。(4)有关8279芯片实验系统箱内已经布好线,不用再另行连接(参见图1)。图7 输入输出口的硬件连线六、实验控制原理1.概述有8支连续排列的发光二极管,依次点亮其代表乒乓球的移动。开关量K1、K8模拟两个球拍,拨动K1、K8(电平变化)代表球拍击球。拨动“左拍”(K1)可使发光LED从左向右依次点亮,如同乒乓球从左向右飞来,拨动“右拍”(K8)则可以使LED从右向左以此点亮,代表乒乓球从右向左运动。本游戏共两人玩耍。以一方“拨动”(发球)开始,这时“乒乓

8、球”就向对方运动。如发球方为甲方,接球方为乙方,甲方先发球,乙方必须在乒乓球到达终点时刻接球。如接球时机合适,把球击回,双方都不得分,接着甲方准备接球。如果乙方在球未到达前挥拍(过早击球),或在球到达后仍不接球(超时击球),则视为击球失误,此时甲方得分。根据一球轮换制,此后等待乙方发球。在比赛过程中,用数码管显示双方比分。2.具体实现方法说明(1)采用P1口输出,用LED模拟乒乓球的运动。游戏中“乒乓球”移动速度是固定的,假定每秒移动1位(发光LED)。(2)在“乒乓球”移动一次的过程中,进行50次测量(即每20us一次),查询击球方是否有击球动作;(3)发球采用一球轮换制,比分采用11分制,

9、三局两胜制。倘任意一方胜利局数到达2,比赛结束。此时清空所有显示数码管,只显示胜利方对应的局数比分“02”以示其胜利。(4)接球方的击球动作应发生在“乒乓球”到达本方最后一位发光二极管(即点亮)1秒钟时间之内。如接球方在此1秒钟之内拨动开关,则击球成功,“乒乓球”转为相反方向运动。此后,原发球方变为接球方,接球方变为发球方,游戏继续进行。(5)如接球方过早或超时击球,则接球方失误,发球方得分。此时“乒乓球”熄灭,数码管显示器显示出双方比分。根据一球轮换制,双方换发球。3.开关功能说明出于操作方便的考虑,设计中使用开关时一律以其电平的变化作为触发信号。只需拨动相应开关就可实现其对应功能。开关量输

10、入电路可参见图4,而各开关量的对应功能详见表1。 说明开关量代表含义附加说明K1左击球乒乓球左移 K2清比分 实现双方局数、每局分数的清零K3左方局数修改实现左方局数比分的自增修改K4左方局数修改实现右方局数比分的自增修改K5K6左方每局分数修改实现左方每局分数的自增修改K7右方每局分数修改实现右方每局分数的自增修改K8右击球乒乓球右移表1 开关量功能4.数码管显示内容说明数码管显示位置参见图8,各数码管对应的内容见表2。图8 数码管显示位置说明数码管显示内容8号、7号左方胜利局数6号、5号右方胜利局数4号、3号左方每局分数2号、1号右方每局分数表2 数码管显示内容5.设计流程图(1)程序总体

11、流程:(2)右移程序流程:对于左移程序,其功能与右移程序一样,只不过是把“乒乓球”的右移变左移,把判断右拍击球改为判断左拍击球。因此,左移程序只需稍作修改即可得到。(3)左方每局分数(自增)调节流程:(4)显示子程序流程:(5)20MS延时子程序流程(6)左方胜利子程序流程七、实验设计程序S8279 EQU 0FF82H ;8279状态口地址D8279 EQU 0FF80H ;8279数据口地址 KEYLED EQU 00H ;键盘/显示命令字 ;8字符显示,左入口,编码键盘扫描,双键互锁LEDCLR EQU 0C1H ;清显示RAM控制字CLKT EQU 2FH ;扫描速率设置 LEDWR

12、EQU 70H ;写显示RAM控制字 TEMP1 EQU 30H ;暂存A中数据(开关状态K0到K7)TEMP2 EQU 31H ;暂存球速N值(20MS*N)KIN EQU 8000HDTIME1 EQU 32H DTIME2 EQU 33H ;设置DELAY20MS中的延时系数;- ORG 0000H AJMP START ORG 0100HSTART:SETDATA: MOV SP,#60H MOV DPTR,#S8279 MOV A,#KEYLED MOVX DPTR,A ;设置8279的LED/键盘工作方式 MOV A,#CLKT MOVX DPTR,A ;设8279分频速率 MOV

13、 A,#LEDCLR MOVX DPTR,A ;清显示RAMWAIT1:MOVX A,DPTR JB ACC.7,WAIT1 ;等待清除完毕 MOV R3,#00H ;左方每局分数初始化 MOV R4,#00H ;右方每局分数初始化 MOV R5,#00H ;左方局数初始化 MOV R6,#00H ;右方局数初始化 MOV R7,#00H ;移位计数器初始化 ACALL DSHOW ;调用显示子程序;-键盘及其相关-GETKEY:MOV DPTR,#KIN ;指向K0到K7口读结果 MOVX A,DPTR MOV TEMP1,A ;将A值放入TEMP1暂存GETKEY1:MOVX A,DPTR

14、 XRL A,TEMP1 JB ACC.1,TORESET ;P1.1改变,转入初始化程序(全部清零) JB ACC.2,SETMCH_L ;左局数自加 JB ACC.3,SETMCH_R ;右局数自加 JB ACC.5,SETPT_L ;左每局分数自加 JB ACC.6,SETPT_R ;右每局分数自加 JB ACC.0,TOPLAR ;P1.0改变,转入右移程序(左拍击球) JB ACC.7,TOPLAL ;P1.0改变,转入右移程序(右拍击球) SJMP GETKEY1TOPLAR: AJMP PLARTOPLAL: AJMP PLAL;-清零复位- TORESET:MOV R3,#00

15、H MOV R4,#00H MOV R5,#00H MOV R6,#00H ACALL DSHOW SJMP GETKEY;- SETMCH_L:INC R5 ;左局数自加 CJNE R5,#02H,SETMCH_L1 MOV R5,#00HSETMCH_L1:CLR C ACALL DSHOW SJMP GETKEY;- SETMCH_R:INC R6 ;右局数自加 CJNE R6,#02H,SETMCH_R1 MOV R6,#00HSETMCH_R1:CLR C ACALL DSHOW SJMP GETKEY;- SETPT_L:INC R3 ;左每局分数自加 CJNE R3,#0BH,S

16、ETPT_L1 MOV R3,#00HSETPT_L1:CLR C ACALL DSHOW SJMP GETKEY;- SETPT_R:INC R4 ;右每局分数自加 CJNE R4,#0BH,SETPT_R1 MOV R4,#00HSETPT_R1:CLR C ACALL DSHOW SJMP GETKEY;-右移(左拍击球)-PLAR: MOV DPTR,#KIN MOVX A,DPTR MOV TEMP1,A ;将A值放入TEMP1暂存 SETB C ;再进位设置乒乓球 MOV R7,#08H ;设移位次数 CLR A ;清楚A中数据,以便乒乓球移动PLAR1:RLC A ;带进位循环(

17、DL1DL8) MOV P1,A ;输出乒乓球状态 DJNZ R7,PLAL_CON ;移完否,未完至PLAL_CON AJMP PLAL_FIN ;移完至PLAL_FINPLAL_CON: MOV TEMP2,#32H ;1S延时常数PLAL_CON1:ACALL DELAY20MS ;调用20MS延时子程序 PUSH ACC MOVX A,DPTR XRL A,TEMP1 JB ACC.0,PLAL_ADDS ;过早击球(失误),至PLAl_ADDS;否则顺序执行 POP ACC DJNZ TEMP2,PLAL_CON1 ;1S延时未到,继续循环 AJMP PLAL1 ;1S延时已到,球移

18、位PLAL_FIN: MOV TEMP2,#32H ;重置1S延时常数PLAL_FIN1:ACALL DELAY20MS PUSH ACC MOVX A,DPTR XRL A,TEMP1 JB ACC.0,PLAR ;若有击球(PI.0改变),转PLAL;否则顺序执行 POP ACC DJNZ TEMP2,PLAL_FIN1 ;1S延时未到,继续循环 PLAL_ADDS: INC R4 ;右分数加1 CJNE R4,#0BH,NEXT2 ;右满11分,局数加1,分数清零 MOV R3,#00H MOV R4,#00H INC R6 CJNE R6,#02H,NEXT2 AJMP WIN_R ;

19、3局2胜,右方获胜NEXT2:ACALL DSHOW ;显示新分数 AJMP GETKEY ;重新发球,发球权由个人手动确定;-左方胜利-WIN_L:MOV DPTR,#S8279 MOV A,#LEDCLR MOVX DPTR,A ;显示RAM清除WAIT2:MOVX A,DPTR JB ACC.7,WAIT2 MOV A,#76H MOVX DPTR,A MOV DPTR,#D8279 MOV A,#5BH MOVX DPTR,A MOV A,#3FH MOVX DPTR,A AJMP EXIT;-右方胜利- WIN_R:MOV DPTR,#S8279 MOV A,#LEDCLR MOVX

20、 DPTR,A ;显示RAM清除WAIT3:MOVX A,DPTR JB ACC.7,WAIT3 MOV A,#74H MOVX DPTR,A MOV DPTR,#D8279 MOV A,#5BH MOVX DPTR,A MOV A,#3FH MOVX DPTR,A AJMP EXIT ;-延时子程序-DELAY20MS: MOV DTIME1,#24H LOOP:MOV DTIME2,#0FFH DJNZ DTIME2,$ DJNZ DTIME1,LOOP RET;-显示子程序-DSHOW:MOV A,#LEDWRMOV DPTR,#S8279 MOVX DPTR,A ;置写显示RAM命令字

21、MOV DPTR,#D8279MOV A,R4 ;右方分数ACALL EXCHANGEMOV A,R3 ;左方分数ACALL EXCHANGEMOV A,R6 ;右方局数ACALL EXCHANGEMOV A,R5 ;左方局数ACALL EXCHANGERETEXCHANGE:CLR CDA A ;将A中数据转为十进制BCD码显示MOV R2,A ;将A中数据置于R2中暂存ANL A,#0FH ;屏蔽高4位,取低4位PUSH DPLPUSH DPHMOV DPTR,#SEG MOVC A,A+DPTR ;查显示码POP DPHPOP DPLMOVX DPTR,A ;输出低位MOV A,R2 ;

22、取值ANL A,#0F0H ;屏蔽低4位,取高4位SWAP A ;交换高低4位PUSH DPLPUSH DPHMOV DPTR,#SEGMOVC A,A+DPTR ;查显示码POP DPHPOP DPLMOVX DPTR,A ;输出高位RETSEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;显示码 ; 0 1 2 3 4 5 6 7 8 9 ;-EXIT:AJMP GETKEY END 八、效果分析及有待改进之处实现中,使用LED对单轨道乒乓球游戏进行模拟,实验效果较为良好,并未出现仪器方面的问题。设计中尽量多的考虑到了游戏的实际情况,如过早击球

23、等情况,并增设了比分清零、调节等辅助功能,使设计系统的实用性能大大提高。另外,开关量的电平触发也起到了较好的效果。通过与类似设计相较,发现本设计的操作具有明显的优越性。设计尚存在以下有待改进之处。第一,发现有些开关量存在接触不良的状况,对操作造成了一些影响。其次,本实验限定了球速,这一点上过于简化。第三,对于发球轮换制的要求,是由选手自身约定的,缺少程序上的支持。针对以上问题,提出一些改进的方法。首先,针对开关松动问题,可在代码段中加入消抖动子程序(软件),或改用8279键盘作为输入设备(硬件)。其次,对于球速,在程序设计中可增设一组击球开关,以对应不同的延时常数TEMP2,如此可以实现每一击

24、都有不同的球速。最后,针对轮换发球的限制,可在GETKEY代码段添加约束,自动阻止连续发球现象。设计中多采用查询的方式,增加了CPU的处理时间,可以将部分检验改成中断处触发形式,以提高CPU的运行效率。九、实验心得体会亲身经历了这门课程的实验设计,使我真正感受到单品机技术在各行各业中的广泛应用。同时,也使我体会到:要开发单片机的应用,不但要掌握单片机硬件和软件方面的知识,而且还要有继而不舍的钻研精神,要善于学习新的知识,只有将这两方面的知识融会贯通和有机结合,才能设计出优良的应用系统。实验开始时,由于缺乏动手能力,加之对8279键盘显示功能的不了解,我的设计曾一度停滞不前。但是,通过大量查找、

25、阅读相关资料,和同学们积极讨论,并经常寻求老师的指导,终于使自己的设计思路愈发清晰、明朗,最终达到了要求的实验效果。经过四星期时间的不断摸索和一些基础实验的设计操作,使我对单片机系统有了更加深刻的了解,同时也大大提高了我的动手实践能力,培养了浓厚的科研兴趣,使我在学习的过程中获益匪浅。虽然实验时间只有短短四周,但我更觉得它十分珍贵。在这段时间里,我真正将所学和所用结合了起来,做到学以致用,由衷的感到获益匪浅。参考文献:1茹国宝. 刘克刚,单片机原理与应用实验指导书,武汉大学电子信息学院 2李朝青. 单片机原理与接口技术.北京航空航天大学出版社,19983张红润,易涛,单片机应用技术教程(第二版),清华大学出版社,20034 于殿泓,王新年,单片机原理与程序实验设计教程,西安电子科技大学出版社,,20075徐爱钧,8051单片机实践教程,电子工业出版社,2005

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

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