本应用笔记详细介绍了如何将MAX6954和MAX6955 LED显示驱动器的按键扫描功能从32个按键扩展至多达80个按键。
MAX6954/MAX6955为4线和2线串行接口LED驱动器,可控制多达7段、14段和16段LED数字或16x8 LED阵列。该驱动程序还包括五个 I/O 扩展器 (GPIO) 端口,以及用于使用部分或全部这些端口自动扫描和去抖动多达 32 个按键开关的逻辑。此逻辑的一个可选功能是通过中断输出引脚提醒系统处理器密钥去抖动。本文所述的技术通过增加二极管,将MAX6954/MAX6955的能力从32个增加到80个或更多键。
P0 |
P1 | P2 | P3 |
P0 |
LED Output O0 | SW A1 | SW B1 | SW C1 | LED Output O0 |
LED Output O1 | SW A2 | SW B2 | SW C2 | LED Output O1 |
LED Output O2 | SW A3 | SW B3 | SW C3 | LED Output O2 |
LED Output O3 | SW A4 | SW B4 | SW C4 | LED Output O3 |
LED Output O4 | SW A5 | SW B5 | SW C5 | LED Output O4 |
LED Output O5 | SW A6 | SW B6 | SW C6 | LED Output O5 |
LED Output O6 | SW A7 | SW B7 | SW C7 | LED Output O6 |
LED Output O7 | SW A8 | SW B8 | SW C8 | LED Output O7 |
图1.MAX6954/MAX6955的标准32键连接。
表1和图1所示为MAX6954/MAX6955的标准按键开关连接。按键开关电路读取 32 个按键,这些按键以 4 x 8 矩阵(四列,八行)组织。八个按键矩阵行由八个 LED 阴极驱动输出(LED 输出 O0 到 LED 输出 O7)驱动。这些 LED 阴极驱动输出交替变为低电平 320μs (标称),并作为多路复用 LED 驱动器的一部分按顺序驱动其 LED。这些驱动输出还用于将两个按键开关的一端拉低。按键的另一端连接四个输入引脚(P0-P3),在MAX6954/MAX6955内部上拉至V+。如果按下开关,P0、P1、P2或P3被适当的LED输出Ox输出拉低,MAX6954/MAX6955检测并去抖动按键。
与开关串联的二极管可确保在同时按下多个键时,两个或多个 LED 阴极驱动输出不会短路在一起。例如,如果将 SW A1 和 SW A2 压在一起,则与按键串联的二极管可防止 LED 输出 O0 短路至 LED 输出 O1。这是因为,在任何时候,至少有一个二极管会被反向偏置。通常采用的二极管是采用SOT23的低成本共阳极BAW56。
MAX6954/MAX6955可区分和区分32种可能的按键的任意组合。部件中只有足够的寄存器来提供这 32 个密钥的状态。显然,除了MAX6954/MAX6955设计的32个按键之外,没有办法扩展这种扫描拓扑。因此,有必要采取另一种更具创造性的方法。
具体来说,我们寻找一个多余的情况来利用。在许多情况下,应用程序只需要检测是否按下了多个键中的一个。通常,设备上的双键按下要么是错误的输入,要么是进入出厂诊断模式的狡猾手段。因此,冗余情况是双键按下。这里建议的创造性方法是使其他键看起来好像同时按下了某些键对。表 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只是显示为每个密钥设置的位。
P0 |
P1 | P2 | P3 | P0 & P1 | P2 & P3 |
P0 |
LED Output O0 | SW A1 | SW B1 | SW C1 | SW D1 | SW AB1 | LED Output O0 |
LED Output O1 | SW A2 | SW B2 | SW C2 | SW D2 | SW AB2 | LED Output O1 |
LED Output O2 | SW A3 | SW B3 | SW C3 | SW D3 | SW AB3 | LED Output O2 |
LED Output O3 | SW A4 | SW B4 | SW C4 | SW D4 | SW AB4 | LED Output O3 |
LED Output O4 | SW A5 | SW B5 | SW C5 | SW D5 | SW AB5 | LED Output O4 |
LED Output O5 | SW A6 | SW B6 | SW C6 | SW D6 | SW AB6 | LED Output O5 |
LED Output O6 | SW A7 | SW B7 | SW C7 | SW D7 | SW AB7 | LED Output O6 |
LED Output O7 | SW A8 | SW B8 | SW C8 | SW D8 | SW AB8 | LED Output O7 |
每个额外的键都需要一个双二极管(例如SOT23中的低成本共阴极BAV70),当按下开关时,它将P0和P1拉低,或P2和P3拉低。
图2.扩展了与MAX6954/MAX6955的48键连接。
图 2、表 2 方案通过组合 P0 和 P1 以及 P2 和 P3 增加了 16 个密钥。实际上,P0-P3 按键扫描输入还有四种可能的双键组合。如果使用所有六个双键组合,则密钥计数可以扩展到 80 个交换机,如表 3 所示。图 3 显示了 LED 输出 O0 行的六个额外键是如何接线的。同样,每个额外的按键开关都使用一个双二极管。
P0 |
P1 | P2 | P3 | P0 & P1 | P0 & P2 | P0 & P3 | P1 & P2 | P1 & P3 | P2 & P3 |
P0 |
LED Output O0 | SW A1 | SW B1 | SW C1 | SW D1 | SW AB1 | SW AC1 | SW AD1 | SW BC1 | SW BD1 | LED Output O0 |
LED Output O1 | SW A2 | SW B2 | SW C2 | SW D2 | SW AB2 | SW AC2 | SW AD2 | SW BC2 | SW BD2 | LED Output O1 |
LED Output O2 | SW A3 | SW B3 | SW C3 | SW D3 | SW AB3 | SW AC3 | SW AD3 | SW BC3 | SW BD3 | LED Output O2 |
LED Output O3 | SW A4 | SW B4 | SW C4 | SW D4 | SW AB4 | SW AC4 | SW AD4 | SW BC4 | SW BD4 | LED Output O3 |
LED Output O4 | SW A5 | SW B5 | SW C5 | SW D5 | SW AB5 | SW AC5 | SW AD5 | SW BC5 | SW BD5 | LED Output O4 |
LED Output O5 | SW A6 | SW B6 | SW C6 | SW D6 | SW AB6 | SW AC6 | SW AD6 | SW BC6 | SW BD6 | LED Output O5 |
LED Output O6 | SW A7 | SW B7 | SW C7 | SW D7 | SW AB7 | SW AC7 | SW AD7 | SW BC7 | SW BD7 | LED Output O6 |
LED Output O7 | SW A8 | SW B8 | SW C8 | SW D8 | SW AB8 | SW AC8 | SW AD8 | SW BC8 | SW BD8 | LED Output O7 |
图3.扩展了与MAX80/MAX6954的6955键连接。
但是,为什么要仅限于双击键来识别额外的键呢?可以使用三重和四重组合键代替或补充双键按下。表 4 显示了这些额外的配置。请注意,四个三重组合需要一个三重二极管,而四重组合需要一个四重二极管。
P0 & P1 & P3 |
P0 & P1 & P4 | P0 & P2 & P3 | P1 & P2 & P4 | P0 & P1 & P2 &P3 |
P0 & P1 & P3 |
LED Output O0 | SW ABC1 | SW ABD1 | SW ACD1 | SW BCD1 | LED Output O0 |
LED Output O1 | SW ABC2 | SW ABD2 | SW ACD2 | SW BCD2 | LED Output O1 |
LED Output O2 | SW ABC3 | SW ABD3 | SW ACD3 | SW BCD3 | LED Output O2 |
LED Output O3 | SW ABC4 | SW ABD4 | SW ACD4 | SW BCD4 | LED Output O3 |
LED Output O4 | SW ABC5 | SW ABD5 | SW ACD5 | SW BCD5 | LED Output O4 |
LED Output O5 | SW ABC6 | SW ABD6 | SW ACD6 | SW BCD6 | LED Output O5 |
LED Output O6 | SW ABC7 | SW ABD7 | SW ACD7 | SW BCD7 | LED Output O6 |
LED Output O7 | SW ABC8 | SW ABD8 | SW ACD8 | SW BCD8 | LED Output O7 |
放弃三键和四键组合是有充分理由的——它们需要更多的二极管。但是,如果应用程序只需要几个高于 32 键限制的额外键,则可能需要先考虑这五个键。这是因为用户意外摸索三四个键的可能性比两个键更不可能。
注意:讨论的每个扩展键都经过接线,以模拟同一 LED 阴极驱动输出(LED 输出 O0 至 LED 输出 O7)上的按键多次按键。通过这种连接,与任何多个按键组合关联的按键将同时被扫描和去抖动,因此结果会同时显示。模拟由不同LED阴极驱动输出扫描的多次按键的额外按键将不可靠,因为按键不会同时去抖动。
审核编辑:郭婷
全部0条评论
快来发表一下你的评论吧 !