乒乓球实验报告Word文档格式.docx
- 文档编号:22900727
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:36
- 大小:411.15KB
乒乓球实验报告Word文档格式.docx
《乒乓球实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《乒乓球实验报告Word文档格式.docx(36页珍藏版)》请在冰豆网上搜索。
比赛规则可参照一般的乒乓球比赛规则。
要求:
(1)球以每秒滚过1个LED的速度移动;
(2)回球需在球到达后的秒内进行(按下按钮),否则按失球计;
(3)球未到达提前按下按钮按失球处理,不起回球作用;
(4)在PC机上显示比赛过程,同时用2个八段数码管显示比分(按10进制计数,初始值0:
0,可自行设计显示及规则,可简化为0-9,也可为0-99);
(5)要求精确计时。
2)设计提示
球到达接球方后,立即读接球方的按钮状态,若未按则有效(若已按下则按失球计),并开始秒的计时,在这个秒内不断读接球方按钮状态,直到按下代表“击球”动作。
3)进一步设计要求
(1)通过拨动开关控制球的移动速度,即可设置每个LED点亮时间(秒、秒、秒);
(2)通过拨动开关控制允许击球的时间(秒、秒、秒);
(3)用8×
8点阵配合比赛过程,显示比分;
(4)用一个开关控制进入智能模式,智能模式要求:
球移动速度取决于击球时间,球移动速度(每个LED点亮时间)在~秒内可变,具体取决于球到达接球方后击球所花的时间0~秒,如花费的时间短则回球后球移动速度快,反之回球后移动速度慢,如下表所示。
球移动速度与击球时间对应表
球到达至击球时间
0~秒
~秒
球移动速度(灯点亮时间)
秒
二.总方案设计及原理
(一)比赛规则
对题目进行理解和深化后,将乒乓球比赛的规则规定如下:
(1)使用两个开关K0、K7模拟左方和右方的发球和接球,拨向0表示不做任何动作,拨向1则表示接球和发球。
(2)球未到达提前将开关拨向1则按失球处理,不起回球作用。
(3)回球需在球到达后的规定时间内进行(按下按钮),否则按失球计。
接球的规定时间默认为秒,但是可以通过相应开关K4/K5选择其它规定时间,如秒、秒和秒。
(4)球的移动速度默认为秒,但是可以通过相应开关K2/K3选择其它速度,如秒、秒。
(5)该比赛采取9分制,即先得到9分的选手获胜,即一场比赛结束。
(6)每次发球由上一次失分方执行(输方发球)。
(7)在PC机上显示比赛过程,同时用两个八段数码管显示比分。
(二)面板设计
实验方案的面板设计如下:
(三)方案流程图
三.方案实现与测试
(一)各模块硬件设计
通过分析,确定需要用到芯片8255监测开关状态、输出灯的动态流向和输出数码管的段选。
需要用到芯片8253精确计时。
需要芯片74LS273用于位选。
(1)8255
8255是实现并行输入输出功能的芯片,对于流水灯和数码管显示有很好的实现效果。
8255有三个口供选择,我将其设定为方式0,A、B口输出、C口输入,C口对应的PC0~PC7(除PC1、PC6外)分别与开关K0~K7(除K1、K6外)相对应,用于监测左方和右方的发球与接球、改变灯移动时间间隔和改变规定的等待时间。
A口对应的PA0~PA7与LED灯L0~L7相连接,通过A口并行输出控制灯的流动。
B口对应的PB0~PB7与八段数码管的a~h相对应,通过B口并行输出控制数码管断码的选择。
(2)8253
8253用于精确定时,由于用于定时器要定时到秒、秒、秒和秒,又由于最大初始值为65536,所以需要计数器通道0和1级联使用。
GATE0、GATE1都接5V高电平,CLK0输入接1MHZ脉冲信号,计数器通道0输出的OUT0与计数器通道1的输入CLK1相连接,最终的通道1的输出OUT1与8255的PC1口相连接,监测是否计数已满,计数器通道0采用计数方式3,计数器通道1采用计数方式2。
(3)74LS273
由于8255的口都被占用了,所以要使用74LS273对数码管的位选进行选择。
数码管的显示在比赛过程中一直显示,两个数码管的显示要用动态显示,即通过位选,使数码管一位一位地显示,由于显示的速度过快,则肉眼看到觉得两个数码管是一起亮的。
74LS273的输出Q1接位选的S0,输出Q2接位选的S1,而74LS273的输入接实验箱的D0、D1的数据输出。
但是不能一直对其进行位选,所以应该将数码管显示程序多放在整个程序当中,使得数码管看上去在整个比赛过程中一直亮着。
(二)整体硬件连线图
(三)系统框图
(四)主程序设计
(1)主程序流程图
(2)主要程序片段
、8255设置控制字
MOVDX,IO8255;
给8255控制字
MOVAL,89H;
方式0,A、B输出,C口输入
OUTDX,AL
、8255C口监测开关状态及计数器计数状态
A:
是否发球(右方):
BEGIN11:
CALLDISP;
扫描比分
MOVDX,IO8255C;
监视开关,是否开始;
右边发球
INAL,DX
TESTAL,01H;
右边是否开关已拨
JZBEGIN11;
未拨,继续监测开关
B:
是否接球(左方):
MOVDX,IO8255C;
先判断左边开关的状态;
检测左边开关
TESTAL,80H;
1000000
JNZFAIL2;
先按下,按失球计
;
开始检测是否接到球
JMPJIXU1
JIXU1:
CALLWAITTIME;
开始等待响应计时
JIEQIU2:
左边接球
判断左边是否击到球
JNZJIDAO2;
击到球,比赛继续
TESTAL,02H
JNZJIEQIU2;
一直循环,当完时,算失球
JMPFAIL2;
跳转到失球程序
、8255A口并行输出(球的移动)
发球后球的移动(从右到左):
MOVBL,01H;
起始状态,最右边开始亮
MOVAL,BL
MOVDX,IO8255A;
输出A口
OUTDX,AL;
00000001
MOVCL,8;
八次移动
BISAI1:
扫描比分子程序
MOVDL,0FFH;
判断是否有ESC键按下
MOVAH,06H
INT21H
CMPAL,27
JZEXIT1;
有键按下,则退出
CALLDELAY;
调用延时子程序
ROLBL,1;
向左移动一次
OUTDX,AL
调用扫描子程序
DECCL;
每移动一次减一
CMPCL,1;
判断是否在最左边
JNZBISAI1;
若未完,继续
B:
接球后球的移动(从左到右):
MOVBL,40H;
左边第二个马上亮;
左边击到球
MOVDX,IO8255A
MOVCL,7;
7次移动
JMPBISAI2;
跳转到从左到右的流水灯的程序
C:
失球后灯要全灭(左失球后):
FAIL2:
先显示一下以前的比分
MOVBL,00H;
一次结束后灯全部熄灭
、显示字符串程序
例如:
MOVDX,OFFSETSTRING0;
STRING0为字符串“比赛开始”
MOVAH,09H;
显示信息“比赛开始”
(五)子程序设计
(1)延时子程序
流程图
主要程序
DELAYPROCNEAR;
延迟子程序
PUSHAX
PUSHDX
CALLLEDTIME;
送初始值
JM:
看计时状态
INAL,DX;
右边第二个开关检测计时器是否满
JNZJM;
未满,继续监测
POPDX
POPAX
RET;
开始移动
DELAYENDP
(2)屏幕显示子程序
PCXSPROCNEAR;
显示屏幕子程序
MOVDX,OFFSETSTRING10
MOVAH,09H;
显示信息“现在比分”
MOVAL,YF;
比分转换,转换为对应的ASCII码
MOVAH,ZF
ADDAL,30H
ADDAH,30H
MOVYX,AL
MOVZX,AH
MOVDL,ZX;
显示真实比分,左边得分
MOVAH,02H
MOVDL,3AH;
显示“:
”
MOVDL,YX;
显示右方得分
RET
PCXSENDP
(3)数码管扫描比分子程序
例如输出左边分数:
MOVDX,LS273
MOVAL,00H
送全灭位选码
XORSI,SI
MOVSI,OFFSETLED
MOVBL,ZF;
选择左边分数相对应的断码
MOVBH,00H
ADDSI,BX
MOVAL,BYTEPTR[SI]
MOVDX,IO8255B
OUTDX,AL;
并行输出左边分数
MOVDX,LS273
MOVAL,02H;
位选选择02H,使左边数码管亮
如果要输出右边分数,则应选择右边分数相对应的断码,位选选择01H,使右边数码管亮。
(4)移动速度选择子程序
通过K2/K3选择灯的移动速度,速度默认为.,另可选择:
MOVDX,IO8253C;
给8253控制字
MOVAL,36H;
计数器0先写低后写高,方式3,二进制
MOVDX,IO8255C;
读开关状态
ANDAL,00001100B;
开关2/3调节速度
CMPAL,04H;
2/3=1/0
JNZNEXT1
MOVAX,600;
速度
JMPTIME
NEXT1:
CMPAL,08H;
2/3=0/1
JNZNEXT2
MOVAX,400;
NEXT2:
MOVAX,1000;
TIME:
MOVDX,IO8253A
OUTDX,AL;
先写低字节
MOVAL,AH
后写高字节
MOVDX,IO8253C
MOVAL,74H;
方式2
MOVAX,500;
写入循环计数初值500
MOVDX,IO8253B
后写高字节,开始计时
(5)规定等待时间选择子程序
子程序中的其它部分与上面的移动速度子程序相同,规定等待时间默认为,另可通过K4、K5选择速度,不同的部分程序如下:
MOVDX,IO8255C;
ANDAL,00110000B;
开关4/5调节等待响应时间
CMPAL,10H;
5/4=0/1
JNZWAIT1
MOVAX,600;
JMPWTIME
WAIT1:
CMPAL,20H;
5/4=1/0
JNZWAIT2
MOVAX,400;
WAIT2:
CMPAL,30H;
5/4=1/1
JNZWAIT3
MOVAX,200;
WAIT3:
MOVAX,1000速度
四.程序设计中遇到的问题及解决方法
1、8255的A、B、C口都被占用,数码管的位选无法使用8255实现。
解决方法:
8255B口连接断码a~h,两个数码管要动态显示,需要使用74LS273进行位选,实现数码管显示。
2、在调试过程中发现只有右边的数码管亮,左边的不亮。
先检查硬件设备,没有问题。
再利用单步调试,发现程序也没有问题。
后来发现左边的数码管有亮,但是因为亮的时间不够,肉眼看到的就是不亮,而右边的之所以一直亮,是因为在退出数码管扫描显示子程序时,选中了位码S0,所以一直亮。
只需要将扫描子程序多多放在流水灯的主程序里面,多运行几次,肉眼看到数码管就都是亮的,就能解决这个问题。
3、发现主程序过长,从程序尾跳到程序头不能一步实现。
在程序中设置过渡跳转程序即可解决。
4、当接到球后,从左到右移动时,发现会有两个两个灯一起移动的情况。
单步调试时发现程序有问题。
赋给流水灯的值为60H,即01100000,应将赋的值为40H,即01000000,左边第二个灯亮。
5、当在主程序中有的地方加上数码管扫描比分子程序后,出现了流水灯不走的情况。
在单步调试中发现,这种情况都是发生在子程序加在JZ、JNZ等判断条件前一行的。
说明子程序是改变了标志寄存器中的一些标志位。
所以应将子程序的调用放在其它地方,不能放在判断条件的前一行。
五.分析与总结
1、具体实验分析见各部分的调试实验分析。
2、硬件是基础,做实验时要首先检查硬件设备是否可用,保证后续实验的可检测性。
3、在实验中应不要带电接线、插拔芯片;
插拔接线时轻微转动,便于插拔。
4、在实验中学会使用示波器、万用表、逻辑笔观察、测量。
5、实验中出现问题时,要进行单步调试来发现问题。
6、在程序设计中,设计流程图是十分关键的,有了流程图后对软件设计有一定的指导方向。
附录:
程序代码
IOPORTEQU0EC00H-0280H;
tpc卡中设备的io地址
IO8255AEQUIOPORT+288H;
8255A口地址
IO8255BEQUIOPORT+289H;
8255B口地址
IO8255CEQUIOPORT+28AH;
8255C口地址
IO8255EQUIOPORT+28BH;
8255控制寄存器端口地址
IO8253CEQUIOPORT+283H;
8253控制寄存器地址
IO8253AEQUIOPORT+280H;
计数器通道0地址
IO8253BEQUIOPORT+281H;
计数器通道1地址
LS273EQUIOPORT+2A8H;
273,位选地址
;
DATASEGMENT
ZFDB00H;
左边队员的比分
YFDB00H;
右边队员的比分
ZXDB00H;
左边队员比分显示
YXDB00H;
右边队员比分显示
STRING0DB0DH,0AH,'
competitonbegin:
'
0DH,0AH,'
$'
STRING1DB0DH,0AH,'
rightfaqiu'
STRING2DB0DH,0AH,'
leftfaqiu'
STRING3DB0DH,0AH,'
rightgetready'
STRING4DB0DH,0AH,'
leftgetready'
STRING5DB0DH,0AH,'
rightgetgoal'
STRING6DB0DH,0AH,'
leftgetgoal'
STRING7DB0DH,0AH,'
rightwin!
STRING8DB0DH,0AH,'
leftwin!
STRING9DB0DH,0AH,'
gameover!
STRING10DB0DH,0AH,'
scoreleft:
right'
LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;
段码(分别为0,1,2,3,4,5,6,7,8,9)
DATAENDS
STACKSSEGMENTSTACK
DB100DUP(?
)
STACKSENDS
右边的标志为1,左边为2,规则为输家发球,流水灯及接球发球功能,显示在PC上的游戏进程和比分
开关2/3控制流水灯速度,默认速度是,等待时间和由4/5控制,默认速度是
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACKS
START:
MOVAX,STACKS
MOVSS,AX
MOVAX,DATA
MOVDS,AX
MOVDX,IO8255;
START1:
MOVDX,OFFSETSTRING0
BEGIN1:
MOVDX,OFFSETSTRING1
显示信息“请右边队员发球”
BEGIN11:
JZBEGIN11
MOVDX,OFFSETSTRING4
显示信息“请左边队员接球”
MOVBL,01H;
起始状态,最右边开始亮
CMPAL,27
从右边到左边
CALLDISP
;
BEGIN4:
JMPBEGIN1;
远程跳转
JIXU1:
JIEQIU2:
JMPFAIL2
JIDAO2:
MOVDX
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 乒乓球 实验 报告