欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    514652066硬件课程设计乒乓球游戏设计.doc

    • 资源ID:2882907       资源大小:1.46MB        全文页数:15页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    514652066硬件课程设计乒乓球游戏设计.doc

    硬件课程设计乒乓球游戏设计 学院: 计算机科学与技术学院班级: 信息安全09-2 姓名: 一、设计任务与要求(1) 该设计一个由甲、乙双方参赛,有裁判的2人乒乓球游戏机。(2) 用一排发光二极管成一条直线,以中点为界,两人乒乓游戏机是用8个发光二极管代表乒乓球台,中间两个发光二极管兼做乒乓球网,用点亮的发光二极管按一定方向移动来表示球的运动,在游戏机的两侧个设置发球和击球开关,甲乙双方按乒乓球比赛规则来操作开关。(3) 当“球”(点亮的那只LED)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。当甲方按动乒乓球开关时,靠近甲方的第一个发光二极管亮,然后发光二极管由甲方方向依次点亮,代表乒乓球的移动。当球过网后按照设计者规定的球位乙方就可以击球。若乙方提前击球或者未击到球,则甲方得分。然后重新发球进行比赛。(4) 设置自动记分电路,甲、乙双方各用7段译码管进行记分显示,每计满11分为1局,然后记分清零,重新开始新一局比赛二、总体方案与说明 用8个发光二极管代表乒乓球台,在游戏机的两侧设置两个开关,一个是发球开关,一个是击球开关,甲方按动发球开关时,靠近甲方的第一盏灯亮,然后发光二极管由甲向乙依次点亮,代表乒乓球在移动。当球过网后,乙方就可击球。若乙方提前击球或没击中球,则判乙方失分,甲方自动加分,重新发球比赛继续进行到一方记分到21分,该局结束,记分牌清零,可以开始新的一局比赛三、所需硬件及框图电源 时钟频率 1MHZ· 地址 200-207 地址 208-20F· 用八个led灯来表示球台环移动来表示球的移动,用8253和8255来构成跑马灯,8253起定时作用。8255用来输入输出。 输入芯片 用八个开关来模拟球拍(实际只需K0和K7两个)。在求的移动过程中来判断是否提前击球。当球移动到最左或右边是读取K0和K7两个开关状态来判断选手是否正确击球。四、电路原理图与说明1、在这个实验中,我们主要用的是HUSYE3-MIT-16/32微机接口综合实验/仿真系统,图4.1为利用I/O 输入借口来进行开关K0-K7状态的读取。开始时,开关均位于低电位。 图4.12、图4.2为比分显示硬件块。其中主要又8279芯片来控制,以及利用led显示管来显示数字。左边为左边选手的得分,右边为右边选手的得分。采用11进制,即每一个选手的分得到11分后就判定该选手赢得比赛。比分从0:0开始。 图4.2 3、图4.3为循环led灯来表示乒乓球硬件块。Led灯先向左移动,此时K0不能为高电平,若为高电位则为提前击球,右边选手加分,当最左边的等亮起时,K0应及时击球(既把K0拨为高电位)。未及时击球则同样右边选手加分。及时击球则球开始向右边移动。与向左边移动时的规则相同。 图4.3五、软件主要模块流程图 根据乒乓球比赛的过程和规则,首先游戏开始,如果一方非正确击球则另一方加分,当分数大于11时获胜,游戏结束,我们把设计流程规定如图2.1所示。游戏开始正确接发球?大于11? 甲 乙 否 否大于11?乙方胜利甲方胜利甲方加分乙方加分 N N Y Y游戏结束图2.1设计流程图 状态机设置了7个状态,分别是“等待发球状态”,“第一盏灯亮状态”,“第八盏灯亮状态”,“球向乙移动状态”,“ 球向甲移动状态”,“允许甲击球状态”,“允许乙击球状态”。这是该程序中起决定作用的七个状态。开始的时候处于“等待发球状态”,若甲发球则状态转移到“第一盏灯亮状态”,若乙发球则转移到“第八盏灯亮状态”,具体说明以甲球为例。若发球后乙没有提前击球-规定球移动到对方第一个发光二极管时允许击球,那么状态机从“第一盏灯亮状态”转移到“球向乙移动状态”。若在“球向乙移动状态”乙仍然没有提前击球,状态就转移到“允许乙击球状态”,在此状态下,如果乙击球了,那么状态就转移到“ 球向甲移动状态”。在“第一盏灯亮状态”, “球向乙移动状态”中,如果乙击球了 ,就算提前击球,这样甲得分,状态转移到“等待发球状态”等待发球。“ 球向甲移动状态”之后的过程和前面的过程只不过是甲乙角色的调换而已。状态转移规则都是一样的。图2.2给出了乒乓球游戏机的原理图。等待发球 甲得分 乙得分 甲发球 乙发球第一盏灯亮第八盏灯亮允许甲发球球向甲移动 乙击球 甲击球球向乙移动 乙击球 甲击球允许乙发球 乙没击球 甲没击球图3.2 乒乓球游戏机原理图六、源程序清单与注释CODE SEGMENT ASSUME CS:CODE START: call CLEAR_LED MOV DX,21AH ;比分初始化为0 :0 MOV AL,00000000B OUT DX,AL MOV DX,218H MOV AL,3FH ;k初始化右边选手的比分。 MOV CL,00H ;用cl 记录当前右边选手的比分 OUT DX,AL OUT DX,AL MOV AL,00H OUT DX,AL OUT DX,AL OUT DX,AL OUT DX,AL MOV AL,3FH ;初始化左边选手的比分 OUT DX,AL ;用ch记录左边选手当前的比分 OUT DX,AL mov CH,00h youyi: ;球向右移动 Q0: MOV AL,00110101B MOV DX,213h OUT DX, AL MOV Al, 0ffh MOV DX, 210h OUT DX,AL OUT DX,AL MOV AL, 01110101B MOV DX,213H OUT DX, AL MOV Al, 0ffh MOV DX, 211h OUT DX, AL OUT DX, AL ;8253初始化 mov al,10010000B mov dx,20bh ; 8255初始化 out dx,al Q1: mov dx ,208h IN AL,DX TEST AL,01H JZ Q1 ;8253定时,输出到8255的pc4口,读取该口判断 MOV DX,209H mov al, 80h not al out dx,al MOV BL,AL Q2: mov dx ,208h IN AL,DX TEST AL,01H JZ Q2 mov dx,209h in al,dx TEST al ,01h ;判断球是否移动到最右端。 jZ yjq mov dx,220h in al,dx ;读取开关状态 TEST al, 01h ;没有到最右端时判断右边选手是否提前击球 JZ zjfen ;若提前击球则跳转到左边选手加分程序 mov AL ,00H CALL D call D call D CALL D CALL D CALL D MOV AL,BL ROr AL,1 mov dx,209h OUT DX,AL MOV BL,AL JMP Q2 D: INC AL CMP AL,0FFH NOP NOP NOP JNZ DD1: INC DX CMP DL,0FFFFH JNZ D1 MOV DX,00HD2: INC DX CMP DL,0FFFFH JNZ D2 MOV DX,00H D3: INC DX CMP DL,0FFFFH JNZ D3 MOV DX,00HD4: INC DX CMP DL,0FFFFH JNZ D4 MOV DX,00HD5: INC DX CMP DL,0FFFFH JNZ D5 MOV DX,00HD6: INC DX CMP DL,0FFFFH JNZ D6 RET yjq: mov dx, 220h ;右边选手击球程序,和左边选手击球程序相同。 in al,dx test al ,01h jnz zjfen jmp zuoyi zjfen : ;左边选手加分程序 inc CH ;左边选手比分加1 CALL REINPUT JMP youyi zuoyi : ;球向左移动Q3: MOV AL,00110101B MOV DX,213h OUT DX, AL MOV Al, 0ffh MOV DX, 210h OUT DX, AL OUT DX, AL MOV AL, 01110101B MOV DX,213H OUT DX, AL MOV Al, 0ffh MOV DX, 211h OUT DX, AL out dx,al mov al,10010000B mov dx,20bh out dx,al out dx,al Q4: MOV DX,208H IN AL,DX TEST AL,01H JZ Q4 MOV DX,209H mov al, 01h not al out dx,al MOV BL,AL Q5: MOV DX,208H IN AL,DX TEST AL,01H JZ Q5 mov dx,209h in al,dx test al ,80h ;判断球是否移动到最左端。 jz zjq mov dx,220h in al,dx test al, 80h jz yjfen mov AL ,00H CALL D CALL D CALL D CALL D CALL D CALL D MOV AL,BL ROL AL,1 mov dx,209h OUT DX,AL MOV BL,AL JMP Q5 zjq: ;左边选手击球程序 mov dx ,220h in al,dx ;读取开关状态 test al ,80h jnz yjfen ;未正确击球时跳转到右边选手加分程序 jmp youyi ;正确击球时跳转到球向右移程序 yjfen : ;右边选手加分程序 inc cl ;右边选手比分加1 CALL REINPUT JMP zuoyiREINPUT: ;重新输入比分 call CLEAR_LED ;先进行清屏 MOV DX,21AH MOV AL,00H OUT DX,AL MOV AL,CL call TRANS ;调用显示程序 MOV DX,218H MOV AL,00H OUT DX,AL OUT DX,AL OUT DX,AL OUT DX,AL MOV AL,CH CALL TRANS TRANS PROC NEAR ;数码管显示程序 CASE0: CMP AL,00H JNZ CASE1 MOV AL,3FH JMP SHW1 CASE1: CMP AL,01H JNZ CASE2 MOV AL,06H JMP SHW1 CASE2: CMP AL,02H JNZ CASE3 MOV AL,5BH JMP SHW1 CASE3: CMP AL,03H JNZ CASE4 MOV AL,4FH JMP SHW1 CASE4: CMP AL,04H JNZ CASE5 MOV AL,66H JMP SHW1 CASE5: CMP AL,05H JNZ CASE6 MOV AL,6DH JMP SHW1 CASE6: CMP AL,06H JNZ CASE7 MOV AL,7DH JMP SHW1 CASE7: CMP AL,07H JNZ CASE8 MOV AL,07H JMP SHW1 CASE8: CMP AL,08H JNZ CASE9 MOV AL,7FH JMP SHW1 CASE9: CMP AL,09H JNZ CASE10 MOV AL,6FH JMP SHW1 CASE10: CMP AL,0AH JNZ CASE11 JMP SHW2 CASE11: CMP AL,0BH RET SHW1: MOV DX,218H OUT DX,AL MOV AL,3FH OUT DX,AL RET SHW2: MOV DX,218H MOV AL,3FH OUT DX,al MOV AL,06H OUT DX,AL RET TRANS ENDP CLEAR_LED PROC NEAR ;清除RAM值,并清屏 PUSH AX PUSH DX MOV DX,21ah MOV AL,0D2H OUT DX,AL WAIT_CLEAR_LED: NOP IN AL,DX AND AL,80H JNZ WAIT_CLEAR_LED POP DX POP AX RET CLEAR_LED ENDPCODE ENDSend start七、问题分析与解决方案关于问题,可以分为前期和后期,前期主要是在需求分析中出现的问题,主要有三个方面。1、怎么表示乒乓球移动。这是我们遇到的第一个问题。我们通过网络上的资料确定了自己的方案。即用8个发光二极管代表乒乓球台,中间两个发光二极管兼做乒乓球网,用点亮的发光二极管按一定方向移动来表示球的运动。然后就是用开关来表示球拍,读取开关的状态来判断是否击球。高电位来表示击球。2、计分的规则就是这个乒乓球游戏的规则。总的来说就是甲、乙双方各用7段译码管进行分显示,甲赢了则记甲一分,乙赢了则乙加一分,每计满11分为1局,然后记分清零,重新开始新一局比赛。其中牵涉到提前击球的情况。我们给出的规定就是若球向右移动且球未移动到最右边时,右边的开关不能为高电位,若为高电位则判定为提前击球。反之球向左移动时,同样遵循这个规则。3、比分的显示最初我关于比分的显示问题是想通过dos界面来显示。在和老师沟通后,我改变了自己的想法。利用8279控制的数码管显示比分。这样一来实现的就比较好了。还有就是后期也就是在程序编好后的实现阶段,我们遇到了一个问题,原因出现在8253芯片上。自己的led灯移动的太快,根本就没有反映的时间。怎么调都找不到问题的所在。因此自己就放弃了8353的延时,利用在代码中加入循环程序来进行延时,虽然不太理想,但也算是能实现了。 八、结论与体会 这次的硬件实验可以说自己的收获还是很大的,主要是汇编语言方面。自己当时在学习微型计算机原理与接口技术时自己就掌握的不太好,所以说自己这次的实验还是困哪挺大的。但通过自己复习书本上的知识。以及向老师咨询相关的问题,自己还是把这个实验做好了。虽然结果不是十分完美,但自己还是满意的。同时也发现了自己在学习上还存在这很多的不足之处。在以后的学习中自己还得多努力,认真的学习。争取在这个方面更上一层楼。九、参考资料1 潘松.EDA技术实用教程(第二版).科学出版社.2005.2 康华光.电子技术基础 模拟部分.高教出版社.2006.3 阎石.数字电子技术基础.高教出版社.20034 周荷琴,吴秀清.微型计算机原理与接口技术.科学出版社.1996最后时间紧,代码不完美,就是里面的8253延时和循环延时共同存在。可以在连接电路中将PA0置为低电位即可。或是不用8253。如有其他问题,我们可以一起讨论。QQ:335366295 邮箱:fangshaohua111

    注意事项

    本文(514652066硬件课程设计乒乓球游戏设计.doc)为本站会员(仙人指路1688)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开