- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
跳舞机——课程计报告
课程设计实验报告
题目:跳舞机
设计者:01071XXX XXX
合作者:01071XXX XXXX
01071XXX XXX
时间:2011年1月19日
跳舞机实验报告
一.设计目的:
1.掌握矩阵键盘和显示接口的硬件的设计方法
2.掌握键盘扫描程序和显示程序的编程方法
3.实用程序设计及学习DOS、BIOS调用
二.设计任务:
1.基本功能设计:
(1)至少设计4个数码管和4个按键
(2)数码管显示的舞蹈动作是随机的
(3)可以统计游戏者的分数
2.扩展功能:电脑和实验版上可以加一些声光电的效果
3.创新功能:跳舞机开始以后,玩家可以先选择难度,难度越高,按键的速度也需要更高
三.系统方案:
总的设计方案需要考虑程序变量和实现功能两部分。
程序变量:
BUF:字节型,存放输入的数据
TB1:字节型,存放输入键值到BUF数据的转化表
TBS:字节型,存放BUF数据到数码管字型码的转化表
MUN:字型,记录玩家按键正确的次数
LED:字节型,发光二极管控制信号
DE: 字型,SCAN 子程序中的循环次数
功能介绍:程序开始时,六个LED数码管循环闪烁等待玩家按任意键开始跳舞。本游戏设置两个难度等级,当玩家按下的是上方的八个按键时表示玩家选择等级“难”,否则表示玩家选择等级“易”。游戏开始后,左边的两个数码管交替显示随机方向,我们用、、、分别表示上下左右四个方向,左边第三个数码管标识当前游戏的等级,表示“难”,表示“易”,右边三个数码管显示玩家按对的次数,即分数。
玩家在游戏时,按照左边两个数码管的提示按动键盘,由于键盘中一些按键已无法正常使用,我们每一个方向有两个键来对应,如下图所示。
游戏时,每个方向仅停留很短一段时间,根据时间的停留长短,我们设置“难”“易”等级。如果玩家能在有限时间内正确按下键盘,则右边计数的三个数码管显示分数加1,如果反应超时或按错,则蜂鸣器“滴”一声。
游戏结束后玩家的成绩显示大约30s后程序退出。
其中,扩展功能为:
除基本功能外,还加入了声、光功能。当玩家按键错误时,主板上的蜂鸣器发出“滴”的一声。在整个游戏过程中,实验板上的4个发光二极管分为两组交替闪烁。
创新功能为:
开始游戏时,可以首先选择难度等级,这里设为“难”,“易”两个级别。
这个功能可以通过在SCAN子程序中改变循环的次数,来改变箭头显示的速度,速度快的为“难”,慢的为“易”。
四.硬件原理及电路原理图:
1.硬件原理
(1)8255
8255的管脚图见右边:
8255A为一可编程的通用接口芯片。它有三个数据端口A、B、C,每个端口为8位,并均可设成输入和输出方式,但各个端口仍有差异:
端口A(PA0~PA7):8位数据输出锁存/缓冲器,8位数据输入锁存器;
端口B (PB0~PB7):8位数据I/O锁存/缓冲器,8位数据输入缓冲器;
端口C(PC0~PC7):8位输出锁存/缓冲器,8位输入缓冲器(输入时没有锁存);在模式控制下这个端口又可以分成两个4位的端口,它们可单独用作为输出控制和状态输入。
在8255A中,除了这三个端口外,还有一个控制寄存器,用于控制8255A的工作方式。因此8255A共有4个端口寄存器,分别用A0,A1指定:
A1=0,A0=0,表示访问端口A;
A1=0,A0=1,表示访问端口B;
A1=1,A0=0,表示访问端口C;
A1=1,A0=1,表示访问控制寄存器;
当向A1=1,A0=1的端口寄存器(即控制寄存器)发送D7=1的控制字时,其作用为方式控制字,各个位的含义如图所示
(2)74LS374
74LS374的管脚图如下:
主要端口的含义:
D0~D7 数据输入端
OE 三态允许控制端(低电平有效)
CP 时钟输入端
O0~O7 输出端
2.电路图
五.程序流程:
主程序及流程图
MOV DX,0EE03H
MOV AL
OUT DX,AL ;完成8255初始化
CALL FAR PTR READY ;开始
MOV CX,100 ;主程序循环100次
CALL FAR PTR RAND;把一个随机数放入BUF
CALL FAR PTR SCAN;有键按下终止
CALL FAR PTR COMP;比较
LOOP DO1
MOV AL,21
MOV BUF[5],AL
MOV AX,MUN ;计算成绩
MOV BL,5
MUL BL
MOV DL,100
DIV DL
MOV BUF[2],AL ;取出计数的百
文档评论(0)