键盘的工作原理
键盘的基本工作原理就是实时监视按键,将按键信息送入计算机。在键盘的内部设计中有定位按键位置的键位扫描电路、产生被按下键代码的编码电路以及将产生代码送入计算机的接口电路等等,这些电路被统称为键盘控制电路。根据键盘工作原理,可以把计算机键盘分为编码键盘和非编码键盘。键盘控制电路的功能完全依靠硬件来自动完成的,这种键盘称为编码键盘,它能自动将按下键的编码信息送入计算机。另外一种键盘,它的键盘控制电路功能要依靠硬件和软件共同完成,这种键盘称为非编码键盘。这种键盘响应速度不如编码键盘快,但它可通过软件为键盘的某些按键重新定义,为扩充键盘的功能提供了极大的方便,从而得到了广泛应用。
逐行扫描法
由程序对键盘进行逐行扫描,通过检测到的列输出状态来确定闭合键。
需要设置输入口、输出口各一个。
行列扫描法
通过行列颠倒扫描来识别闭合键。在扫描每一行时,读列线;然后依次向列线扫描输出,读行线。
需要提供两个可编程的双向输入/输出端口。
假定有一个3×4的矩阵键盘通过并行接口芯片8255A与微机相连。8255A的A口定义为输出口,与键盘行线相连;B口定义为输入口,与键盘列线相连。设8255A A口地址为40H,B口地址为41H,控制寄存器地址为43H。
MOV AL,82H
OUT 43H,AL
BEGIN:MOV AL,0
OUT 40H,AL
WAIT : IN AL,41H
AND AL,0FH
CMP AL,0FH
JZ WAIT
MOV CX,7FFH
L0: LOOP L0
ST: MOV BL,3
MOV BH,4
MOV AL,0FEH
MOV CL,0FH
MOV CH,0FFH
L1: OUT 40H,AL
ROL AL
MOV AH,AL
IN AL,41H
AND AL,CL
CMP AL,CL
JNZ L2
ADD CH,BH
MOV AL,AH
DEC BL
JNZ L1
JMP BEGIN
L2: INC CH
RCR AL
JC L2
MOV AL,CH
JMP KEYTABLE
图12-1 非编码键盘接口硬件框图