




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微机原理与接口技术 课程设计报告 专业: 班级: 姓名: 学号: 指导教师评语: 成绩: 签名: 年月 日 小键盘按键识别 课题任务与要求 实验箱上有一个 24 键小键盘,出厂时按键接点已经按图所示连接。小 键盘有8根横向引出线。实验前将8根横向引出线与PALPA7相连,3根纵 向引出线与PBA PB2相连,再从“I/O 口地址译码器”选择一个译码器输出 连接到 8255的片选端,做好上述连接之后,就构成了以 8255 为核心的键盘 输入电路要求: 在实际的自动控制系统中,键盘输入电路的作用是输入数据(09, A F)或者输入控制信号(G, M P, R, W X, Y, S)。实现上述功能的
2、核心程 序是“按键识别”。 本实验要求设计按键识别程序, 当按下小键盘上某一个键的时候, 主机 屏幕显示闭合键的键名,按下小键盘“ R键之后停止演示。 二完成任务的方法或方案简介 本程序显示数字 0 到 9,刚刚开始提出两中解决方案一是用跳转法直接显示数值,二是用查 找法间接显示数值, 本程序是用第一种方案, 虽然程序多了些,但直观容易理解, 故采纳第 一种方案。 DISPLA 丫函数用来将BUFFER中的键值显示在数码管上。 设定A 口方式0输出,B 口方式0输入。 GETINPUT函数通过行值和列值查出输入的键值,并将它保存在AL中,如果输入是 R,则AL赋值为FFH如果输入非法字符,则
3、AL赋值为0AH 设定如果是R则退出程序 CHANG函数用来改变 BUFFER中保存的键值,将 BUFFER中的键值移位,最后一位加 入 AL 中的新键值。 CLOSEAL此函数用在退出程序时将数码管关闭 以上是主题函数,在设计过程中还碰到了一些细节问题,例数码管的显示才用延迟20MS的 办法解决,具体方案在 DISPLA 丫函数中。 实现系统 1、程序框图 : 2、实验电路图: i Al 跟代: CJS A DO p飢 D】 PAI D】 p尤 P3 PAS D4 PA4 td PA5 拥 MS wc ST KR PK PB PB2 Al PB3 KAN HDH CE PK PBJ pa P
4、CI PC i PC6 PC7 W1 4 21 25 R:Q LE 1 m id 1DK 器 1DK Ki 1宣 IP 14 u 迴 F n io U1 7. J35 y 14J4 LEE LED j.n jjf 3、8255方式选择控制字 tfvibc TITLE LITTLEKEYBOARD SSEG SEGMENT PARA STACK STACK DB 256 DUP (0) SSEG ENDS DSEG SEGMENT A_8255 EQU 210H B_8255 EQU 211H CON_8255 EQU 213H BUFFER DB 6 DUP(0) HANG DB LIE DB
5、 NEWHANG DB NEWLIE DB TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH, DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG, DS:DSEG,SS:SSEG START PROC NEAR MOV AX,DSEG MOV DS,AX CALL CLOSEALL ( 关掉数码管,防止因为最初数码管有显示而使程序执行不正常。 ) CMPAGAIN: CALL DISPLAY (DISPLAY函数用来将 BUFFER中的键值显示在数码管上。) MOV DX,CON_8255 MOV AL,B OUT DX
6、,AL (设定A 口方式0输出,B 口方式0输入) AGAIN: CALL DISPLAY MOV DX,A_8255 MOV AL,0 OUT DX,AL( 0 PA7-PA0 ) MOV DX,B_8255 IN AL,DX AND AL,00000111B ( 取出 PB0PB2 CMP AL,00000111B JE AGAIN MOV LIE,AL(将列值保存) CALL DELAY1 (延时 20ms) MOV DX,CON_8255 MOV AL,B OUT DX,AL (预置 A 口方式 0 输入, B 口方式 0 输入) MOV DX,A_8255 IN AL,DX MOV
7、HANG,AL (将行值保存) CALL GETINPUT R, 则 (GETINPUT函数通过行值和列值查出输入的键值,并将它保存在AL中,如果输入是 AL赋值为FFH如果输入非法字符,则 AL赋值为0AH) CMP AL,0AH JE CMPAGAIN (如果是非法字符则跳回) CMP AL,0FFH JNE CONTINUE (如果是R则退出程序.) CALL CLOSEALL MOV AH,4CH INT 21H CONTINUE: CALL CHANGE (CHANGE函数用来改变BUFFER保存的键值) MOV DX,CON_8255 MOV AL,B OUT DX,AL (设定A
8、 口方式0输出,B 口方式0输入) LLL: CALL DISPLAY MOV DX,B_8255 IN AL,DX AND AL,00000111B ( 取出 PB0 PB2) CMP AL,00000111B JNE LLL JMP CMPAGAIN ( 不断扫描 , 如果不松开按键,那么就循环等待;直到按键松开就跳回。 ) RET START ENDP * J (此函数用以延时 20MS) DELAY1 PROC NEAR PUSH AX PUSH CX PUSH DX MOV AH,86H MOV CX,0 MOV DX,20000 INT 15H POP DX POP CX POP
9、AX RET DELAY1 ENDP * J R,则 (GETINPUT函数通过行值和列值查出输入的键值,并将它保存在AL中,如果输入是 AL赋值为FFH如果输入非法字符,则AL赋值为OAH) GETINPUT PROC NEAR CMP LIE,00000110B JE LIE0 CMP LIE,00000101B JE LIE1 CMP LIE,00000011B JE LIE2 MOV AL,0AH RET LIE2:CMP HANG,00010000B JE NEXT MOV AL,0AH RET NEXT:MOV AL,0FFH RET LIE0:CMP HANG,01111111B
10、 JE KEY8 CMP HANG,B JE KEY9 MOV AL,0AH RET KEY8:MOV AL,8 RET KEY9:MOV AL,9 RET LIE1:CMP HANG,01111111B JE KEY0 CMP HANG,B JE KEY1 CMP HANG,B JE KEY2 CMP HANG,B JE KEY3 CMP HANG,B JE KEY4 CMP HANG,B JE KEY5 CMP HANG,B JE KEY6 CMP HANG,B JE KEY7 MOV AL,0AH RET KEY0:MOV AL,0 RET KEY1:MOV AL,1 RET KEY2:
11、MOV AL,2 RET KEY3:MOV AL,3 RET KEY4:MOV AL,4 RET KEY5:MOV AL,5 RET KEY6:MOV AL,6 RET KEY7:MOV AL,7 RET GETINPUT ENDP * J AL (CHANGE函数用来改变 BUFFER中保存的键值,将 BUFFER中的键值移位,最后一位加入 中的新键值。 ) CHANGE PROC NEAR PUSH AX PUSH SI MOV SI,OFFSET BUFFER MOV AH,SI+1 MOV SI,AH MOV AH,SI+2 MOV SI+1,AH MOV AH,SI+3 MOV SI
12、+2,AH MOV AH,SI+4 MOV SI+3,AH MOV AH,SI+5 MOV SI+4,AH MOV SI+5,AL POP SI POP AX RET CHANGE ENDP * J (DISPLAY函数用来将 BUFFER中的键值显示在数码管上。) DISPLAY PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI MOV BX,OFFSET TABLE MOV SI,OFFSET BUFFER MOV CL,1 XUNHUAN: MOV AL,SI XLAT MOV DX,201H OUT DX,AL MOV DX,200H
13、MOV AL,CL OUT DX,AL MOV DX,200H MOV AL,0 OUT DX,AL INC SI SHL CL,1 CMP CL,40H JNE XUNHUAN POP SI POP DX POP CX POP BX POP AX RET DISPLAY ENDP * J (此函数用在退出程序时将数码管关闭 . ) CLOSEALL PROC NEAR PUSH AX PUSH CX PUSH DX MOV CL,1 XUNHUAN1: MOV DX,200H MOV AL,CL OUT DX,AL MOV AL,0 OUT DX,AL SHL CL,1 CMP CL,20H
14、 JNE XUNHUAN1 POP DX POP CX POP AX RET CLOSEALL ENDP CSEG END END START 四、程序运行结果分析: 六实验总结: 1 .实验电路板上 8255的端口地址位 210H 213H,这与书上给的不一样,开始时在这 方面花费了较多时间。 2.通过此次程序设计,我对计算机读取键盘值的过程有了一定的认识。最开始编程序 时并没有想到如果始终按同一个键不放, 数码管上就会一下子出来很多字符。 调试时发现了 这个问题, 想到的解决方法有两种, 一种是每一次按键后检测键是否松开, 直到松开后再继 续执行下一次判断; 另一种是按键后延缓一个固定的时间
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 航天器天线设计与布局考核试卷
- 淡水养殖鱼类疾病早期诊断技术考核试卷
- 租赁业务中的用户画像构建考核试卷
- 《企业员工绩效考核与薪资结构设计教学课件》
- 豆类作物种植资源利用与保护考核试卷
- 虚拟现实技术对社会生活的影响考核试卷
- 运维安全岗位职责3篇
- 中秋猜灯谜活动方案
- 《微分与积分极限》课件
- 孔子思想教育
- DB32-T 2665-2014机动车维修费用结算规范-(高清现行)
- 中专通用简历表
- 思想政治教育学原理整套课件完整版电子教案课件汇总(最新)
- 冲孔桩施工安全管理培训讲义
- 压力管道安全检查表参考范本
- 部编人教版小学五年级下册语文文言文阅读理解课后专项练习
- 皮肤管理--ppt课件
- 双向气动插板门使用说明书
- 无生老母救世血书宝卷
- 住房公积金廉政风险防控指引
- 医用耗材分类目录 (低值 ╱ 高值)
评论
0/150
提交评论