本帖最后由 ahshmj 于 2015-7-31 13:49 编辑
8279键盘、显示接口芯片
序号:6-10
生产厂家:Intel公司
特性:Intel8279芯片是一种通用的可编程序的键盘、显示接口器件,单个芯片就能完成键盘输入和LED
显示控制两种功能。其内部结构如图6-10-1所示。8279包括键盘输入和显示输出两个部分。
键盘部分提供的扫描方式,可以和64个按键或传感器的阵列相连。能自动消除开关抖动以及N个键
同时按下的保护。
显示部分按扫描的方式工作。可以显示8或16位LED显示块。
一、8279电路工作原理
根据结构框图,分别介绍各部分电路工作原理。
1.I/O控制及数据缓冲器
数据缓冲器是双向缓冲器,连接内、外总线,用于传送CPU和8279之间的命令或数据;I/O控制线是
CPU对8279进行控制的引线。CS是8279的片选信号,CS=0时,8279才被允许读出或写入信息。WR、RD为来自
CPU的控制信号。
A0用于区别信息特性:A0=1时,表示数据缓冲器输入为指令、输出为状态字;A=0时,输入、输出皆为数据。
2.控制与定时寄存器及定时控制
控制与定时寄存器用来寄存键盘及显示的工作方式,以及由CPU编程的其它操作方式。这些寄存器一旦接受并锁存送来的命令,就通过译码产生相应的信号,从而完成相应的控制功能。
定时控制包含基本记数键。首级计数器是一个可编程的N级计数器。N可以2~31之间由软件编程,以便
从外界时钟CLK分频得到内部所需要的100KHZ时钟。然后再经过分频为键盘扫描提供适当的逐行扫描频率和显示扫描时间。
3.扫描计数器
扫描计数器有两种工作方式。按编码方式工作时,计数器作二进制记数。4位记数状态从扫描线SL0~SL3
输出,经外部译码器译码后,为键盘和显示器提供扫描线;按译码方式工作时,扫描计数器的最低二位被译码后,从SL0~SL3输出。因此,SL0~SL3提供了4中取1的扫描译码。
4.回复缓冲器、键盘去抖及控制
来自RL0~RL3的8根回复线的回复信号,由回复缓冲器缓冲并锁存。
在键盘工作方式中,回复线作为行列式键盘的行列输入线。在逐行列输入时,在逐行列扫描时,回复线用来搜索每一行列中闭合的键。当某一键闭合时,去抖电路被置位,延时等待10ms后,再检验该键是否继续闭和,并将该键的地址和附加的移位、控制状态一起形成键盘数据被送入8279内部FIFO(先进先出)存储器。键盘数据格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
控制 移位 扫描 回复
控制和移位(D6、D7)的状态由两个独立的附加开关决定,而扫描(D5、D4、D3)和回复(D2、D1、D0)则是被按键置位的数据。D5、D4、D3来自动扫描计数器,是按下键的行列编码,而(D7D7D7)则来自行/列计数器,它们是根据回复信号而确定的行/列编码。
在传感器开关状态矩阵方式中,回复线的内容直接被送往和相应的传感器RAM(即FIFO存储器)。
在选通输入方式中,回复线的内容在CNTL/STB线的脉冲上升沿被送入FIFO存储器。
5.FIFO/传感器及其状态寄存器
FIFO/传感器RAM是一个双重功能的8×8RAM。
在键盘或选通方式工作时,它是FIFO存储器,其输入或读出遵循先入先出的原则。FIFO状态寄存器用于存放FIFO的工作状态。例如,RAM是满还是空;其中存有多少数据;是否操作出错等。当FIFO存储器不空,状态逻辑将产生IRQ=1信号向CPU申请中断。
在传感器矩阵方式工作时,这个存储器以是传感器不是存储器。它存放着传感器矩阵中的每一个传感器状态。在此方式中,若检索出传感器的变化,IRQ信号变为高电平,向CPU申请中断。
6.显示RAM和显示地址寄存器
显示RAM用来存储显示数据。容量为16×8位。在显示过程中,存储的显示数据轮流从显示寄存器输出。显示寄存器分别为A、B两组,OUTA0~3和OUTB0~3可以单独送数,也可以组成一个8位的字。显示寄存器的输出与显示扫描配合,不断从显示RAM中读出显示数据,同时轮流驱动被选中的显示器件,以达到多路复用的目的,使显示器件呈现稳定的显示状态。
显示地址寄存器用来寄存由CPU进行读/写显示RAM的地址,它可以由命令设定,也可以设置成每次读写或写入之后自动递减。
二.管脚、引线与功能
8279采用40引脚封装,其管脚、引线功能如图6-10-2所示。其引脚功能如下:
D0~D7(数据总线):双向、三态总线,和系统数据总线相连;用于CPU和8279间的数据/命令传递。
CLK(系统时钟):输入线,为8279提供内部时钟的输入端。
RESET(复位):输入线,当RESET=1时,8279复位,其复位状态为:
16个字符显示;
编码扫描键盘--双键锁定;
程序时钟编码为31。
CS(片选):输入线,当CS=0时8279被选中,允许CPU对其读、写,否则被禁止。
A0(数据选择):输入线。当A0=1时CPU写入数据为命令字,读出数据为状态字;A0=0时CPU读、写的字节均为数据。
RD、WR(读、写信号):输入线。低电平有效,来自CPU的控制信号,控制8279的读、写操作。
IRQ(中断请求):输出线。高电平有效。
在键盘工作方式中,当FIFO/传感器RAM存有数据时,IRQ为高电平。CPU每次从RAM中读出数据时,IRQ变为低电平。若RAM中仍有数据,则IRQ再次恢复高电平。
在传感器工作方式中,每当检测到传感器状态变化时,IRQ就出现高电平。
SL0~SL3(扫描线):输出线。用来扫描键盘和显示器。它们可以编程设定为编码(4中取1)或译码输出(16取1)。
RL0~RL7(回复线):输入线。它们是键盘矩阵或传感矩阵的列(或行)信号输入线。
SHIFT(移位信号):输入线、高电平有效。该输入信号是键盘数据的最高位(D7),通常用来扩充键开关的功能,作为控制功能键用。
在选通输入方式时,该信号的上升沿可将来自RL0~RL7的数据存入FIFO RAM中。
在传感器输入下,该信号无效。
OUTA0~OUTA3(A组显示信号):输出线。
OUTB0~OUTB3(B组显示信号):输出线。
这两组引线都是显示数据输出线,与多位数字显示的扫描线SL0~SL3同步,两组可以独立使用,也可以合并使用。
BD(显示消隐):输出线。低电平有效。该信号在数字切换显示或使用消隐命令时,将显示消隐。
三、命令格式与命令字
8279的操作方式是通过CPU对8279送入命令时来实现编程的。当数据选择端A0置1时,CPU对8279写入数据为命令字,读出的数据为状态字。
8279共有八条命令。其功能及命令字定义分述如下。
1.键盘/显示方式设置命令字
命令格式:
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 D D K K K
其中:
D7、D6、D5=000方式设置命令特征位。
D D(D4、D3):来设定显示方式,其定义如下:
00:8个字符显示,左入口
00:16个字符显示,左入口
00:8个字符显示,右入口
00:16个字符显示,右入口
所谓左入口,即显示位置从最左一位(最高位)开始,以后逐次输入的显示字符逐个向右顺序排列; 所谓右入口,即显示位置从最右一位(最低位)开始,以后逐次输入的显示字符时,已有的显示字符逐个向左顺序移动。
KKK(D2、 D1、 D0):用来设定七种键盘、显示工作方式:
000 编码扫描键盘,双键锁定
001 译码扫描键盘,双键锁定
010 编码扫描键盘,N键轮回
011 译码扫描键盘,N键轮回
100 编码扫描传感器矩阵
101 译码扫描传感器矩阵
110 选通输入,编码显示扫描
111 选通输入,译码显示扫描
双键锁定与N键轮回是多键按下时的两种不同的保护方式。双键锁定为两键同时按下提供的保护方法。再消颤周期里,如果有两键同时按下,则只有其中一个键弹起,而另一个键保持在按下位置时,才被认可。N键轮回为N键同时按下的保护方法。当有若干键按下时,键盘扫描能够根据发现他们的顺序,依次将它们的状态送入FIFO RAM中。
2.程序时钟命令
命令格式:
D7 D6 D5 D4 D3 D2 D1 D0
0 0 1 P P P P P
其中:
D7、D6、D5=001为时钟命令特征位。
PPPPP( D4、D3、D2、D1、D0)用来设定外部输入CLK端的时钟进行分频的分频数N。N取值为2~31。例如外部时钟频率为2MHZ,PPPPP被置为10100(N=20),则对输入的外部时钟20分频,以获得8279内部要求的100KMZ的基本频率。
3.读FIFO/传感器RAM命令
命令格式:
D7 D6 D5 D4 D3 D2 D1 D0
0 1 0 AI X A A A
其中:
D7D6D5 =010为读FIFO/传感器RAM命令特征位。该命令字只在传感器方式时使用。在CPU读传感器RAM之前,必须使用这条命令来设定传感器RAM中的8个地址(每个地址一个字节)。
AAA(D2、D1、D0)为传感器RAM中的八个字节地址。
AI(D4)为自动增量特征位。当AI=1时,每次读出传感器RAM后地址自动加1使地址指针指向下一个存储单元。这样,下一个数据便从下一个地址读出,而不必重新设置读FIFO/传感器RAM命令。
在键盘工作方式中,由于读出操做严格按照先入先出顺序,因此,不需使用此命令。
4.读显示RAM命令
命令格式:
D7 D6 D5 D4 D3 D2 D1 D0
0 1 1 AI A A A A
其中:
D7D6D5 =011为读显示RAM命令字的特征位。该命令用来设定将要读出的显示RAM地址。
AAAA(D3、D2、D1、D0)用来寻址显示RAM命令字的特征位。由位显示RAM中有16个字节单元故需要4位寻址。
AI(D4)为自动增量特征位。当AI=1时,每次读出后地址自动加1指向下一地址。
5.写显示RAM命令
命令格式:
D7 D6 D5 D4 D3 D2 D1 D0
1 0 0 AI A A A A
其中:
D7D6D5 =100为写显示RAM命令字的特征位。在写显示器RAM之前用该命令用来设定将要写入的显示RAM地址。
AAAA(D3、D2、D1、D0)为将要写入的存储单元地址。
AI(D4)为自动增量特征位。当AI=1时,每次写入后地址自动加1指向下一次写入地址。
6.显示禁止写入/消隐命令特征位
命令格式:
D7 D6 D5 D4 D3 D2 D1 D0
1 0 1 X IW
A IW
B BL
A BL
B
其中:
D7D6D5 =101为显示禁止写入/消隐命令特征位。
IW/A、IW/B(D3、D2)为A、B组显示RAM写入屏蔽位。由于显示寄存器分成A、B两组,可以单独送数,故用两位来分别屏蔽。当A组的屏蔽位D3=1时,A组的显示RAM禁止写入。因此,从CPU写入显示器RAM数据时,不会影响A的显示。这种情况通常在采用双4位显示器时使用。因为两个双四位显示器是相互独立的。为了给其中一个双四位显示器输入数据而又不影响另一个四位显示器,因此必须对另一组的输入实行屏蔽。
BL/A、BL/B(D1、D0)为消隐显示位。用于对两组显示输出消隐。若BL=1时,对应组的显示输出被消隐。当BL=0时,则恢复显示。
7.清除命令
命令格式:
D7 D6 D5 D4 D3 D2 D1 D0
1 1 0 CD CD CD CF CA
其中:
D7D6D5 =110清除命令特征位。
CDCDCD(D4D3D2)用来设定清除显示RAM方式。共有四种消除方式,见表6-10-1。
CF(D1)用来置空FIFO存储器,当=1时,执行清除命令后,FIFO RAM被置空,使中断输出线复位。同时,传感器RAM的读出地址也被置0。
CA(D0)为总清的特征位。它兼有CD和CF的联合效能。在CD=1时,对显示的清除方式由D3、D2的编码决定。
清除显示RAM约需160μS。在此期间FIFO状态时的最高位DU=1,表示显示无效。CPU不能向显示RAM写入数据。
8.结束中断/错误方式设置命令
命令格式:
D7 D6 D5 D4 D3 D2 D1 D0
1 1 1 E × × × ×
其中:
D7D6D5 =111为该命令的特征位。此命令有两种不同的作用。
(1)作为结束中断命令。在传感器工作方式中使用。每当传感器状态出现变化时,扫描检测电路将其状态写入传感器RAM,并启动中断逻辑,使IRQ变高,向CPU请求中断,并且禁止写入传感器RAM。此时,若传感器RAM读出地址的自动递增特征没有置位(AI=0),则中断请求IRQ在CPU第一次从传感器RAM读出数据时就被清除。若自动递增特征已置位(AI=1),则CPU对传感器RAM的读出并不能清除IRQ,而必须通过给8279写入结束中断/错误方式设置命令才能使IRQ变低。因此在传感器工作方式中,此命令用来结束传感器RAM的中断请求。
(2)作为特定错误方式设置命令。在8279已被设定为键盘扫描N键轮回方式以后,如果CPU给8279又写入结束中断/错误方式设置命令(E=1),则8279将以一种特定的错误方式工作。这种方式的特点是:在8279的消颤周期内,如果发现多个按键同时按下,则FIFO状态字中的错误特征位S/E将置1,并产生中断请求信号和阻止写入FIFO RAM。
上述八种用于确定8279操作方式的命令字皆由D7D6D5特征位确定,输入8279后能自动寻址相应的命令寄存器。因此,写入命令字时唯一的要求是使数据选择信号A0=1。
四、状态格式与状态字
8279的FIFO状态字,主要用于键盘和选通工作方式,以指示FIFO RAM中的字符数和有无错误发生。其格式为:
D7 D6 D5 D4 D3 D2 D1 D0
DU S/E O U F N N N
其中:
DU( D7)为显示无效特征位。当DU=1表示显示无效。当显示RAM由于清除显示或全清命令尚未完成时,DU=1。
表6-10-1 CD位定义的清除方式
D4 D3 D2 清除方式
1 0 × 将显示RAM全部清零
1 0 将显示RAM清成20H(A组=0010;B组=0000)
1 1 将显示RAM全部置1
0 不清除(若CA=1,则D3、D2仍有效)
;键盘和LED显示程序 ; ;********************************************* ;*8279初始化* ;* KEYCOM为8279命令口KEYDAT为8279数据口* ;********************************************* KEYCOM XDATA 0E601H KEYDAT XDATA 0E600H KEYCAM EQU 30H;定义存放按键值RAM起始地址 ORG 0000H AJMP START ORG 0003H LJMP AAA ORG 0060H START: MOVR0,#10 MOVDPTR,#KEYCOM ;命令口地址 MOV A, #10H;键盘/显示方式命令字8字符显示左入口,编码键盘,双键锁定 MOVX @DPTR,A MOV A,#34H;程序时钟命令 26分频对外部输入时钟 MOVX @DPTR,A MOV A,#0DFH ;清除显示缓冲区命令 MOVX @DPTR,A BUSY1: MOVX A,@DPTR JBACC.7,BUSY1 MOV IE,#81H MOVDPTR,#KEYDAT MOV A,#0C8H MOVX @DPTR,A;字型送入8279 INC DPTR MOV A,#90H MOVX @DPTR,A;字位送入8279(显示P) HA7S2:MOV30H,#80H MOV 31H,#40H HA7S3:MOVDPTR,#KEYCOM MOVX A ,@DPTR ANL A,#07H CJNE A,#00H,HA7S4; AJMP HA7S3 HA7S4:MOVDPTR ,#KEYDAT MOVX A,@DPTR MOV B,A ;取键值 MOV R1,#00H MOV DPTR,#KEYTAB ;数字键键值表 HA7S5:MOV A ,#00H MOVCA,@A+DPTR CJNE A , B,HA7S6;查键值表是否相同 AJMP HA7SA; 转数字键处理程序 HA7S6:INCDPTR ;键值表地址加1 INC R1;查找次数加1 MOV A,R1 JB ACC.4,HA7S7;是功能键吗? AJMPHA7S5 ; 继续查找 HA7S7:MOVR1,#00H MOV DPTR,#KEYTAB1 ;功能键表地址 HA7S8:MOV A,#00H MOVCA,@A+DPTR ;取出功能键键值 CJNEA,B,HA7S9;键值相同吗? AJMP HA7SC;转功能键处理子程序 HA7S9:INCDPTR INC R1 MOV A,R1 JNBACC.2,HA7S8 ;继续查找 LJMP START ;;;AJMP HA7SD;无按键返回 HA7SD:LJMPSTART HA7SA:MOV A,30H MOV DPTR,#0FE01H MOVX @DPTR,A; 字位送入8279 MOV A,R1 MOV R0,31H MOV @R0,A INC 31H MOV DPTR,#CDATA MOVCA,@A+DPTR;取字型代码 MOVDPTR,#KEYDAT MOVX @DPTR,A;送8279显示 INC 30H MOV A,30H ;字位加1 CJNEA,#88H,HA7SB; LJMP HA7S2 HA7SB:AJMPHA7S3 HA7SC:MOVDPTR ,#KJPADDR MOV A,R1 RL A ;;ADD A,R1 ADD A,#00H JMP @A+DPTR ; KJPADDR:LJMPLOOP0 LJMP LOOP1 LJMP LOOP2 KEYTAB: DB 0C1H,0C8H,0C9H,0D0H,0D8H,0E0H,0C2H,0CAH,0D1H,0D9H DB 0DAH,0C3H,0CBH,0D2H,0D3H,0DBH KEYTAB1:DB0E3H,0E2H,0E1H CDATA: DB0CH,9FH,4AH,0BH,99H,29H,28H,8FH,08H,09H,88H,38H,6CH,1AH,68H,0E8H LOOP0:MOVR5,#0CH;0 LJMP DISPC LOOP1:MOVR5,#9FH;1 LJMP DISPC LOOP2:MOVR5,#4aH;2 DISPC: MOVR6,#80H DISPC1: MOVDPTR ,#KEYCOM MOVX @DPTR,A;字位送8279 MOV A ,R5 MOVDPTR,#KEYDAT ;字形送8279 MOVX @DPTR ,A LCALL DELAY1 ;MOV A ,#0FFH ;MOVX @DPTR,A ;关显示 ;INC R6 ; ;CJNER6,#88H,DISPC1 ;AJMP DISPC; LJMP HA7S2 AAA: NOP NOP RETI DELAY1:MOVR1,#0FAH DELAY2:NOP NOP DJNZR1,DELAY2 DJNZR0,DELAY1 RET END
|