ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:23.81KB ,
资源ID:331393      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/331393.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(西安电子科技大学通信工程学院课程设计.docx)为本站会员(b****0)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

西安电子科技大学通信工程学院课程设计.docx

1、西安电子科技大学通信工程学院课程设计课程设计实验报告010812#跳舞机设计一.设计目的:掌握矩阵键盘和显示接口的硬件设计方法掌握键盘扫描程序和显示程序的编程方法实用程序设计及学习DOS、BIOS调用1.基本功能设计:至少设计4个数码管和4个按键数码管显示的舞蹈动作是随机的可以统计游戏者的分数2.扩展功能:电脑和实验版上可以加一些声光电的效果3.创新功能:, 作为正常,当作反向应用,即。二.系统方案:设计思路如下:产生4个随机数,将随机数和方向对应。将随机方向显示在数码管上,从按键获得方向输入,比较两方向的值。时间结束将统计到的正确值转换成评分,输出评分等级。程序分为以下几大部分:主程序,RD

2、NUM,DISPLAY,SCANNUM1,CMPNUM。其中RDNUM 调用系统时间规范化产生随机数,载入BUF,;DISPLAY则将BUF1的数值在TABEL2查询获得数码管值,并将内容显示出来;SCANNUM1循环调用DISPLAY以维持在扫描键值期间的数码管显示,同时监控按键获得键值,查询TABE1将键值转换为数值,超时则记为-1;CMPNUM调整键值和随机数,将他们的对应域统一,形成映射,比较二者的值;主程序通过循环调用SCANNUM1持续监控按键直到超时,4次调用CMPNUM,统计正确数,最后对结果评分等级NICE,GOOD,PASS,FAIL,调用DISPLAY显示评分。1.主程序

3、:MOV AX,DATAMOV DS,AX ;数据段段址送DS。MOV AX,STACKMOV SS,AX ;堆栈段段址送SS。MOV SP,OFFSET TOP ;获取堆栈指针。MOV DX,0EE03H ;DX指向8255的D口。MOV AL,10001001B ;工作方式状态控制字,表示方式0,端口C输出。OUT DX,AL ;完成8255初始化。STEP1:CALL FAR PTR RDNUM ;调用RDNUM生成随机数,存储于BUF。LEA DI,BUF ;DI传递当前正在比较的随机数。MOV CX,4 STEP2:CALL FAR PTR SCANNUM1 ;扫描键值,返回值sta

4、r t初始化8255产生随机数,存入缓存扫描键盘,将扫描到的键值存入缓存,超时则标记-1比较随机数和键值统计正确值数码管显示评分等级end存于BL。CALL FAR PTR CMPNUM ;比较数值。INC DI ;读取下一个随机数。LOOP STEP2;循环四次逐个键值扫描,比较。STEP3: ;将成绩转换对应评分。MOV AX,RESULTCMP AL,4JE NICECMP AL,3JE GOODCMP AL,2JE PASSFAIL: ;成绩小于2输出FAIL。MOV AH,0FHMOV BUF0,AHMOV AH,0AHMOV BUF1,AHMOV AH,1HMOV BUF2,AHM

5、OV BUF3,AHJMP STEP4PASS: ;成绩为2输出PASS。MOV AH,21HMOV BUF0,AHMOV AH,0AHMOV BUF1,AHMOV AH,5HMOV BUF2,AHMOV BUF3,AHJMP STEP4GOOD: ;成绩为3输出GOOD。MOV AH,6HMOV BUF0,AHMOV AH,22HMOV BUF1,AHMOV BUF2,AHMOV AH,0HMOV BUF3,AHJMP STEP4NICE: ;成绩为4输出NICE。MOV AH,10HMOV BUF0,AHMOV AH,1HMOV BUF1,AHMOV AH,0CHMOV BUF2,AHMO

6、V AH,0EHMOV BUF3,AHJMP STEP4STEP4:MOV CX,9000STP5:CALL FAR PTR DISPLAY ;显示评分。LOOP STP5 ;闪烁维持评分显示。MOV AH,4CHINT 21HCODE1 SEGMENTASSUME CS:CODE1RDNUM PROC FARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DI ;寄存器保护。DO1:MOV AH,2CH ;2CH号功能调用,取系统时间:DL存放毫秒INT 21HMOV AL,DL ;将毫秒值除以5,调整随机偏移量的取值在0-4之间。MOV AH,0MOV BL,5DIV B

7、L ;AH是一个0-4的随机数去查询伪随机表。RDNU MRET获取系统时间产生随机数随机数查表获得伪随机序列序列依次载入B UFLEA DI,TABLE3RDSCAN:MOV AL,DI ;将随机表内容放入AL。INC DIINC DI ;指向转换表下一个查找字节。CMP AL,AH ;比较AL,AH。JNZ RDSCAN ;不等则继续查找。MOV AL,DI-1 ;相等则开始查表对BUF赋值。MOV BUF0,ALMOV AL,DI+1MOV BUF1,AL MOV AL,SI+3 MOV BUF2,AL MOV AL,SI+5 MOV BUF3,ALPOP DIPOP DXPOP CXP

8、OP BXPOP AXRET ;返回。RDNUM ENDP CODE1 ENDSCODE2 SEGMENTASSUME CS:CODE2DISPLA Y PROC FARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIPUSH SI ;寄存器保护。MOV CX,4 ;循环显示4个数码管。LEA DI, BUF ;DI指向输入的数据。MOV AH,00001000B ;由左至右显示。DO2:MOV BL,DI ;将输入数据放入BL。LEA SI,TABLE2 ;SI指向由BUF到LED数码管的转换表。MOV DX,0EE00H ;DX指向A口地址。MOV AL,0FFH ;

9、显示为空。OUT DX,AL ;将AL内容显示。DO3:MOV BH,SI ;将转换表内容放入BH。MOV DH,0FFHINC SIINC SI ;指向转换表下一个查找字节。CMP BL,BH ;比较BL,BH。JNZ DO3 ;在转换表中查找对应值。MOV DX,0EE01H ;将DX指向B口。MOV AL,AH ;给AL赋值(应显示那个数码管。OUT DX,AL ;控制哪个管显示。MOV DX,0EE00H ;将DX指向A口。MOV AL,SI-1 ;查找到的数码管值写入AL。OUT DX,ALDELAY: ;维持显示,使数码管数据显示清晰。PUSH CXPUSH AXMOV AX,20

10、0REP1: ;用两个循环来控制时延。MOV CX,1000REP2:CX=4随机数查表转换8255输出待显值时延,维持显示更新待显值和数码管CX=0?RETCX-1DISP LAYLOOP REP2DEC AXCMP AX,0JNZ REP1;AX不为0继续循环。POP AXPOP CXROR AH,1 ;循环左移。INC DI ;更换下一个显示数据。LOOP DO2 ;POP SIPOP DIPOP DXPOP CXPOP BXPOP AXRETDISPLA Y ENDP CODE2 ENDSCODE3 SEGMENTASSUME CS:CODE3SCANNUM1 PROC FARPUSH

11、 AXPUSH CXPUSH DXPUSH DIPUSH SI ;寄存器保护,将BX作为参数传递的方式,不压栈。MOV CX,SCANNUM ;控制扫描循环次数。SCANLOOP1:CALL FAR PTR DISPLAY ;调用DISPLAY 显示。MOV AL,00001111BMOV DX,0EE05HAND AL,LEDOUT DX,AL ;74L374口高位置零。MOV DX,0EE02H ;控制C口。IN AL,DX ;将C口内容读到AL。AND AL,00001111B;取出AL低四位。CMP AL,00001111B ;判断是否有键按下(无键按下时为全1。JE SCANLOOP

12、3 ;无键值时跳转。MOV AH,11101111B ;扫描第一行。SCANLOOP2:MOV AL,AH ;有键按下则开始扫描。MOV DX,0EE05HOUT DX,ALMOV DX,0EE02HIN AL,DXAND AL,00001111B;取出AL低四位。CMP AL,00001111B ;判断是否有键按下(无键按下时为全1。JNE SCANLOOP4 ;有则译键码。ROL AH,1 ;AH左移读取下一行。CMP AH,11111110B ;循环四次,各行扫完结束?JNZ SCANLOOP2 ;没有则进行下一次扫描。SCANLOOP3:LOOP SCANLOOP1MOV BL,0FF

13、H ;超时标记。JMP SCANLOOP7 ;循环结束,跳出扫描。SCANLOOP4: ;键值查表。SCAN调用DISPLAY,显示行输出全0列输入值=1111?行输出初值AH=1110 1111行输出 AH列输入值=1111?AH左环移4行扫描完否?NNYNY调用DISPLAY,消抖读入列值列输入值=1111?调用DISPLAY,消抖获得键值将键值译码放入BLDECXYRETCX=0?BL=-1Y(CX-1CXNNAND AH,0F0H ;AH带有行号特征, AND后行特征位为0。MOV BL,ALOR BL,AH ;行列OR获得键值。MOV DI,OFFSET TABLE1 ;获取键值对应

14、表的地址。SCANLOOP5: ;键值和随机数映射。MOV BH,DIINC DIINC DICMP BL,BH ;键值和查表比较。JNZ SCANLOOP5MOV BL,DI-1 ;查到值放入BL。SCANLOOP6:CALL FAR PTR DISPLAY ;调用显示。IN AL,DXAND AL,00001111BCMP AL,00001111B ;判断按键是否松开。JNE SCANLOOP6 ;没有继续监听。SCANLOOP7:CALL FAR PTR DISPLAY ;消抖。POP SIPOP DIPOP DXPOP CXPOP AXRETSCANNUM1 ENDPCODE3 ENDSCODE4 SEGMENTASSUME CS:CODE4CMPNUM PROC FARPUSH CXPUSH DXPUSH SI ;寄存器压栈保护。MOV BH,DI ;BH装载随机数,BL装载键值。CHANGE1: ;键值映射范围调整。PUSH BXPUSH AXMOV AL,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1