6.4 可编程键盘/显示器接口——Intel 8279Intel 8279是一种可编程键盘/显示器接口芯片,它含有键盘输入和显示器输出两种功能。
键盘输入时,它提供自动扫描,能与按键或传感器组成的矩阵相连,接收输入信息,它能自动消除开关抖动并能对多键同时按下提供保护。
显示输出时,它有一个16×8位显示RAM,其内容通过自动扫描,可由8位或16位LED数码管显示。
1.8279的内部结构和工作原理8279的内部结构框图如图6.28所示。
下面分别介绍电路各部分的工作原理。
1) I/O控制及数据缓冲器数据缓冲器是双向缓冲器,连接内外总线,用于传送CPU和8279之间的命令或数据,对应的引脚为数据总线D0~D7。
I/O控制线是CPU对8279进行控制的引线,对应的引脚为数据选择线A0、片选线、读/写信号线和。
2) 控制与定时寄存器及定时控制控制与定时寄存器用来寄存键盘及显示工作方式控制字,同时还用来寄存其它操作方式控制字。
这些寄存器接收并锁存各种命令,再通过译码电路产生相应的信号,从而完成相应的控制功能。
与其对应的引脚为时钟输入端CLK及复位端RESET。
定时控制电路由N个基本计数器组成,其中,第一个计数器是一个可编程的N级计数器,N为2~31之间的数。
定时控制经软件编程,将外部时钟CLK分频,得到内部所需的100 kHz 时钟,为键盘提供适当的扫描频率和显示扫描时间。
与其相关的引脚是显示熄灭控制端。
3) 扫描计数器扫描计数器由键盘和显示器共用,为它们提供扫描信号。
扫描计数器有两种工作方式:编码方式和译码方式。
按编码方式工作时,计数器作二进制计数,4位计数状态从扫描线SL0~SL3输出,经外部译码器译码后,为键盘和显示器提供扫描信号。
按译码方式工作时,扫描计数器的最低两位被译码后,从SL0~SL3输出,提供了4选1的扫描译码。
与其相关的引脚是扫描线SL0~SL3。
4) 回复缓冲器、键盘去抖及控制在键盘工作方式下,回复线作为行列式键盘的列输入线,相应的列输入信号称为回复信号,由回复缓冲器缓冲并锁存。
在逐行列扫描时,回复线用来搜寻每一行列中闭合的键,当某一键闭合时,去抖电路被置位,延时等待10 ms后,再检查该键是否仍处在闭合状态。
如不闭合,则当作干扰信号不予理睬;如闭合,则将该键的地址和附加的移位、控制状态等键盘数据送入8279内部的FIFO(先进先出)存储器。
键盘数据格式如下:控制和移位(D6、D7)的状态由两个独立的附加开关决定,而扫描(D5、D4、D3)和回复(D2、D1、D0)则是被按键置位的数据。
D5、D4、D3来自扫描计数器,它们是根据回复信号而确定的行/列编码。
在传感器矩阵方式下,回复线的内容直接被送往相应的传感器RAM(即FIFO存储器)。
在选通输入方式工作时,回复线的内容在CNTL/STB线的脉冲上升沿被送入FIFO存储器。
与其相关的引脚是回复线RL0 RL7,控制/选通线CNTL/STB。
5) FIFO/传感器RAM及其状态寄存器FIFO/传感器RAM是一个双重功能的8×8 RAM。
在键盘选通工作方式下,它是FIFO 存储器,其输入/输出遵循先入先出的原则。
此时,FIFO状态寄存器用来存放FIFO的工作状态,如RAM是满还是空,其中存有多少数据,操作是否出错等。
当FIFO存储器中有数据时,状态逻辑将产生IRQ=1信号,向CPU申请中断。
在传感器矩阵方式下,这个存储器用作传感器存储器,它存放着传感器矩阵中的每一个传感器状态。
在此方式下,若检测出传感器有变化,IRQ信号就变为高电平,向CPU申请中断。
与其相关的引脚是中断请求线IRQ。
6) 显示RAM和显示寄存器显示RAM用来存储显示数据,容量为16×8位。
在显示过程中,显示RAM存储的显示数据轮流从显示寄存器输出。
显示寄存器分为A、B两组,OUTA0~OUTA3和OUTB0~OUTB3。
它们既可单独送数,也可组成一个8位(A组为高4位,B组为低4位)的字。
显示寄存器的输出与显示扫描配合,不断从显示RAM中读出显示数据;同时轮流驱动被选中的显示器件,以达到多路复用的目的,使显示器件呈稳定显示状态。
与其相关的引脚是数据显示线OUTA0~OUTA3和OUTB0~OUTB3。
显示地址寄存器用来寄存由CPU进行读/写显示的RAM地址,它可以由命令设定,也可以设置成每次读出或写入后自动递增。
2.8279的引脚和功能8279采用40引脚双列直插封装,其引脚排列及功能分别如图6.29(a)、(b)所示。
8279的引脚功能如下:D0~D7:数据总线,双向三态总线。
CLK:系统时钟输入端。
RESET:系统复位输入端,高电平有效。
复位状态为:16个字符显示;编码扫描键盘,双键锁定;程序时钟编程为31。
:片选输入端,低电平有效。
A0:数据选择输入端。
A0=1时,CPU写入的数据为命令字,读出的为状态字;A0=0时,CPU读、写的均为数据。
、:读、写信号输入端,低电平有效。
IRQ:中断请求输出端,高电平有效。
SL0~SL3:扫描输出端,用于扫描键盘和显示器。
可编程设定为编码(4选1)或译码输出(16选1)。
RL0~RL7:回复线,它们是键盘或传感器的列信号输入端。
SHIFT:移位信号输入端,高电平有效。
它是8279键盘数据的次高位(D6),通常用作键盘上、下挡功能键。
在传感器和选通方式下,SHIFT无效。
CNTL/STB:控制/选通输入端,高电平有效。
在键盘工作方式下,它是键盘数据的最高位,通常用作控制键。
在选通输入方式下,它的上升沿可把来自RL0 RL7的数据存入FIFO/传感器RAM中。
在传感器方式下,它无效。
OUTA0~OUTA3:A组显示信号输出端。
OUTB0~OUTB3:B组显示信号输出端。
:显示熄灭输出端,低电平有效。
它在数字切换显示或使用熄灭命令时关显示。
3. 8279的工作方式8279工作方式的确定是通过CPU对8279送入命令字来实现的。
当数据选择端A0置1时,CPU对8279写入的数据为命令字,读出的数据为状态字。
在叙述命令字、状态字前,先说明8279的几种工作方式。
1) 键盘工作方式通过对键盘/显示方式命令字的设置,可置8279为双键互锁方式和N键巡回方式。
双键互锁是为两键同时按下提供的保护方法。
若有两键或多个键同时按下,则无论这些键是以什么次序按下的,它只识别最后一个释放的键,并把该键值送入FIFO/传感器RAM中。
N键巡回是为N个键同时按下时提供的保护方法。
若有多个键同时按下,则键盘扫描时可按按键先后顺序依次将键值送入FIFO/传感器RAM中。
2) 显示器工作方式通过对键盘/显示方式命令字和写显示RAM命令字的设置,可将显示数据写入显示缓冲器的方式置为左端送入和右端送入两种方式。
左端送入为依次填入方式,右端送入为移位方式。
3) 传感器矩阵方式通过对读FIFO/传感器RAM命令字的设置可将8279设置成传感器矩阵方式,此时,传感器的开关状态直接送到传感器RAM中。
CPU对传感器阵列扫描时,如果检测到某个传感器状态发生了变化,则使中断申请信号IRQ变为高电平。
如果AI(D4)=0,则对传感器RAM 的第一次读操作即清除IRQ;如果AI(D4)=1,则由中断结束命令清除IRQ。
4. 8279的命令格式和命令字A0=18279共有8条命令,其格式及功能如下所述。
1) 键盘/显示方式设置命令字键盘/显示方式设置命令字的命令格式如下:其中:D7 D6 D5为000,是方式设置命令特征位。
DD(D4 D3):设定显示方式。
其定义如下:00:8个字符显示,左边输入01:16个字符显示,左边输入10:8个字符显示,右边输入11:16个字符显示,右边输入KKK(D2 D1 D0):可设定7种键盘、显示工作方式,其定义如下:000:编码扫描键盘,双键锁定001:译码扫描键盘,双键锁定010:编码扫描键盘,N键轮回011:译码扫描键盘,N键轮回100:编码扫描传感器矩阵101:译码扫描传感器矩阵110:选通输入,编码显示扫描111:选通输入,译码显示扫描2) 时钟编程命令时钟编程命令的命令格式如下:其中:D7 D6 D5为001,是时钟编程命令特征位。
PPPPP(D4 D3 D2 D1 D0):设定对CLK输入端输入的外部时钟信号进行分频的分频数N,用以产生100 kHz的内部时钟,N的取值为2~31。
若CLK输入的时钟频率为2 MHz,则N=20,PPPPP=10100B。
3) 读FIFO/传感器RAM命令读FIFO/传感器RAM命令的命令格式如下:其中:D7 D6 D5为010,是读FIFO/传感器RAM命令特征位。
AI(D4)为自动加1标志。
AAA(D2 D1 D0)为FIFO/传感器RAM地址。
键扫描方式下,数据按先进先出的原则读出,与AI、AAA无关,D0~D4可为任意值。
此时,该命令字可设为40H。
在传感器或选通输入方式下,AAA为RAM地址。
当AI=0时,每次读完传感器RAM的数据后地址不变;当AI=1时,每次读完传感器RAM的数据后地址自动加1。
这样,下一个数据便从下一个地址读出,不必重新设置读FIFO/传感器RAM 命令。
4) 读显示RAM命令读显示RAM命令的命令格式如下:其中:D7 D6 D5为011,是读显示RAM命令特征位。
AI(D4)为自动加1标志,AI=1时,每次读数后地址自动加1。
AAAA(D3 D2 D1 D0)为显示RAM中的存储单元地址。
5) 写显示RAM命令写显示RAM命令的命令格式如下:其中:D7 D6 D5为100,是写显示RAM命令特征位。
AI(D4)为自动加1标志,AI=1时,每次写入数据后地址自动加1。
AAAA(D3 D2 D1 D0)为将要写入的显示RAM中的存储单元地址。
CPU将显示数据写入显示RAM时必须先设置键盘/显示方式设置命令字。
若选择8个显示器并从左端输入,则键盘应设为双键锁定的编码键盘方式,即设置键盘/显示方式设置命令字为00H。
如每次写入数据后自动加1,且从0地址开始写入,则应设置写显示RAM 命令字为90H。
如要输入10个字符,则其输入过程如表6.8所示(依次填入方式)。
如将上述键盘/显示方式设置命令字设置为10H,则可实现从右端输入。
其输入过程如表6.9所示(移位方式)。
6) 显示禁止写入/消隐命令显示禁止写入/消隐命令的命令格式如下:其中:D7 D6 D5为101,是显示禁止写入/熄灭命令的特征位。
IWA、IWB(D3、D2)为A、B组显示RAM写入屏蔽位。
因为显示寄存器分成A、B两组,可以单独送数,所以用两位分别屏蔽。
当IWA=1时,A组显示RAM禁止写入,此时,从CPU写入显示器RAM的数据不影响A组显示器的显示,这种情况通常用于双4位显示器。