1、6.4 可编程键盘/显示器接口——Intel 8279 Intel 8279是一种可编程键盘/显示器接口芯片,它含有键盘输入和显示器输出两种功能。键盘输入时,它提供自动扫描,能与按键或传感器组成的矩阵相连,接收输入信息,它能自动消除开关抖动并能对多键同时按下提供保护。显示输出时,它有一个16×8位显示RAM,其内容通过自动扫描,可由8位或16位LED数码管显示。 1.8279的内部结构和工作原理 8279的内部结构框图如图6.28所示。下面分别介绍电路各部分的工作原理。 1) I/O控制及数据缓冲器 数据缓冲器是双向缓冲器,连接内外总线,用于传送CPU和82
2、79之间的命令或数据,对应的引脚为数据总线D0~D7。 I/O控制线是CPU对8279进行控制的引线,对应的引脚为数据选择线A0、片选线、读/写信号线 和 。 2) 控制与定时寄存器及定时控制 控制与定时寄存器用来寄存键盘及显示工作方式控制字,同时还用来寄存其它操作方式控制字。这些寄存器接收并锁存各种命令,再通过译码电路产生相应的信号,从而完成相应的控制功能。与其对应的引脚为时钟输入端CLK及复位端RESET。 定时控制电路由N个基本计数器组成,其中,第一个计数器是一个可编程的N级计数器,N为2~31之间的数。定时控制经软件编程,将外部时钟CLK分频,得到内部所需的10
3、0 kHz时钟,为键盘提供适当的扫描频率和显示扫描时间。与其相关的引脚是显示熄灭控制端 。 3) 扫描计数器 扫描计数器由键盘和显示器共用,为它们提供扫描信号。扫描计数器有两种工作方式:编码方式和译码方式。按编码方式工作时,计数器作二进制计数,4位计数状态从扫描线SL0~SL3输出,经外部译码器译码后,为键盘和显示器提供扫描信号。按译码方式工作时,扫描计数器的最低两位被译码后,从SL0~SL3输出,提供了4选1的扫描译码。与其相关的引脚是扫描线SL0~SL3。 4) 回复缓冲器、键盘去抖及控制 在键盘工作方式下,回复线作为行列式键盘的列输入线,相应的列输入信号称为回复信号
4、由回复缓冲器缓冲并锁存。在逐行列扫描时,回复线用来搜寻每一行列中闭合的键,当某一键闭合时,去抖电路被置位,延时等待10 ms后,再检查该键是否仍处在闭合状态。如不闭合,则当作干扰信号不予理睬;如闭合,则将该键的地址和附加的移位、控制状态等键盘数据送入8279内部的FIFO(先进先出)存储器。键盘数据格式如下: 控制和移位(D6、D7)的状态由两个独立的附加开关决定,而扫描(D5、D4、D3)和回复(D2、D1、D0)则是被按键置位的数据。D5、D4、D3来自扫描计数器,它们是根据回复信号而确定的行/列编码。 在传感器矩阵方式下,回复线的内容直接被送往相应的传感器RAM(即FIFO
5、存储器)。在选通输入方式工作时,回复线的内容在CNTL/STB线的脉冲上升沿被送入FIFO存储器。 与其相关的引脚是回复线RL0~RL7,控制/选通线CNTL/STB。 5) FIFO/传感器RAM及其状态寄存器 FIFO/传感器RAM是一个双重功能的8×8 RAM。在键盘选通工作方式下,它是FIFO存储器,其输入/输出遵循先入先出的原则。此时,FIFO状态寄存器用来存放FIFO的工作状态,如RAM是满还是空,其中存有多少数据,操作是否出错等。当FIFO存储器中有数据时,状态逻辑将产生IRQ=1信号,向CPU申请中断。 在传感器矩阵方式下,这个存储器用作传感器存储器,它存
6、放着传感器矩阵中的每一个传感器状态。在此方式下,若检测出传感器有变化,IRQ信号就变为高电平,向CPU申请中断。 与其相关的引脚是中断请求线IRQ。 6) 显示RAM和显示寄存器 显示RAM用来存储显示数据,容量为16×8位。在显示过程中,显示RAM存储的显示数据轮流从显示寄存器输出。显示寄存器分为A、B两组,OUTA0~OUTA3和OUTB0~OUTB3。它们既可单独送数,也可组成一个8位(A组为高4位,B组为低4位)的字。显示寄存器的输出与显示扫描配合,不断从显示RAM中读出显示数据;同时轮流驱动被选中的显示器件,以达到多路复用的目的,使显示器件呈稳定显示状态。 与其相
7、关的引脚是数据显示线OUTA0~OUTA3和OUTB0~OUTB3。 显示地址寄存器用来寄存由CPU进行读/写显示的RAM地址,它可以由命令设定,也可以设置成每次读出或写入后自动递增。 2.8279的引脚和功能 8279采用40引脚双列直插封装,其引脚排列及功能分别如图6.29(a)、(b)所示。 8279的引脚功能如下: D0~D7:数据总线,双向三态总线。 CLK:系统时钟输入端。 RESET:系统复位输入端,高电平有效。复位状态为:16个字符显示;编码扫描键盘,双键锁定;程序时钟编程为31。 :片选输入端,低电平有效。 A0:数据选择
8、输入端。A0=1时,CPU写入的数据为命令字,读出的为状态字;A0=0时,CPU读、写的均为数据。 、 :读、写信号输入端,低电平有效。 IRQ:中断请求输出端,高电平有效。 SL0~SL3:扫描输出端,用于扫描键盘和显示器。可编程设定为编码(4选1)或译码输出(16选1)。 RL0~RL7:回复线,它们是键盘或传感器的列信号输入端。 SHIFT:移位信号输入端,高电平有效。它是8279键盘数据的次高位(D6),通常用作键盘上、下挡功能键。在传感器和选通方式下,SHIFT无效。 CNTL/STB:控制/选通输入端,高电平有效。在键盘工作方式下,它是键盘数据
9、的最高位,通常用作控制键。在选通输入方式下,它的上升沿可把来自RL0~RL7的数据存入FIFO/传感器RAM中。在传感器方式下,它无效。 OUTA0~OUTA3:A组显示信号输出端。 OUTB0~OUTB3:B组显示信号输出端。 :显示熄灭输出端,低电平有效。它在数字切换显示或使用熄灭命令时关显示。 3. 8279的工作方式 8279工作方式的确定是通过CPU对8279送入命令字来实现的。当数据选择端A0置1时,CPU对8279写入的数据为命令字,读出的数据为状态字。在叙述命令字、状态字前,先说明8279的几种工作方式。 1) 键盘工作方式 通
10、过对键盘/显示方式命令字的设置,可置8279为双键互锁方式和N键巡回方式。 双键互锁是为两键同时按下提供的保护方法。若有两键或多个键同时按下,则无论这些键是以什么次序按下的,它只识别最后一个释放的键,并把该键值送入FIFO/传感器 RAM中。 N键巡回是为N个键同时按下时提供的保护方法。若有多个键同时按下,则键盘扫描时可按按键先后顺序依次将键值送入FIFO/传感器RAM中。 2) 显示器工作方式 通过对键盘/显示方式命令字和写显示RAM命令字的设置,可将显示数据写入显示缓冲器的方式置为左端送入和右端送入两种方式。左端送入为依次填入方式,右端送入为移位方式。 3) 传感器
11、矩阵方式 通过对读FIFO/传感器RAM命令字的设置可将8279设置成传感器矩阵方式,此时,传感器的开关状态直接送到传感器RAM中。CPU对传感器阵列扫描时,如果检测到某个传感器状态发生了变化,则使中断申请信号IRQ变为高电平。如果AI(D4)=0,则对传感器RAM的第一次读操作即清除IRQ;如果AI(D4)=1,则由中断结束命令清除IRQ。 4. 8279的命令格式和命令字 A0=1 8279共有8条命令,其格式及功能如下所述。 1) 键盘/显示方式设置命令字 键盘/显示方式设置命令字的命令格式如下: 其中: D7 D6 D5为000,是方式设置
12、命令特征位。 DD(D4 D3):设定显示方式。其定义如下: 00:8个字符显示,左边输入 01:16个字符显示,左边输入 10:8个字符显示,右边输入 11:16个字符显示,右边输入 KKK(D2 D1 D0):可设定7种键盘、显示工作方式,其定义如下: 000:编码扫描键盘,双键锁定 001:译码扫描键盘,双键锁定 010:编码扫描键盘,N键轮回 011:译码扫描键盘,N键轮回 100:编码扫描传感器矩阵 101:译码扫描传感器矩阵
13、 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
14、是读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为01
15、1,是读显示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个显示器并从左端输入,则键盘应设为双键锁
16、定的编码键盘方式,即设置键盘/显示方式设置命令字为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两组,可以单独送数,所以用两
17、位分别屏蔽。当IWA=1时,A组显示RAM禁止写入,此时,从CPU写入显示器RAM的数据不影响A组显示器的显示,这种情况通常用于双4位显示器。IWB的用法与IWA相同,可屏蔽B组显示器。 BLA、BLB(D1、D0)为A、B组的消隐设置位。若BLA (或BLB)=1,则对应组的显示输出熄灭;若BLA(或BLB)=0,则对应组恢复显示。 7) 清除命令 清除命令的命令格式如下: 其中: D7 D6 D5为110,是清除命令的特征位。 CDCDCD(D4 D3 D2)用来设定清除显示RAM方式,具体设置如表6.10所示。 CF(D1)用于清除FIFO存储器,若
18、CF=1,则清除FIFO状态,并使中断输出线复位;同时,传感器RAM的读出地址也被清0。 CA(D0)为总清除特征位,兼有CD和CF的联合功能。CF=1时,清除显示器和FIFO的状态。 8) 结束中断/出错方式设置命令 结束中断/出错方式设置命令的命令格式如下: 其中: D7 D6 D5为111,是结束中断/出错方式设置命令的特征位。 E(D4)为1时,N键轮回工作方式下,CPU工作在特殊出错方式(多个键同时按下);传感器矩阵方式下,此命令使IRQ变低,结束中断,并允许对RAM进一步写入。 5. 8279状态格式与状态字 8279的FIFO状态字主要用
19、于键盘和选通工作方式,以指示数据缓冲器FIFO/传感器RAM中的字符数和有错误发生。状态字节的读出地址和命令输入地址相同( =0,A0=1)。状态字节格式如下: 其中: DU(D7)为显示无效特征位,DU=1表示显示无效。当显示RAM在清除显示或全清命令尚未完成时,DU=1,此时对显示RAM操作无效。 S/E(D6)为传感器信号结束/错误特征位,在读FIFO状态字时被读出,在执行CF=1时被复位。在传感器方式下,S/E=1表示至少有一个键闭合;在特殊出错方式下,S/E=1表示有多键同时按下。 O(D5)为FIFO/传感器RAM溢出标志位,若FIFO/传感器RAM填满时再送
20、入数据,则该位置1。 U(D4)为FIFO/传感器RAM空标志位,当FIFO/传感器RAM中无数据时,如CPU读FIFO/传感器RAM,则该位置1。 F(D3)为FIFO/传感器RAM满标志位,F=1表示FIFO/传感器RAM中已满。 NNN(D2 D1 D0)表示FIFO/传感器RAM中的字符个数,即数据个数。 6.8279的数据输入/输出 A=0 对8279输入数据(如显示数据、键输入数据、传感器矩阵数据等)时,要选择数据输入/输出口地址。8279的数据输入/输出口地址由 /cs =0、A=0确定。 在键盘扫描方式下,8279中的键输入数据按下列格式存放:
21、 其中,CNTL(D7)为控制键CNTL的状态位。CNTL为单独按键,可与其它键连用,构成特殊命令。 SHIFT(D6)为控制键SHIFT的状态位。SHIFT为单独按键,用作按键上、下挡控制。 行号(D5 D4 D3)为按下键所在的行号,由RL0~RL7的状态确定。 列号(D2 D1 D0)为按下键所在的列号,由SL0~SL2的状态确定。 7.8279的内部译码与外部译码 在键盘、显示器工作方式下,SL0~SL3为键盘的列扫描线和动态显示的位选线。 当选择内部译码(键盘显示方式设置命令字的D0=1)时,SL0~SL3每一时刻只有一位为低电平输出,此时,8279只
22、能外接4位显示器和4×8键盘。 当选择外部译码(键盘显示方式设置命令字的D0=0)时,SL0~SL3以计数分频式波形输出。此时,若外接4-16译码器,则译码器的16个输出可作为外接16位显示器的位信号;若外接3-8译码器,则译码器的8个输出与RL0~RL7配合,可构成8×8键盘(键输入数据格式中只有SL0~SL2确定的8个状态有效有效)。 8.8279与单片机、键盘/显示器的接口 8279是一种功能较强的键盘/显示器接口电路,可直接与Intel公司的各个系列的单片机接口,可以外接多种规格的键盘和显示器。图6.30是8051与8279的一般接口框图。图中,8279外接8×8键盘、1
23、6位显示器,由SL0~SL2译出键扫描线,由4-16译码器对SL0~SL3译出显示器的位扫描线。在实际应用中,键盘的大小和显示器的位数可以根据具体需要而定。 9.8279的应用 利用键盘/显示器专用接口芯片8279能够以较简单的硬件电路和较少的软件开销实现单片机与键盘、LED显示器的接口。图6.31便是8279的一种具体应用。 如采用图6.31所示的电路实现本书10.1节的功能,则要修改软件设计。采用8279与8051接口,在CPU对8279进行初始化后,只需向8279传输待显示数据(送数)即可。而且在8279将键盘中断申请发出后,取键盘数据识别按键(取数),即可实现按键识别和动态显示。至于要花费CPU大量时间的键盘扫描程序和动态显示程序,全由8279硬件自动完成。CPU再也不必像本书10.2节那样不断调用动态显示子程序,不断查询是否有按键按下,这就大大提高了CPU的工作效率。






