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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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则退出程序.)

相关文档
最新文档