基于G实验的微机设计实验乒乓球游戏2Word文档格式.docx
- 文档编号:12936524
- 上传时间:2022-09-30
- 格式:DOCX
- 页数:18
- 大小:248.74KB
基于G实验的微机设计实验乒乓球游戏2Word文档格式.docx
《基于G实验的微机设计实验乒乓球游戏2Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于G实验的微机设计实验乒乓球游戏2Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
(4)9分为一局,每一局的开始交替发球。
二.设计目的
(1)
融会贯通微机原理与接口技术课程各章教学内容,通过知识的综合运用,包括对仿真工具、实验平台、的使用,还有对之前学过的实验例程,包括八段管的显示、键盘扫描显示实验、8255输入和输出实验等的加强应用,加深对CPU各模块工作原理及相互联系的认识;
(2)
掌握硬连线控制器的设计方法;
对于G210+实验平台、G6仿真器的使用连线等基本知识。
(3)
学习运用大容量可编程器件开发技术,掌握设计和调试的基本步骤和方法,尤其是在PC操作过程中,可以应用单步执行等方法来进行调试,找出实验过程中的错误。
(4)
培养科学研究能力,取得设计与调试的实践经验。
三.总体设计方案
3.1设计原理
根据课程设计任务书的内容与要求,要实现模拟打乒乓球的运动过程,首先使比赛开始,假定甲先发球,小球向乙方向运动,然后乙挥拍击球将球打回,小球向甲方向运动,如此循环,当某一方击球失误(过早或是超时击球),则为对方加分,最后将比分显示出来。
3.2设计思路及方案
编写汇编语言程序,并结合G2010+实验箱上的相关芯片设计电路,实现模拟打乒乓球的过程(开始,挥拍,球移动,加分,显示分数等功能)。
用8255A的A口作为输出端,分别与机箱上的8个小灯相连,向A口输出一个值,使相应的一个小灯亮,然后利用循环左移和右移发光的小灯来模拟实现乒乓球的实际运动轨迹。
每当小灯亮时,就检测有无键按下,如果无键按下,小灯继续移动并继续检测有无键按下;
如果有键按下并且键码值等于所按下的对应键,则读出8255A的A口的值,看其是否等于小球到达正确位置时对应的值,如果相等小球自动返回,如果不等则调用加分程序,为对方加分。
设置适当大小的缓冲区,将所有比赛的比分放在此缓冲区内,将比分输出显示在六位八段管上(前四位放的是最后获胜的一方,后两位八段管显示的是当前的比赛比分)。
3.3实验环境
·
硬件环境:
G2010+实验箱1台;
G6仿真器1台;
计算机1台;
8255芯片1块;
连线若干根。
软件环境:
伟福应用软件。
四.设计原理
4.1系统中的8255芯片
4.1.18255可编程并行接口芯片介绍
8255可编程外围接口芯片是Intel公司生产的通用并行I/0接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:
方式0――基本输入/出方式 方式1――选通输入/出方式 方式2――双向选通工作方式,8255工作方式控制字和C口按位置位复位控制字格式如图4-1所示。
图4-18255的控制字格式
4.1.2系统中的8255线路
8255的数据线片选信号线、地址线、读写控制线等分别与系统总线相连,其A、B、C三个端口以排针形式引出,供8255实验使用,其线路如图4-2所示。
图4-2系统中的8255线路
8255A是可编程并行接口芯片,可以在CPU与外设之间同时把若干个二进制位信息进行传送,本程序就是利用8255A的这项功能实现同时把八路小灯的信息进行传送。
4.3主程序设计
主程序流程图如图4-4所示。
图4-4主程序流程图
如图4-4所示,按下开始键1,开始时是甲发球,按下0键将球发出去,小灯依次向右闪亮,每个小灯亮完判断有无键按下,若没有,小灯继续移动;
若有,判断是否等于0键码,若不等,小灯继续移动,若相等,判断是否等于8255A的A口值,若相等,则球反向运动,若不等,则给甲加一分,然后判断甲得分是否大于9分,若大于,则给甲的总局分加一,若不大于,则换乙发球。
换乙发球时原理同甲。
实验连线图如图4-5所示。
图4-5
五.结果测试与分析
5.1结果测试
按下1键之后,1开始发球,此后不按0键,让1得分;
当0开始发球时,小球运动到最左端时,按动1键使小球返回,然后不按0键,使1得分,如此下去,使1一直得分。
当甲的得分到9分时,八段管前四位会显示1号胜利,比赛中止。
再次按下开始键,单局的比分清为零,局分不变,比赛继续进行。
5.2结果分析
对于上述的运行结果和操作过程,达到了课程设计任务书中的要求。
即按下开始键比赛开始,1先发球,小灯由左向右逐渐移动,当球移动到另一端时,如果对方按下键击球,则小球原路返回,如果对方按键提前或不击球,则为发球方加分。
一局比赛结束后,当再次按下开始键,单局比赛的得分清成了零,发球者自动换为与前一局先发球者相反的一方乙,此结果与课程任务书中的要求相一致,说明这次课程设计所编的程序成功。
附录:
OUTBITequ0e101h;
位控制口
CLK164equ0e102h;
段控制口(接164时钟位)
DAT164equ0e102h;
段控制口(接164数据位)
IN_KEYequ0e103h;
键盘读入口
PortAequ0A000h;
PortA
PortBequ0A001h;
PortB
PortCequ0A002h;
PortC
CAddrequ0A003h;
控制字地址
datasegment
LEDBufdb6dup(?
);
显示缓冲
Numdb1dup(?
显示的数据
DelayTdb1dup(?
)
;
ODATD1db1dup(?
LEDMAP:
;
八段管显示码
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db7fh,6fh,77h,7ch,39h,5eh,79h,71h
KeyTable:
键码定义
db00h,01h,04h,07h
db0fh,02h,05h,08h
db0eh,03h,06h,09h
db0dh,0ch,0bh,0ah
db13h,12h,11h,10h
db16h,15h,14h,0ffh
dataends
codesegment
assumecs:
code,ds:
data
Delayprocnear
pushax;
延时子程序
pushcx
pushdx
moval,0
movcx,ax
loop$
popdx
popcx
popax
ret
Delayendp
DisplayLEDprocnear
movbx,offsetLEDBuf
movcl,6;
共6个八段管
movah,00100000b;
从左边开始显示
DLoop:
movdx,OUTBIT
outdx,al;
关所有八段管
moval,[bx]
movch,8;
送164
DLP:
pushax
movah,0
testal,80h
jzGN1
movah,1
GN1:
movdx,DAT164;
输出数据位
moval,ah
andal,0fdh
outdx,al
movdx,CLK164;
送出时钟脉冲
moval,1
oral,02h
moval,0
shlal,1
decch
jnzDLP
outdx,al;
显示一位八段管
movah,100
callDelay
shrah,1
incbx
deccl
jnzDLoop
DisplayLEDendp
TestKeyprocnear
输出线置为0
movdx,IN_KEY
inal,dx;
读入键状态
notal
andal,0fh;
高四位不用
TestKeyendp
GetKeyprocnear
movch,00100000b
movcl,6
KLoop:
moval,ch;
找出键所在列
shrch,1
inal,dx
andal,0fh
jneGoon_;
该列有键入
jnzKLoop
movcl,0ffh;
没有键按下,返回0ffh
jmpExit1
Goon_:
shlcl,2;
键值=列X4+行
movch,4
LoopC:
testal,1
jnzExit1
shral,1
inccl
jnzLoopC
Exit1:
movch,0
movbx,offsetKeyTable
addbx,cx
moval,[bx];
取出键码
movbl,al
WaitRelease:
等键释放
movah,10
callTestKey
jneWaitRelease
moval,bl
GetKeyendp
output1procnear
moval,82h
movdx,CAddr
输出控制字
moval,80H
movcx,08H
OutA:
movdx,PortA
shral,1;
移位
movah,100
calldelay;
延时
loopO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 实验 微机 设计 乒乓球 游戏