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

上传人:sccc 文档编号:4878247 上传时间:2023-05-21 格式:DOC 页数:15 大小:1.47MB
返回 下载 相关 举报
硬件课程设计乒乓球游戏设计.doc_第1页
第1页 / 共15页
硬件课程设计乒乓球游戏设计.doc_第2页
第2页 / 共15页
硬件课程设计乒乓球游戏设计.doc_第3页
第3页 / 共15页
硬件课程设计乒乓球游戏设计.doc_第4页
第4页 / 共15页
硬件课程设计乒乓球游戏设计.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《硬件课程设计乒乓球游戏设计.doc》由会员分享,可在线阅读,更多相关《硬件课程设计乒乓球游戏设计.doc(15页珍藏版)》请在三一办公上搜索。

1、硬件课程设计乒乓球游戏设计 学院: 计算机科学与技术学院班级: 信息安全09-2 姓名: 一、设计任务与要求(1) 该设计一个由甲、乙双方参赛,有裁判的2人乒乓球游戏机。(2) 用一排发光二极管成一条直线,以中点为界,两人乒乓游戏机是用8个发光二极管代表乒乓球台,中间两个发光二极管兼做乒乓球网,用点亮的发光二极管按一定方向移动来表示球的运动,在游戏机的两侧个设置发球和击球开关,甲乙双方按乒乓球比赛规则来操作开关。(3) 当“球”(点亮的那只LED)运动到某方的最后一位时,参赛者应能果断地按下位于自己一方的按钮开关,即表示启动球拍击球。当甲方按动乒乓球开关时,靠近甲方的第一个发光二极管亮,然后发

2、光二极管由甲方方向依次点亮,代表乒乓球的移动。当球过网后按照设计者规定的球位乙方就可以击球。若乙方提前击球或者未击到球,则甲方得分。然后重新发球进行比赛。(4) 设置自动记分电路,甲、乙双方各用7段译码管进行记分显示,每计满11分为1局,然后记分清零,重新开始新一局比赛二、总体方案与说明 用8个发光二极管代表乒乓球台,在游戏机的两侧设置两个开关,一个是发球开关,一个是击球开关,甲方按动发球开关时,靠近甲方的第一盏灯亮,然后发光二极管由甲向乙依次点亮,代表乒乓球在移动。当球过网后,乙方就可击球。若乙方提前击球或没击中球,则判乙方失分,甲方自动加分,重新发球比赛继续进行到一方记分到21分,该局结束

3、,记分牌清零,可以开始新的一局比赛三、所需硬件及框图电源 时钟频率 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、位于低电位。 图4.12、图4.2为比分显示硬件块。其中主要又8279芯片来控制,以及利用led显示管来显示数字。左边为左边选手的得分,右边为右边选手的得分。采用11进制,即每一个选手的分得到11分后就判定该选手赢得比赛。比分从0:0开始。 图4.2 3、图4.3为循环led灯来表示乒乓球硬件块。Led灯先向左移动,此时K0不能为高电平,若为高电位则为提前击球,右边选手加分,当最左边的等亮起时,K0应及时击球(既把K0拨为高电位)。未及时击球则同样右边选手加分。及时击球则球开始向右边移动。与向左边移动时的规则相同。 图4.3五、软件主要模块流程图 根据乒乓球比赛的过程和规则,首先游戏开始,如果

5、一方非正确击球则另一方加分,当分数大于11时获胜,游戏结束,我们把设计流程规定如图2.1所示。游戏开始正确接发球?大于11? 甲 乙 否 否大于11?乙方胜利甲方胜利甲方加分乙方加分 N N Y Y游戏结束图2.1设计流程图 状态机设置了7个状态,分别是“等待发球状态”,“第一盏灯亮状态”,“第八盏灯亮状态”,“球向乙移动状态”,“ 球向甲移动状态”,“允许甲击球状态”,“允许乙击球状态”。这是该程序中起决定作用的七个状态。开始的时候处于“等待发球状态”,若甲发球则状态转移到“第一盏灯亮状态”,若乙发球则转移到“第八盏灯亮状态”,具体说明以甲球为例。若发球后乙没有提前击球-规定球移动到对方第一

6、个发光二极管时允许击球,那么状态机从“第一盏灯亮状态”转移到“球向乙移动状态”。若在“球向乙移动状态”乙仍然没有提前击球,状态就转移到“允许乙击球状态”,在此状态下,如果乙击球了,那么状态就转移到“ 球向甲移动状态”。在“第一盏灯亮状态”, “球向乙移动状态”中,如果乙击球了 ,就算提前击球,这样甲得分,状态转移到“等待发球状态”等待发球。“ 球向甲移动状态”之后的过程和前面的过程只不过是甲乙角色的调换而已。状态转移规则都是一样的。图2.2给出了乒乓球游戏机的原理图。等待发球 甲得分 乙得分 甲发球 乙发球第一盏灯亮第八盏灯亮允许甲发球球向甲移动 乙击球 甲击球球向乙移动 乙击球 甲击球允许乙

7、发球 乙没击球 甲没击球图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

8、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: mo

9、v 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 ;若提前击球则跳转到左边

10、选手加分程序 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

11、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,

12、 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 I

13、N 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 yj

14、fen ;未正确击球时跳转到右边选手加分程序 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 PRO

15、C 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 S

16、HW1 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 OU

17、T 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七、问题分析与解决方案关于问题,可以分为前期

18、和后期,前期主要是在需求分析中出现的问题,主要有三个方面。1、怎么表示乒乓球移动。这是我们遇到的第一个问题。我们通过网络上的资料确定了自己的方案。即用8个发光二极管代表乒乓球台,中间两个发光二极管兼做乒乓球网,用点亮的发光二极管按一定方向移动来表示球的运动。然后就是用开关来表示球拍,读取开关的状态来判断是否击球。高电位来表示击球。2、计分的规则就是这个乒乓球游戏的规则。总的来说就是甲、乙双方各用7段译码管进行分显示,甲赢了则记甲一分,乙赢了则乙加一分,每计满11分为1局,然后记分清零,重新开始新一局比赛。其中牵涉到提前击球的情况。我们给出的规定就是若球向右移动且球未移动到最右边时,右边的开关不

19、能为高电位,若为高电位则判定为提前击球。反之球向左移动时,同样遵循这个规则。3、比分的显示最初我关于比分的显示问题是想通过dos界面来显示。在和老师沟通后,我改变了自己的想法。利用8279控制的数码管显示比分。这样一来实现的就比较好了。还有就是后期也就是在程序编好后的实现阶段,我们遇到了一个问题,原因出现在8253芯片上。自己的led灯移动的太快,根本就没有反映的时间。怎么调都找不到问题的所在。因此自己就放弃了8353的延时,利用在代码中加入循环程序来进行延时,虽然不太理想,但也算是能实现了。 八、结论与体会 这次的硬件实验可以说自己的收获还是很大的,主要是汇编语言方面。自己当时在学习微型计算

20、机原理与接口技术时自己就掌握的不太好,所以说自己这次的实验还是困哪挺大的。但通过自己复习书本上的知识。以及向老师咨询相关的问题,自己还是把这个实验做好了。虽然结果不是十分完美,但自己还是满意的。同时也发现了自己在学习上还存在这很多的不足之处。在以后的学习中自己还得多努力,认真的学习。争取在这个方面更上一层楼。九、参考资料1 潘松.EDA技术实用教程(第二版).科学出版社.2005.2 康华光.电子技术基础 模拟部分.高教出版社.2006.3 阎石.数字电子技术基础.高教出版社.20034 周荷琴,吴秀清.微型计算机原理与接口技术.科学出版社.1996最后时间紧,代码不完美,就是里面的8253延时和循环延时共同存在。可以在连接电路中将PA0置为低电位即可。或是不用8253。如有其他问题,我们可以一起讨论。QQ:335366295 邮箱:fangshaohua111

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号