乒乓球游戏实验报告

  • 格式:doc
  • 大小:1.46 MB
  • 文档页数:15
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
D4: INC DX
CMP DL,0FFFFH
JNZ D4
MOV DX,00H
D5: INC DX
CMP DL,0FFFFH
JNZ D5
MOV DX,00H
D6: INC DX
CMP DL,0FFFFH
JNZ D6
RET
yjq: mov dx, 220h;右边选手击球程序,和左边选手击球程序相同。
in al,dx
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 ;判断球是否移动到最左端。
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
图4.2
3、图4.3为循环led灯来表示乒乓球硬件块。Led灯先向左移动,此时K0不能为高电平,若为高电位则为提前击球,右边选手加分,当最左边的等亮起时,K0应及时击球(既把K0拨为高电位)。未及时击球则同样右边选手加分。及时击球则球开始向右边移动。与向左边移动时的规则相同。
图4.3
五、软件主要模块流程图
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记录左边选手当前的比分
根据乒乓球比赛的过程和规则,首先游戏开始,如果一方非正确击球则另一方加分,当分数大于11时获胜,游戏结束,我们把设计流程规定如图2.1所示。
甲乙
否否
NN
YY
图2.1设计流程图
状态机设置了7个状态,分别是“等待发球状态”,“第一盏灯亮状态”,“第八盏灯亮状态”,“球向乙移动状态”,“球向甲移动状态”,“允许甲击球状态”,
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
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 ;读取开关状态
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
四、电路原理图与说明
1、在这个实验中,我们主要用的是HUSYE3-MIT-16/32微机接口综合实验/仿真系统,图4.1为利用I/O输入借口来进行开关K0-K7状态的读取。开始时,开关均位于低电位。
图4.1
2、图4.2为比分显示硬件块。其中主要又8279芯片来控制,以及利用led显示管来显示数字。左边为左边选手的得分,右边为右边选手的得分。采用11进制,即每一个选手的分得到11分后就判定该选手赢得比赛。比分从0:0开始。
用8个发光二极管代表乒乓球台,在游戏机的两侧设置两个开关,一个是发球开关,一个是击球开关,甲方按动发球开关时,靠近甲方的第一盏灯亮,然后发光二极管由甲向乙依次点亮,代表乒乓球在移动。当球过网后,乙方就可击球。若乙方提前击球或没击中球,则判乙方失分,甲方自动加分,重新发球比赛继续进行到一方记分到21分,该局结束,记分牌清零,可以开始新的一局比赛
甲得分 乙得分
甲发球 乙发球
乙击球 甲击球
乙击球 甲击球
乙没击球 甲没击球
图3.2 乒乓球游戏机原理图
六、源程序清单与注释
CODE SEGMENT
ASSUME CS:CODE
START:
call CLEAR_LED
MOV DX,21AH ;比分初始化为0 :0
MOV AL,00000000B
OUT DX,AL
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
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
三、所需硬件及框图
电源时钟频率1MHZ
地址200-207
地址208-20F
用八个led灯来表示球台环移动来表示球的移动,用8253和8255来构成跑马灯,8253起定时作用。8255用来输入输出。
输入芯片
用八个开关来模拟球拍(实际只需K0和K7两个)。在求的移动过程中来判断是否提前击球。当球移动到最左或右边是读取K0和K7两个开关状态来判断选手是否正确击球。
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口,读取该口判断
硬件课程设计
乒乓球游戏设计
学院:计算机科学与技术学院
班级:信息安全09-2
姓名:房绍华
一、设计任务与要求
(1)该设计一个由甲、乙双方参赛,有裁判的2人乒乓球游戏机。

(3)
(4)设置自动记分电路,甲、乙双方各用7段译码管进行记分显示,每计满11分为1局,然后记分清零,重新开始新一局比赛
二、总体方案与说明
JMP Q2
D: INC AL
CMP AL,0FFH
NOP
NOP
NOP
JNZ D
D1: INC DX
CMP DL,0FFFFH
JNZ D1
MOV DX,00H
D2: INC DX
CMP DL,0FFFFH
JNZ D2
MOV DX,00H
D3: INC DX
CMP DL,0FFFFH
JNZ D3
MOV DX,00H
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 Hale Waihona Puke x,209hOUT DX,AL
MOV BL,AL
TRANS ENDP
CLEAR_LED PROC NEAR ;清除RAM值,并清屏
PUSH AX
PUSH DX
MOV DX,21ah
MOV AL,0D2H
OUT DX,AL
WAIT_CLEAR_LED:
NOP
jz zjq
mov dx,220h