本应用笔记介绍了一种扩展扫描的方法,可以扩展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,SOT23封装), 按下开关时,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阴极驱动输出扫描,这种工作方式将是不可靠的。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !