8279键盘与8085微处理器接口


在这里,我们将了解如何使用8279芯片将矩阵键盘与8085微处理器连接。该芯片可以用于键盘/显示器接口模式或作为锁存输入端口。但通常,它用作键盘接口。

键盘接口方案也可以分为两种模式。这些模式是:

  • 译码工作模式

  • 编码工作模式

译码工作模式

在这种模式下,矩阵键盘只能有四行。这四行可以使用SL3-0选择线进行选择。有八列。可以使用RL7-0选择这八列线。因此,共有4 * 8 = 32个按键。在每一行和每一列的交点处,都有一个按键。还有另外两个按键。这些按键是Shift键和Ctrl键,这两个按键不属于矩阵的一部分。按键结构如下:

在译码模式下,8279通过一次使每一行的逻辑电平为0来扫描按键,然后读取每一列。下表显示了8279为扫描键盘而显示的SL3-0模式。

SL3-0
正在扫描的行
1110
行0
1101
行1
1011
行2
0111
行3


让我们来看一个键盘扫描机制的例子。假设当前它正在通过发送选择线值0111来扫描行3,并且从RL7-0接收到的信息为10111111。这表示RL6的逻辑电平为0。因此,对于此数据,FIFO RAM将如下加载。



指示行3
指示列6
Ctrl
Shift
0
1
1
1
1
0


LS的3位指示列号(此处110表示列6),接下来的3位指示行号(此处011表示行3)。由于键盘有四行,因此2位就足够了,但是行选择有三位(一位额外位)。

当Ctrl和Shift按钮没有按下时,这两个字段将保持为1。扫描键盘按键后,8279会激活IRQ。该IRQ连接到8085的中断请求引脚。当处理器读取FIFO RAM时,IRQ引脚变为0。当处理器处于中断禁用状态时,按键内容存储到FIFO RAM中。如果此时按下另一个按键,则该信息将在FIFO RAM中作为队列结构添加到上一个按键信息之后。

状态寄存器

状态寄存器保存有关FIFO RAM的重要信息。该寄存器的结构如下所示。

Du
S/E
O
U
F
N
N
N

最后三位用于表示FIFO RAM中存在的字符数。它从000开始,每次递增1。当通过使IRQ引脚有效发送一个按键数据并且处理器正在读取FIFO RAM的内容时,这些值将递减1。

当处理器的中断被禁用,并且用户按下七个按键时,最后三位的值将为111。因此,如果再按下另一个按键,F标志将设置为1,三位将变为000。此标志将指示FIFO RAM已满。现在,如果FIFO RAM已满时再按下另一个按键,它将覆盖FIFO RAM的最后一个字符。它将生成溢出错误。它将设置O标志。此O标志指示溢出错误。类似地,当F标志为0,最后三位也为000时,表示FIFO RAM未满并且也没有要读取的字符。在这种情况下,如果处理器尝试读取FIFO RAM,它将通过使U标志有效来生成下溢错误。

编码工作模式

在译码模式下,只有四行。在大多数情况下,8279用于编码工作模式。在这种模式下,我们可以设置八行和八列来连接64个按键。与译码模式一样,它也具有Shift和Ctrl键。因此,将这两个键与64个键相加,共有66个键。

从该图可以看出,使用了一个外部的3:8译码器。SL2-0连接到译码器。SL3未使用。译码器的输出连接到矩阵的八行。下表显示了8279为扫描键盘而显示的SL2-0模式。

SL2-0
正在扫描的行
000
行0
001
行1
010
行2
011
行3
100
行4
101
行5
110
行6
111
行7


让我们来看一个键盘扫描机制的例子。假设当前它正在通过发送选择线值101来扫描行5,并且从RL7-0接收到的信息为10111111。这表示RL6的逻辑电平为0。因此,对于此数据,FIFO RAM将如下加载。



指示行5
指示列6
Ctrl
Shift
1
0
1
1
1
0

LS的3位指示列号(此处110表示列6),接下来的3位指示行号(此处101表示行5)。FIFO RAM中也存在另外两个按键区域。

更新于: 2020年6月27日

2K+浏览量

开启你的职业生涯

通过完成课程获得认证

立即开始
广告