小键盘按键识别(微机原理课程设计)

上传人:pu****.1 文档编号:503899879 上传时间:2022-10-08 格式:DOC 页数:13 大小:66.50KB
返回 下载 相关 举报
小键盘按键识别(微机原理课程设计)_第1页
第1页 / 共13页
小键盘按键识别(微机原理课程设计)_第2页
第2页 / 共13页
小键盘按键识别(微机原理课程设计)_第3页
第3页 / 共13页
小键盘按键识别(微机原理课程设计)_第4页
第4页 / 共13页
小键盘按键识别(微机原理课程设计)_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《小键盘按键识别(微机原理课程设计)》由会员分享,可在线阅读,更多相关《小键盘按键识别(微机原理课程设计)(13页珍藏版)》请在金锄头文库上搜索。

1、微机原理与接口技术课程设计报告专 业: 班 级: 姓 名: 学 号: 指导老师评语:成果: 签名: 年 月 日小键盘按键识别一 课题任务与要求实验箱上有一个24键小键盘,出厂时按键接点已经按图所示连接。小键盘有8根横向引出线。实验前将8根横向引出线与PA0PA7相连,3根纵向引出线与PB0PB2相连,再从“I/O口地址译码器”选择一个译码器输出连接到8255的片选端,做好上述连接之后,就构成了以8255为核心的键盘输入电路要求:在实际的自动掌握系统中,键盘输入电路的作用是输入数据(09,AF)或者输入掌握信号(G,M,P,R,W,X,Y,S)。实现上述功能的核心程序是“按键识别”。本实验要求设

2、计按键识别程序,当按下小键盘上某一个键的时候,主机屏幕显示闭合键的键名,按下小键盘“R”键之后停止演示。二完成任务的方法或方案简介本程序显示数字0到9,刚刚开头提出两中解决方案一是用跳转法直接显示数值,二是用查找法间接显示数值,本程序是用第一种方案,虽然程序多了些,但直观容易理解,故接受第一种方案。DISPLAY函数用来将BUFFER中的键值显示在数码管上。设定A口方式0输出,B口方式0输入。GETINPUT函数通过行值和列值查出输入的键值,并将它保存在AL中,如果输入是R,则AL赋值为FFH;如果输入非法字符,则AL赋值为0AH。设定如果是R则退出程序.CHANGE函数用来转变BUFFER中

3、保存的键值,将BUFFER中的键值移位,最后一位加入AL中的新键值。CLOSEALL此函数用在退出程序时将数码管关闭.以上是主题函数,在设计过程中还遇到了一些细节问题,例数码管的显示才用延迟20MS的方法解决,简略方案在DISPLAY函数中。三实现系统1、程序框图:预置:A口为方式0输出 B口为方式0输入0 PA7-PA0PB2-PB0 AHAH=7?延时20ms预置:B口为方式0输出A口为方式0输入列值 PB2-PB0PA7-PA0 AL根据AX内容,查找键值表,显示相应的键值。是R?结束演示2、实验电路图:3、8255方式选择掌握字 1 D6 D5 D4 D3 D2 D1 D0C下半口 I

4、O:1=输入0输出 A组方式:00方式001方式11X方式2方式选择控制字标志B口IO:1输入0输出B组方式:0方式01方式1C上半口IO:1输入0输出A口 IO1输入0输出4、源程序:TITLE LITTLEKEYBOARDSSEG SEGMENT PARA STACK STACK DB 256 DUP (0)SSEG ENDSDSEG SEGMENT A_8255 EQU 210HB_8255 EQU 211HCON_8255 EQU 213HBUFFER DB 6 DUP(0)HANG DB ?LIE DB ?NEWHANG DB ?NEWLIE DB ? TABLE DB 3FH,06

5、H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,DSEG ENDSCSEG SEGMENT ASSUME CS:CSEG, DS:DSEG,SS:SSEG START PROC NEAR MOV AX,DSEG MOV DS,AXCALL CLOSEALL(关掉数码管,防止由于最初数码管有显示而使程序执行不正常。)CMPAGAIN: CALL DISPLAY(DISPLAY函数用来将BUFFER中的键值显示在数码管上。)MOV DX,CON_8255MOV AL,10000010BOUT DX,AL (设定A口方式0输出,B口方式0输入)AGAIN: CALL DISPLA

6、Y MOV DX,A_8255 MOV AL,0 OUT DX,AL (0PA7-PA0) MOV DX,B_8255 IN AL,DXAND AL,00000111B (取出PB0PB2CMP AL,00000111B JE AGAIN MOV LIE,AL(将列值保存) CALL DELAY1(延时20ms) MOV DX,CON_8255MOV AL,10010000BOUT DX,AL(预置A口方式0输入,B口方式0输入) MOV DX,A_8255 IN AL,DX MOV HANG,AL(将行值保存)CALL GETINPUT(GETINPUT函数通过行值和列值查出输入的键值,并将

7、它保存在AL中,如果输入是R,则AL赋值为FFH;如果输入非法字符,则AL赋值为0AH。) CMP AL,0AHJE CMPAGAIN(如果是非法字符则跳回) CMP AL,0FFHJNE CONTINUE(如果是R则退出程序.) CALL CLOSEALL MOV AH,4CH INT 21HCONTINUE:CALL CHANGE(CHANGE函数用来转变BUFFER中保存的键值) MOV DX,CON_8255MOV AL,10000010BOUT DX,AL (设定A口方式0输出,B口方式0输入)LLL:CALL DISPLAYMOV DX,B_8255IN AL,DXAND AL,0

8、0000111B (取出PB0PB2)CMP AL,00000111BJNE LLLJMP CMPAGAIN(不断扫描,如果不松开按键,那么就循环等待;直到按键松开就跳回。) RETSTART ENDP;*(此函数用以延时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 AXRETDELAY1 ENDP;*(GETINPUT函数通过行值和列值查出输入的键值,并将它保存在AL中,如果输入是R,则AL赋值为FFH;如果输入非法字符,则AL赋

9、值为0AH。)GETINPUT PROC NEAR CMP LIE,00000110B JE LIE0 CMP LIE,00000101B JE LIE1 CMP LIE,00000011B JE LIE2 MOV AL,0AH RETLIE2:CMP HANG,00010000B JE NEXT MOV AL,0AH RETNEXT:MOV AL,0FFH RETLIE0:CMP HANG,B JE KEY8 CMP HANG,B JE KEY9 MOV AL,0AH RETKEY8:MOV AL,8 RETKEY9:MOV AL,9 RETLIE1:CMP HANG,B JE KEY0 C

10、MP HANG,B JE KEY1 CMP HANG,B JE KEY2 CMP HANG,B JE KEY3 CMP HANG,B JE KEY4 CMP HANG,B JE KEY5CMP HANG,B JE KEY6 CMP HANG,B JE KEY7 MOV AL,0AH RETKEY0:MOV AL,0 RETKEY1:MOV AL,1 RETKEY2:MOV AL,2 RETKEY3:MOV AL,3 RETKEY4:MOV AL,4 RETKEY5:MOV AL,5 RETKEY6:MOV AL,6 RETKEY7:MOV AL,7 RETGETINPUT ENDP;*(CHA

11、NGE函数用来转变BUFFER中保存的键值,将BUFFER中的键值移位,最后一位加入AL中的新键值。)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+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 AXRETCHANGE ENDP;*(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,1XUNHUAN: MOV AL,SI XLAT MOV DX,201H OUT DX,AL MOV DX,200H MOV AL,CL OUT DX,AL MOV DX,200H MOV AL,0 OUT DX,AL INC SI SHL CL,1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号