网站大量收购独家精品文档,联系QQ:2885784924

跳舞机——课程计报告.doc

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

xll805 + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档