串行接口LED数码管及键盘管理器件ZLG7289A的原理与应用
摘要:介绍了LED数码管及键盘管理器ZLG7289A的原理与应用。该芯片具有SPI串行接口,可同时驱动8位共阴式数码管(或64只独立LED),还可连接多达64键的键盘矩阵,单块芯片即可完成LED显示、键盘接口等全部功能。文章给出了ZLG7289A的特点、引脚功能、指令说明和经典电路,并以单片机AT89C51为例,给出了其接口电路及相应源程序。
关键词:ZLG7289A;LED显示;键盘接口;SPI
1 概述
ZLG7289A是广州周立功单片机发展有限公司自行设计的、具有SPI串行接口功能的、可同时驱动8位共阴式数码管(或64只独立LED)的智能显示驱动芯片。javascript:window.open(this.src);" style="cursor:pointer;"/>该芯片同时可连接多达64键的键盘矩阵。单块芯片即可完成LED显示以及键盘接口的全部功能。
ZLG7289A内部含有译码器,可直接接收BCD码或16进制码,并同时具有2种译码方式,此外还具有多种控制指令,如消隐、闪烁、左移、右移、段寻址等。
通过ZLG7289A自身所具有的片选信号,可以方便地实现多于8 位显示或多于64 键的键盘接口。该芯片的主要特性如下:
●带有串行接口,无需外围元件即可直接驱动LED;
●各位可独立控制译码/不译码及消隐和闪烁属性;
●具有(循环)左移/(循环)右移指令;
●具有段寻址指令,可方便地控制独立的LED显示器;
●内含64键键盘控制器以及去抖动电路;
●可完全替代其它公司的8279、8155、8255等系列显示器件。
2 引脚说明
ZLG7289A芯片具有标准的DIP28和SOIC28两种封装形式。其引脚排列如图1所示,各引脚的功能说明见表1所列。
表1 ZLG7289A引脚功能说明
引 脚 | 名 称 | 说 明 |
1,2 | VDD | 正电源 |
3,5 | NC | 不连接,必须悬空 |
4 | VSS | 接地 |
6 | CS | 片选输入。此脚为低电平时,可向芯片发送指令及读取键盘数据 |
7 | CLK | 同步时钟输入端。向芯片发送数据及读取键盘数据时,此引脚电平上升沿表示数据有效 |
8 | DATA | 串行数据输入/输出端。当芯片接收指令时,此引脚为输入端;当读取键盘数据时,此引脚在读指令最后一个时钟的下降沿变为输出端。 |
9 | KEY | 按键有效输出端。平时为高电平,当检测到有效按键时,此引脚变为低电平 |
10~16 | SG~SA | 段ga驱动输出 |
17 | DP | 小数点驱动输出 |
18~25 | DIG0~DIG7 | 数字0~7驱动输出 |
26 | CLKOUT | 振荡输出端 |
27 | RC | RC振荡器连接端 |
28 | RESET | 复位端。低电平有效,当RESET端由低电平变为高电平后,ZLG7289A大约经过18~25ms的时间才会进入正常工作状态 |
3 控制指令说明
ZLG7289A 的控制指令分为二大类:纯指令和带有数据的指令。
3.1 纯指令
纯指令包括复位(清除)指令(0A4H)、测试指令(0BFH)、左移指令(0A1H)、 右移指令(0A0H)、 循环左移指令(0A3H)、 循环右移指令(0A2H)等。下面以复位(清除)指令(0A4H)为例来进行说明,该指令的格式如下:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
当ZLG7289A 接收到该指令后,将所有的显示清除,所有设置的字符消隐、闪烁等属性也被一起清除。执行该指令后,芯片所处的状态与系统上电后所处的状态一样。
3.2 带有数据的指令
(1)下载数据且按方式0译码指令
该指令的格式如下:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 0 | 0 | 0 | 0 | a2 | a1 | a0 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DP | X | X | X | d3 | d2 | d0 | d1 |
该命令由二个字节组成。前半部分为指令,其中a2 a1 a0 为位地址,d0~d3为数据。具体分配方式如表2所列。当系统接收到此指令时(ZLG7289A将按译码方式0进行译码)具体的译码方式如表3所列。小数点的显示可由DP位控制,DP为1时,小数点显示,DP为0时,小数点不显示。在该指令格式中,x表示没有影响。
表2 位地址分配表
a2 | a1 | a0 | 显示位 |
0 | 0 | 0 | 1 |
0 | 0 | 1 | 2 |
0 | 1 | 0 | 3 |
0 | 1 | 1 | 4 |
1 | 0 | 0 | 5 |
1 | 0 | 1 | 6 |
1 | 1 | 0 | 7 |
1 | 1 | 1 | 8 |
表3 译码方式表
d0~d3 | d3 | d2 | d1 | d0 | 7段显示 |
00H | 0 | 0 | 0 | 0 | 0 |
01H | 0 | 0 | 1 | 1 | 1 |
02H | 0 | 0 | 0 | 0 | 2 |
03H | 0 | 0 | 1 | 1 | 3 |
04H | 0 | 1 | 0 | 0 | 4 |
05H | 0 | 1 | 0 | 1 | 5 |
06H | 0 | 1 | 1 | 0 | 6 |
07H | 0 | 1 | 1 | 1 | 7 |
08H | 1 | 0 | 0 | 0 | 8 |
09H | 1 | 0 | 0 | 1 | 9 |
0AH | 1 | 0 | 1 | 0 | - |
0BH | 1 | 0 | 1 | 1 | E |
0CH | 1 | 1 | 0 | 0 | H |
0DH | 1 | 1 | 0 | 1 | L |
0EH | 1 | 1 | 1 | 0 | P |
0FH | 1 | 1 | 1 | 1 | 空无显示 |
(2)下载数据且按方式1译码指令
这种指令与上一个指令基本相同。所不同的是,该指令的d0~d3对应的数据位0AH~0FH分别为七段显示中的A、B、C、D、E、F。该指令的具体格式如下:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 1 | 0 | 0 | 1 | a2 | a1 | a0 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
DP | X | X | X | d3 | d2 | d0 | d1 |
(3) 读键盘数据指令
该指令从ZLG7289A读出当前的按键代码,格式如下:
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 |
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
d7 | d6 | d5 | d4 | d3 | d2 | d0 | d1 |
与其它指令不同的是,此命令的前一个字节0001010B 为单片机传送到ZLG7289A的指令,而后一个字节d0~d7则为ZLG7289A返回的按键代码。 其范围为0~3FH(无键按下时为0xFF)。在此指令的前半段,ZLG7289A 的DATA 引脚处于高阻输入状态,可以用来接收来自微处理器的指令;在指令的后半段,DATA 引脚从输入状态转为输出状态,此时将输出键盘代码的值。故微处理器连接到DATA 引脚的I/O口应当有一个从输出态到输入态的转换过程。
当ZLG7289A检测到有效的按键时,KEY 脚将从高电平变为低电平,并一直保持到按键结束。在此期间,如果ZLG7289A