LED显示驱动器的键盘扫描扩展方法
扫描二维码
随时随地手机看文章
本应用笔记介绍了一种扩展扫描的方法,可以扩展MAX6954和MAX6955 LED显示驱动器的键盘扫描范围,从32键扩展到80键。
MAX6954/MAX6955是4线或2线串行接口的LED驱动器,可以控制7段、14段或16段LED或一个16x8的LED矩阵。驱动器还包括5个I/O扩展(GPIO)端口,以及用这些端口自动扫描32个按键、消除按键抖动的所有逻辑控制。另外一个功能选项是通过一个中断引脚通知系统处理器消除键抖。本文介绍的扩展按键扫描方案(从32键扩展到80或更多个按键)需要增添额外的二极管。
表1. MAX6954/MAX6955的标准32键连接
P0
P1
P2
P3
LED Output O0
SW A1
SW B1
SW C1
SW D1
LED Output O1
SW A2
SW B2
SW C2
SW D2
LED Output O2
SW A3
SW B3
SW C3
SW D3
LED Output O3
SW A4
SW B4
SW C4
SW D4
LED Output O4
SW A5
SW B5
SW C5
SW D5
LED Output O5
SW A6
SW B6
SW C6
SW D6
LED Output O6
SW A7
SW B7
SW C7
SW D7
LED Output O7
SW A8
SW B8
SW C8
SW D8
图1. MAX6954/MAX6955的标准32键连接
表1和图1给出了MAX6954/MAX6955的标准8键连接。键切换电路按照4 x 8矩阵(4列、8行)读取32个按键的状态。键盘阵列的8行由8个LED阴极驱动器输出(LED输出O0至LED输出O7)驱动。作为多层LED驱动的一部分,这些LED阴极驱动输出依次拉至低电平320µs (标称值)(顺序驱动LED)。这些驱动器输出分别用来拉低键开关的一端,键的另一端连接在4个输入引脚(P0至P3),这4个输入引脚从内部拉至MAX6954/MAX6955的高电平V+。按下开关时,P0、P1、P2或P3将由相应的LED输出Ox拉至低电平,MAX6954/MAX6955检测按键,并为按键提供去抖。
多个按键被同时按下时,与开关串联的二极管可以防止2个或多个LED阴极驱动输出短路。例如,同时按下SW A1和SW A2时,与按键串联的二极管可以避免LED输出O0与LED输出O1短路,因为在任何情况下至少有一个二极管为反向偏置。二极管采用的是低成本、共阳极的BAW56,SOT23封装。
MAX6954/MAX6955随时判断32个按键按下或释放的动作,器件内部仅为指示这32个按键的状态提供了寄存器。从这一点看,在MAX6954/MAX6955的设计中似乎没有办法扩展扫描电路,需要寻找一种全新的设计方案。
针对这种特殊情况,我们发掘了一种冗余情况。许多应用中只需要了解某一个按键是否被按下。通常,同时按下两个按键的情况被认为是错误的键输入,或者是进入工厂诊断模式。这种两个按键同时按下的情况是一种“冗余”情况,我们把新增按键连接成好像某一对儿键被同时按下的情况,表2和图2所示电路通过组合P0、P1、P2和P3扩充了16个按键。例如,当SW AB1按下时,对于MAX6954/MAX6955而言,所表现出来的状态与SW A1和SW B1同时按下的情况相同。只要每对儿按键(如SW A1和SW B1)的物理位置不相邻,这种扩展架构即可有效工作。软件设计应保证在MAX6954/MAX6955的最小去抖周期内响应按键的/IRQ,保证每个对应于按键扫描的结果都经过适当的分析处理。如果软件对/IRQ响应较慢,将无法区分同时按下两个按键的情况(鉴别增添的按键状态)和顺序按下相同的两个按键的情况。无论是哪种情况,按键去抖寄存器0x08-0x0B将简单地显示每个键位置位。
表2. MAX6954/MAX6955扩展后的48键连接
P0
P1
P2
P3
P0 & P1
P2 & P3
LED Output O0
SW A1
SW B1
SW C1
SW D1
SW AB1
SW CD1
LED Output O1
SW A2
SW B2
SW C2
SW D2
SW AB2
SW CD2
LED Output O2
SW A3
SW B3
SW C3
SW D3
SW AB3
SW CD3
LED Output O3
SW A4
SW B4
SW C4
SW D4
SW AB4
SW CD4
LED Output O4
SW A5
SW B5
SW C5
SW D5
SW AB5
SW CD5
LED Output O5
SW A6
SW B6
SW C6
SW D6
SW AB6
SW CD6
LED Output O6
SW A7
SW B7
SW C7
SW D7
SW AB7
SW CD7
LED Output O7
SW A8
SW B8
SW C8
SW D8
SW AB8
SW CD8
每个附加按键需要一个双二极管(如低成本、共阴极的BAV70,SOT-23封装), 按下开关时,P0和P1或P2和P3被同时拉低。
图2. MAX6954/MAX6955扩展后的48键连接
图2和表2通过组合P0、P1、P2和P3扩充了16个按键。实际上,对于P0-P3键扫描输入还存在另外四种可能的两键组合方式。如果使用了6种两键组合方式,按键数量将增加到80个,如表3所示。图3给出了6个附加按键在LED输出O0行的连接方式。每个附加按键需要一个双二极管。
表3. MAX6954/MAX6955扩展后的80键连接
P0
P1
P2
P3
P0 & P1
P0 & P2
P0 & P3
P1 & P2
P1 & P3
P2 & P3
LED Output O0
SW A1
SW B1
SW C1
SW D1
SW AB1
SW AC1
SW AD1
SW BC1
SW BD1
SW CD1
LED Output O1
SW A2
SW B2
SW C2
SW D2
SW AB2
SW AC2
SW AD2
SW BC2
SW BD2
SW CD2
LED Output O2
SW A3
SW B3
SW C3
SW D3
SW AB3
SW AC3
SW AD3
SW BC3
SW BD3
SW CD3
LED Output O3
SW A4
SW B4
SW C4
SW D4
SW AB4
SW AC4
SW AD4
SW BC4
SW BD4
SW CD4
LED Output O4
SW A5
SW B5
SW C5
SW D5
SW AB5
SW AC5
SW AD5
SW BC5
SW BD5
SW CD5
LED Output O5
SW A6
SW B6
SW C6
SW D6
SW AB6
SW AC6
SW AD6
SW BC6
SW BD6
SW CD6
LED Output O6
SW A7
SW B7
SW C7
SW D7
SW AB7
SW AC7
SW AD7
SW BC7
SW BD7
SW CD7
LED Output O7
SW A8
SW B8
SW C8
SW D8
SW AB8
SW AC8
SW AD8
SW BC8
SW BD8
SW CD8
图3. MAX6954/MAX6955扩展后的80键连接
为什么仅将“同时按下双键”作为判断附加按键的途径呢?3键和4键组合可用来替代双键按下的情况,表4给出了这种附加配置。需要注意的是,4-3组合键每组需要三个二极管,四组键需要4倍数量的二极管。
表4. 3键和4键连接
P0 & P1 & P3
P0 & P1 & P4
P0 & P2 & P3
P1 & P2 & P4
P0 & P1 & P2 &P3
LED Output O0
SW ABC1
SW ABD1
SW ACD1
SW BCD1
SW ABCD1
LED Output O1
SW ABC2
SW ABD2
SW ACD2
SW BCD2
SW ABCD2
LED Output O2
SW ABC3
SW ABD3
SW ACD3
SW BCD3
SW ABCD3
LED Output O3
SW ABC4
SW ABD4
SW ACD4
SW BCD4
SW ABCD4
LED Output O4
SW ABC5
SW ABD5
SW ACD5
SW BCD5
SW ABCD5
LED Output O5
SW ABC6
SW ABD6
SW ACD6
SW BCD6
SW ABCD6
LED Output O6
SW ABC7
SW ABD7
SW ACD7
SW BCD7
SW ABCD7
LED Output O7
SW ABC8
SW ABD8
SW ACD8
SW BCD8
SW ABCD8
排除3键和4键连接的一个最好理由是它们需要更多的二极管。如果应用中所需按键只是略高于32键的限制,则可首先选择本文推荐的方案。只是因为某些偶然因素,让用户找寻3键和4键的方案也是不可取的。
值得注意的是:每个扩充按键的连接方式模拟的是多个按键同时按下的情况,这些按键连接在同一LED阴极驱动器输出端(LED输出O0至LED输出O7)。采用这种连接方式,相关组合的按键总是在同一时间扫描或去抖。如果新增按键所模拟的同时按下的按键由不同的LED阴极驱动输出扫描,这种工作方式将是不可靠的。