西安电子科技大学通信工程学院课程设计.docx
- 文档编号:1165484
- 上传时间:2022-10-18
- 格式:DOCX
- 页数:27
- 大小:27.72KB
西安电子科技大学通信工程学院课程设计.docx
《西安电子科技大学通信工程学院课程设计.docx》由会员分享,可在线阅读,更多相关《西安电子科技大学通信工程学院课程设计.docx(27页珍藏版)》请在冰豆网上搜索。
西安电子科技大学通信工程学院课程设计
课程设计实验报告
010812##
跳舞机设计一.设计目的:
掌握矩阵键盘和显示接口的硬件设计方法
掌握键盘扫描程序和显示程序的编程方法
实用程序设计与学习DOS、BIOS调用
1.基本功能设计:
至少设计4个数码管和4个按键
数码管显示的舞蹈动作是随机的
可以统计游戏者的分数
2.扩展功能:
电脑和实验版上可以加一些声光电的效果
3.创新功能:
,,
作为正常↑→↓←,当作反向应用,
即↓←↑→。
二.系统方案:
设计思路如下:
产生4个随机数,将随机数和方向对应。
将随机方向显示在数码管上,从按键获得方向输入,比较两方向的值。
时间结束将统计到的正确值转换成评分,输出评分等级。
程序分为以下几大部分:
主程序,RDNUM,DISPLAY,SCANNUM1,CMPNUM。
其中RDNUM调用系统时间规范化产生随机数,载入BUF,;DISPLAY则将BUF1的数值在TABEL2查询获得数码管值,并将内容显示出来;SCANNUM1循环调用DISPLAY以维持在扫描键值期间的数码管显示,同时监控按键获得键值,查询TABE1将键值转换为数值,超时则记为-1;CMPNUM调整键值和随机数,将他们的对应域统一,形成映射,比较二者的值;主程序通过循环调用SCANNUM1持续监控按键直到超时,4次调用CMPNUM,统计正确数,最后对结果评分等级NICE,GOOD,PASS,FAIL,调用DISPLAY显示评分。
1.主程序:
MOVAX,DATA
MOVDS,AX;数据段段址送DS。
MOVAX,STACK
MOVSS,AX;堆栈段段址送SS。
MOVSP,OFFSETTOP;获取堆栈指针。
MOVDX,0EE03H;DX指向8255的D口。
MOVAL,10001001B;工作方式状态控制字,
表示方式0,端口C输出。
OUTDX,AL;完成8255初始化。
STEP1:
CALLFARPTRRDNUM;调用RDNUM生
成随机数,存储于BUF。
LEADI,BUF;DI传递当前正在比较的随机数。
MOVCX,4STEP2:
CALLFARPTRSCANNUM1;扫描键值,返回值
start
初始化8255
产生随机数,存入缓存
扫描键盘,将扫描到的键值存
入缓存,超时则标记-1
比较随机数和键值统计正确值
数码管显示评分等级
end
存于BL。
CALLFARPTRCMPNUM;比较数值。
INCDI;读取下一个随机数。
LOOPSTEP2;循环四次逐个键值扫描,比较。
STEP3:
;将成绩转换对应评分。
MOVAX,RESULT
CMPAL,4
JENICE
CMPAL,3
JEGOOD
CMPAL,2
JEPASS
FAIL:
;成绩小于2输出FAIL。
MOVAH,0FH
MOVBUF[0],AH
MOVAH,0AH
MOVBUF[1],AH
MOVAH,1H
MOVBUF[2],AH
MOVBUF[3],AH
JMPSTEP4
PASS:
;成绩为2输出PASS。
MOVAH,21H
MOVBUF[0],AH
MOVAH,0AH
MOVBUF[1],AH
MOVAH,5H
MOVBUF[2],AH
MOVBUF[3],AH
JMPSTEP4
GOOD:
;成绩为3输出GOOD。
MOVAH,6H
MOVBUF[0],AH
MOVAH,22H
MOVBUF[1],AH
MOVBUF[2],AH
MOVAH,0H
MOVBUF[3],AH
JMPSTEP4
NICE:
;成绩为4输出NICE。
MOVAH,10H
MOVBUF[0],AH
MOVAH,1H
MOVBUF[1],AH
MOVAH,0CH
MOVBUF[2],AH
MOVAH,0EH
MOVBUF[3],AH
JMPSTEP4
STEP4:
MOVCX,9000
STP5:
CALLFARPTRDISPLAY;显示评分。
LOOPSTP5;闪烁维持评分显示。
MOVAH,4CH
INT21H
CODE1SEGMENT
ASSUMECS:
CODE1
RDNUMPROCFAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHDI;寄存器保护。
DO1:
MOVAH,2CH;2CH号功能调用,
取系统时间:
DL存放毫秒
INT21H
MOVAL,DL;将毫秒值除以5,调整随机偏移量的取值在0-4之间。
MOVAH,0
MOVBL,5
DIVBL;AH是一个0-4的随机数去查询伪随机表。
RDNUM
RET
获取系统时间产生随机数
随机数查表获得伪随机序列
序列依次载入BUF
LEADI,TABLE3
RDSCAN:
MOVAL,[DI];将随机表内容放入AL。
INCDI
INCDI;指向转换表下一个查找字节。
CMPAL,AH;比较AL,AH。
JNZRDSCAN;不等则继续查找。
MOVAL,[DI-1];相等则开始查表对BUF赋值。
MOVBUF[0],AL
MOVAL,[DI+1]
MOVBUF[1],ALMOVAL,[SI+3]MOVBUF[2],ALMOVAL,[SI+5]MOVBUF[3],AL
POPDI
POPDX
POPCX
POPBX
POPAX
RET;返回。
RDNUMENDPCODE1ENDS
CODE2SEGMENT
ASSUMECS:
CODE2
DISPLAYPROCFAR
PUSHAX
PUSHBX
PUSHCX
PUSHDX
PUSHDI
PUSHSI;寄存器保护。
MOVCX,4;循环显示4个数码管。
LEADI,BUF;DI指向输入的数据。
MOVAH,00001000B;由左至右显示。
DO2:
MOVBL,[DI];将输入数据放入BL。
LEASI,TABLE2;SI指向由BUF
到LED数码管的转换表。
MOVDX,0EE00H;DX指向A口地址。
MOVAL,0FFH;显示为空。
OUTDX,AL;将AL内容显示。
DO3:
MOVBH,[SI];将转换表内容放入BH。
MOVDH,0FFH
INCSI
INCSI;指向转换表下一个查找字节。
CMPBL,BH;比较BL,BH。
JNZDO3;在转换表中查找对应值。
MOVDX,0EE01H;将DX指向B口。
MOVAL,AH;给AL赋值(应显示那个数码管。
OUTDX,AL;控制哪个管显示。
MOVDX,0EE00H;将DX指向A口。
MOVAL,[SI-1];查找到的数码管值写入AL。
OUTDX,AL
DELAY:
;维持显示,使数码管数据显示清晰。
PUSHCX
PUSHAX
MOVAX,200
REP1:
;用两个循环来控制时延。
MOVCX,1000
REP2:
CX=4
随机数查表转换
8255输出待显值
时延,维持显示
更新待显值和数码管
CX=0?
RET
CX-1
DISPLAY
LOOPREP2
DECAX
CMPAX,0
JNZREP1;AX不为0继续循环。
POPAX
POPCX
RORAH,1;循环左移。
INCDI;更换下一个显示数据。
LOOPDO2;
POPSI
POPDI
POPDX
POPCX
POPBX
POPAX
RET
DISPLAYENDPCODE2ENDS
CODE3SEGMENT
ASSUMECS:
CODE3
SCANNUM1PROCFAR
PUSHAX
PUSHCX
PUSHDX
PUSHDI
PUSHSI;寄存器保护,
将BX作为参数传递的方式,不压栈。
MOVCX,SCANNUM;控制扫描循环次数。
SCANLOOP1:
CALLFARPTRDISPLAY;调用DISPLAY显示。
MOVAL,00001111B
MOVDX,0EE05H
ANDAL,LED
OUTDX,AL;74L374口高位置零。
MOVDX,0EE02H;控制C口。
INAL,DX;将C口内容读到AL。
ANDAL,00001111B;取出AL低四位。
CMPAL,00001111B;判断是否有键按下(无键按下时为全1。
JESCANLOOP3;无键值时跳转。
MOVAH,11101111B;扫描第一行。
SCANLOOP2:
MOVAL,AH;有键按下则开始扫描。
MOVDX,0EE05H
OUTDX,AL
MOVDX,0EE02H
INAL,DX
ANDAL,00001111B;取出AL低四位。
CMPAL,00001111B;判断是否有键按下(无键按下时为全1。
JNESCANLOOP4;有则译键码。
ROLAH,1;AH左移读取下一行。
CMPAH,11111110B;循环四次,各行扫完结束?
JNZSCANLOOP2;没有则进行下一次扫描。
SCANLOOP3:
LOOPSCANLOOP1
MOVBL,0FFH;超时标记。
JMPSCANLOOP7;循环结束,跳出扫描。
SCANLOOP4:
;键值查表。
SCAN
调用DISPLAY,显示
行输出全0
列输入值
=1111?
行输出初值AH=11101111
行输出AH
列输入值
=1111?
AH左环移
4行扫描完否?
N
N
Y
N
Y
调用DISPLAY,消抖
读入列值
列输入值
=1111?
调用DISPLAY,消抖
获得键值
将键值译码放入BL
DE→CX
Y
RET
CX=0?
BL=-1
Y
(CX-1→CX
N
N
ANDAH,0F0H;AH带有行号特征,AND后行特征位为0。
MOVBL,AL
ORBL,AH;行列OR获得键值。
MOVDI,OFFSETTABLE1;获取键值对应表的地址。
SCANLOOP5:
;键值和随机数映射。
MOVBH,[DI]
INCDI
INCDI
CMPBL,BH;键值和查表比较。
JNZSCANLOOP5
MOVBL,[DI-1];查到值放入BL。
SCANLOOP6:
CALLFARPTRDISPLAY;调用显示。
INAL,DX
ANDAL,00001111B
CMPAL,00001111B;判断按键是否松开。
JNESCANLOOP6;没有继续监听。
SCANLOOP7:
CALLFARPTRDISPLAY;消抖。
POPSI
POPDI
POPDX
POPCX
POPAX
RET
SCANNUM1ENDP
CODE3ENDS
CODE4SEGMENT
ASSUMECS:
CODE4
CMPNUMPROCFAR
PUSHCX
PUSHDX
PUSHSI;寄存器压栈保护。
MOVBH,[DI];BH装载随机数,BL装载键值。
CHANGE1:
;键值映射范围调整。
PUSHBX
PUSHAX
MOVAL,BL
MO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西安电子科技大学 通信工程 学院 课程设计