图0—14
图0—15
20
实验一 8279A可编程键盘显示接口实验
因为对8259A只须简单了解,知道如何使用它。如果对8259A不需要详细了解的同学可直接从预备知识第四项相关表格开始。 一、预备知识
8279A是一种通用的可编程键盘/显示器接口电路,可对64个开关矩阵组成的键盘进行自动扫描,接受键盘上的输入信息,存入内部的FIFO寄存器,并在有键输入时,CPU请求中断。8279A内部还有一个16×8的显示缓冲器,能对8位或16位LED进行扫描,使显示缓冲器的内容在LED上显示出来。
(1)、引脚功能
DB0—DB7:双向数据总线。
CLK:时钟输入线,以产生内部时钟。
RESET:复位线,高电平有效。复位后,8279A置为16位显示左边输入。 /CS:片选,低电平有效。
A0:地址输入线,用于区分数据线传送的是数据还是命令。A0=0传送数据,A0=1传送命令。
/RD:读信号线,低电平有效。内部缓冲器信息送DB0-DB7。
/WR:写信号线,低电平有效。数据总线上的信息写入内部缓冲器。
IRQ:中断请求输出线,高电平有效。当FIFORAM中有键输入数据时,IRQ升为高电平,向CPU 请求中断。CPU读出FIFORAM时,IRQ变为低电平,若RAM中还有数据,IRQ又为高电平,直至RAM中为空,IRQ才保持低电平。 SL0-SL3:输出扫描线
RL0-RL7:键盘矩阵的行(列)数据输入线。其内部有拉高电阻,使之保持高电平。 SHIFT:换挡输入线。其内部有拉高电阻,使之保持高电平。
CNTL/STB:控制/选通输入线。其内部有拉高电阻,使之保持高电平。 OUTA0-OUTA3:四位输出口。 OUTB0-OUTB3:四位输出口。
这两个口是16×4显示器更新寄存器的输出端,输出的数据和SL0-SL3信号同步,用于多位显示器显示。
/BD:显示消隐输出线。低电平有效。
(2)、8279A内部结构
8279A内部具有时序控制逻辑,通过控制和时序寄存器存放键盘和显示器的工作方式和其它 状态信息。内部还包含有N分频器,分频系数为N,由2—31之间任意一数可编程确定,对CLK上时钟进行N分频以产生基本的100KHZ的内部计数信号。 8279A内部的扫描计数器有两种工作方式:一是编码方式,计数器以二进制方式计数,4位计数器的状态直接从SL0—SL3上输出,由外部译码器对SL0—SL3译码产生键盘和显示的扫描信号,高电平有效;二是译码方式,对计数器的低二位译码后从SL0—SL3上输出,做为4×8键盘和4位显示器的扫描信号,低电平有效。
8279A在键盘工作时,由输入缓冲区锁存RL0—RL7上的信息,以确定键入情况。 FIFP/传感器RAM:它是一个双功能的8×8RAM,在键盘和选通方式中,它是一个先进
21
先出的数据缓冲器。当/CS=0,A0=1,/RD=0时,读出FIFO的内容,FIFO中有数据时,由控制电路发IRQ信号。在传感方式中,8×8RAM 用作传感器RAM,当检测到某个传感器发生变化时,IRQ变高。
显示器地址寄存器和显示RAM:用以存放CPU当前正在读写的显示RAM单元地址,以及正在显示的两个4位半字节地址。在选定了工作方式和地址后,CPU可直接读出显示RAM中的内容。
(3)、8279A的控制命令
① 键盘显示方式设置命令
D7 D6 D5 D4 D3 D2 D1 D0
0 0 0 D D K K K
显示方式 数据输入及扫描方式
0 0—8字符显示,左端输入* 0 0 0—编码扫描,键盘输入,2键互锁* 0 1—16字符显示,左端输入 0 0 1—译码扫描,键盘输入,2键互锁 1 0—8字符显示,右端输入 0 1 0—编码扫描,键盘输入,多键有效 1 1—16字符显示,右端输入 0 1 1—译码扫描,键盘输入,多键有效 1 0 0—编码扫描,传感器陈列检测 * RESET后,设定为该种方式 1 0 1—译码扫描,传感器陈列检测 D7、D6、D5=000,键盘显示命令 1 1 0—编码扫描,选通输入 特征字 1 1 1—译码扫描,选通输入
扫描频率控制命令
D7 D6 D5 D4 D3 D2 D1 D0
0 0 1 P4 P3 P2 P1 P0
D7、D6、D5=001,扫描频率控制命令特征字。
P4,P3、P2、P1、P0,对外部时钟CLK的分频系数,使CLK÷分频系数=100KHZ
* RESET后P4—P0=31。
读FIFO/传感器RAM命令
D7 D6 D5 D4 D3 D2 D1 D0
0 1 0 AI X A A A
D7、D6、D5=010,读FIFO/传感器RAM命令特征字。 AI=1,自动增1。AI=0,不自动增1。
D2、D1、D0=AAA,8×8 bit FIFO的地址000—111
该命令字只在传感器方式使用。在键盘工作方式时,由于读出操作严格按照先入先出的顺序,因此,不必使用此条命令。
读显示RAM命令
D7 D6 D5 D4 D3 D2 D1 D0
0 1 1 AI A A A A
D7、D6、D5=011,读显示RAM命令特征字。
22
D3、D2、D1、D0=AAAA,16×8 bit FIFO的地址0000—1111 AI=1,自动增1。AI=0,不自动增1。
写显示RAM命令
D7 D6 D5 D4 D3 D2 D1 D0
1 0 0 AI A A A A
D7、D6、D5=100,写显示RAM命令特征字。
D3、D2、D1、D0=AAAA,16×8 bit FIFO的地址0000—1111 AI=1,自动增1。AI=0,不自动增1。
显示禁止写入/消隐命令
D7 D6 D5 D4 D3 D2 D1 D0
1 0 1 X IWA IWB BLA BLB
D7、D6、D5=101,显示禁止写入/消隐命令特征字。
D3、D2=IWA,IWB,此二位分别用来屏蔽A、B两组显示。例如,当A组的屏蔽位D3=1时,A组显示RAM禁止写入。当B组的屏蔽位D2=1时,B组显示RAM禁止写入。
D1、D0=BLA,BLB是二个消隐特征位。当D1=1时,A组被屏蔽。当D0=1时,B组被屏蔽。
清除命令
D7 D6 D5 D4 D3 D2 D1 D0
1 1 0 CD2 CD1 CD0 CF CA
D7、D6、D5=110,清除命令特征字,此命令用来清除FIFO RAM和显示RAM。
D4、D3、D2=CD2,CD1,CD0用来设定清除显示RAM的方式。共有四种清除方式。 A、 D4、D3、D2=10X—将显示RAM全部清
B、 D4、D3、D2=110—将显示RAM全部清成20H,A组=0010,B组=0000 C、 D4、D3、D2=111—将显示RAM全部置1
D4、D3、D2=0XX—不清除,但CA=1时,则D3、D2仍有效
D1=CF用来置空FIFO存贮器、当CF=1时、FIFO RAM被置空,使中断输出线TRQ复位。同时,传感器RAM的读出地址也被置0。
D0=CA为总清的特征位。当CA=0时,清除显示RAM。当CA=1时,对显示的清除方式由D3、D2的位编码决定。
中断结束/出错方式没置命令
D7 D6 D5 D4 D3 D2 D1 D0
1 1 1 E X X X X
D7、D6、D5=111,该命令特征字。 E=1为设置中断结束/出错方式
RESET后E=0
上述8279的8种命令字皆由D7、D6、D5特征位确定。
8279A的FIFO状态字
D7 D6 D5 D4 D3 D2 D1 D0
Du S/E O U F N N N
Du=1,显示无效
23
S/E=1,传感器信号进入RAM/多键同时按下错误 O=1,FIFO溢出出错 U=1,FIFO取空出错 F=1,FIFO满
NNN,FIFO中的字符数(000—111) FIFO状态字由控制字口读入
(4)、相关表格
键值和键名的对照表2—1 键名 0 1 2 3 4 5 6 7 8 9 A 键值 00H 01H 02H 03H 04H 05H 06H 07H 08H 09H 0AH 键名 B C D E F EXEC MON MOV NEXT STEP LAST 键值 0BH 0CH 0DH 0EH 0FH 10H 10H 10H 显示值和显示代码对照表2—2
显示值 显示代码 11H 11H 14H 0 3FH 8 7FH 1 06H 9 6FH 2 5BH A 77H 3 4FH B 7CH
4 66H C 39H 5 6DH D 5EH 6 7DH E 79H 7 07H F 71H 显示值 显示代码 (5)、显示值和显示代码的关系 (6)、编程提示: 通常只要是可编程接口,便一定要在程序前先写控制字。在预备知识中,我们时常看到
24