小键盘按键识别(微机原理课程设计)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理与接口技术课程设计报告
专业: _____________________________
班级: ____________________________
姓名: ____________________________
学号: ____________________________
小键盘按键识别
课题任务与要求
实验箱上有一个24 键小键盘,出厂时按键接点已经按图所示连接。小键盘有8根横向引出线。实验前将8根横向引出线与PALPA7相连,3根纵向引出线与PBA PB2相连,再从“I/O 口地址译码器”选择一个译码器输出连接到8255的片选端,做好上述连接之后,就构成了以8255 为核心的键盘输入电路要求:
在实际的自动控制系统中,键盘输入电路的作用是输入数据(0〜9, A〜
F)或者输入控制信号(G, M P, R, W X, Y, S)。实现上述功能的核心程序是
“按键识别”。
本实验要求设计按键识别程序, 当按下小键盘上某一个键的时候, 主机屏幕显示闭合键的键名,按下小键盘“ R'键之后停止演示。
二.完成任务的方法或方案简介
本程序显示数字0 到9,刚刚开始提出两中解决方案一是用跳转法直接显示数值,二是用查找法间接显示数值, 本程序是用第一种方案, 虽然程序多了些,但直观容易理解, 故采纳第一种方案。
DISPLA 丫函数用来将BUFFER中的键值显示在数码管上。
设定A 口方式0输出,B 口方式0输入。
GETINPUT函数通过行值和列值查出输入的键值,并将它保存在AL中,如果输入是
R,则AL赋值为FFH如果输入非法字符,则AL赋值为0AH
设定如果是R则退出程序•
CHANG函数用来改变BUFFER中保存的键值,将BUFFER中的键值移位,最后一位加入AL 中的新键值。
CLOSEAL此函数用在退出程序时将数码管关闭•
以上是主题函数,在设计过程中还碰到了一些细节问题,例数码管的显示才用延迟20MS的
办法解决,具体方案在DISPLA 丫函数中。
.实现系统
1、程序框图:
2、实验电路图:
£
~i^~£ Al 跟代:A DO p飢
D】PAI
D】p
尤
P3PAS
D4PA4
td PA5
拥MS
wc
ST
KR
PK
PB
]
PB2
Al PB3
・KAN」HD
CE
PK
PBJ
pa
PCI
PC i
PC6
PC7
W1
4
21
25
R
:
Q L
〔E
1 ¥
m
id
1DK
器
1DK
Ki
1宣
IP
14
u
迴
F
n
io
U1
7.
J35
y 14J4LEE 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
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,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 (取出PB0-PB2
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 HANG,AL (将行值保存)
CALL GETINPUT
R, 则(GETINPUT函数通过行值和列值查出输入的键值,并将它保存在AL中,如果输入是
AL赋值为FFH如果输入非法字符,则AL赋值为0AH)
CMP AL,0AH
JE CMPAGAIN
(如果是非法字符则跳回)
CMP AL,0FFH
JNE CONTINUE
(如果是R则退出程序.)