ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

YL1628显示驱动IC:小家电面板显示与按键扫描二合一方案

YL1628显示驱动IC:小家电面板显示与按键扫描二合一方案 做小家电或者带显示面板的控制板时最头疼的一件事就是既要显示数字又要跑按键扫描。数码管要占一堆 IO按键检测又要占一堆 IOMCU 引脚一下子就见底了功能扩展根本不用想。所以这些年做方案我基本离不开 1628 这类显示驱动 IC。今天聊的这颗 YL1628就是国产阵营里很典型的“显示驱动 按键扫描”二合一芯片一颗芯片解决面板交互的两大需求。如果你正在做电磁炉、热水器、饮水机、洗衣机、空调面板这类产品或者任何需要数码管显示加按键输入的方案这篇文章值得看完。我会把 YL1628 的原理、硬件电路、软件驱动、常见坑全部拆开讲清楚内容偏向实际项目里摸爬滚打出来的经验不是照着数据手册念一遍读完你基本可以直接把这颗芯片用到自己的方案里。1. 项目核心思路与方案选型1.1 一颗芯片解决面板交互两大需求展开讲之前先明确 YL1628 到底是干什么的。这颗芯片的全名一般是“LED 显示驱动 IC”但它并不是只会驱动 LED它把按键扫描也集成进来了。也就是说一颗芯片同时完成了两件事第一个是驱动数码管或 LED 指示灯第二个是扫描按键矩阵检测用户按了哪个键。这个设计非常聪明。做过面板控制方案的人都知道显示和按键是强耦合的。洗衣机面板上要有数码管显示剩余时间旁边又排着程序选择、启动暂停、水位调节一堆按键电磁炉面板上要有火力档位显示又要有开关、定时、加减按键。如果把显示和按键分开做显示用一排 IO 推数码管按键又占一排 IO 做矩阵扫描一颗 20 脚的 MCU 基本就不剩什么了。YL1628 这类芯片的存在就是为了把这两件事从 MCU 身上卸下来。从实际项目看YL1628 和 MCU 之间只需要 3 根线STB、CLK、DIO也就是片选、时钟、数据三线串行接口。MCU 输出显示数据芯片负责动态扫描点亮数码管MCU 发一条读按键指令芯片就把扫描到的键值返回。一个 4 位数码管加 12 个按键的面板总共只占用主控 3 个 GPIOBOM 成本也非常低这就是这类芯片在国产家电方案里几乎成为标配的原因。1.2 为什么在国产化方案中选 YL1628我平时做方案选型LED 驱动 IC 这一块确实优先考虑国产型号YL1628 属于我用下来比较稳的一颗。说国产优先不是口号是几个很实际的原因。第一个是供货稳定性。进口芯片的现货交期有时候能拉到二十几周项目定下来之后催货催到头疼。国产芯片在这方面的现货渠道明显更灵活小批量打样、中批量试产都方便这对方案开发阶段很关键。第二个是兼容性。YL1628 在封装、引脚、指令集上都兼容市面上主流的 1628 类芯片替换成本很低。我接过好几个项目原来用的是其它型号因为供应问题要换国产替代直接换上 YL1628 之后软件基本不用改最多调整一下延时参数和指令宏定义板子都不用重新画这就是兼容设计带来的实打实的价值。第三个是资料和 FAE 支持。国产芯片厂商现在给的技术资料越来越全数据手册、参考电路、示例代码都有遇到问题还能直接找原厂 FAE。对于中小开发团队来说能得到及时的技术支持比省那几毛钱的芯片差价重要得多。当然选型也不能只看“国产”两个字。具体还是要核对电气参数、ESD 能力、驱动电流、工作电压范围这些指标确认覆盖项目需求再定。我的习惯是先把需求量大的几颗国产型号拿回来实测跑一遍驱动、按键、温升用数据说话。1.3 与其它显示扩展方案的取舍对比很多入门工程师会有疑问为什么不直接用 MCU 的 GPIO 推数码管或者用 74HC595 这种移位寄存器来扩展。这里直接做个对比方便你判断自己项目该怎么选。方案IO 占用按键支持软件复杂度典型成本适用场景GPIO 直推数码管极高1位8段约10个IO需要额外IO低最低LED 数量很少的极简方案74HC595 扩展显示3~4个IO不支持需额外方案中中只扩显示、不需要按键的场景YL1628 显示按键二合一3个IO自带矩阵扫描中中低数码管按键组合的面板GPIO 直推的方案只适合个位数 LED一旦上了数码管IO 根本不够用。74HC595 能解决显示扩展但按键还是得靠 MCU 自己扫或者再挂一颗按键扫描芯片BOM 复杂度和成本反而上去了。YL1628 这一类芯片把显示和按键整合在一起才是真正贴合面板控制类产品需求的方案。我自己的经验是只要项目里有数码管同时按键数量超过四五个直接上这类显示驱动 IC 准没错。省 IO、省 PCB 面积、省软件工作量综合算下来是最划算的。2. 芯片工作原理与关键机制2.1 动态扫描是怎么把多位显示出来的很多第一次用这类芯片的人会有一个疑问YL1628 的引脚数量也不算多怎么能同时驱动 8 位数码管还带按键。答案是动态扫描而不是静态驱动。动态扫描的原理说穿了很简单。数码管每一位共用相同的段线但位选线分开控制。芯片高速轮流选中每一位让它在极短的时间内点亮然后切到下一位。只要扫描频率够快比如每 2ms 切换一位8 位数码管一轮扫描也就 16ms人眼的视觉暂留效应会让我们觉得所有位是同时亮着的。打个比方这就像老式霓虹灯招牌上的字一个笔画一个笔画轮流点亮看的人并不会觉得它在闪只觉得整行字都在亮。YL1628 内部有振荡器产生扫描时序MCU 只需要把显示数据写进芯片内部的显示 RAM芯片就会自动完成“点哪一位、亮哪一段”这种脏活累活。那亮度又是怎么控制的动态扫描的占空比直接决定亮度。一个位在一轮扫描中分到的时间长看起来就亮分到的时间短看起来就暗。YL1628 的显示控制指令里包含多级亮度调节本质就是在调整扫描的占空比或者输出脉冲宽度。这也是为什么果你用 8F最高亮度档和 88最低亮度档去驱动同一个数码管肉眼能明显看出亮度差异。2.2 按键扫描如何与显示复用同一组引脚YL1628 最实用的设计是键扫描和显示扫描共用引脚。芯片的 SEG 和 GRID 引脚既可以用来驱动数码管又能作为按键矩阵的检测线。举个例子K1、K2 是独立的按键检测引脚按键矩阵的列线接在 SEG 或 GRID 上按下某个键对应的行和列就接通芯片通过检测电平变化来确定键位。这个机制在工作中是这样实现的芯片在扫描完一轮显示之后会切到按键检测状态。它先给某一根列线一个驱动信号然后检查 K1、K2 上有没有信号进来。如果有说明这个交叉点上对应的按键被按下了。遍历完所有列线就得到一组完整的按键状态数据存入芯片内部的键值寄存器。MCU 随时可以通过串行接口把这份键值数据读走整个过程不影响显示扫描因为两者是分时复用的。实际使用中按键数量取决于可复用的引脚数量。以典型的 1628 类芯片为例K1、K2 两根行线搭配多根列线最多可以扫描出几十个按键。对家电面板来说这个数量完全够用甚至还绰绰有余。如果你没用过这种芯片可能会担心一个问题按键检测和显示复用引脚会不会互相干扰实际上芯片内部已经做了分时隔离显示扫描时按键检测电路不工作按键检测时显示输出处于高阻或不驱动状态。只要按照芯片手册的时序操作不会出现按键按下导致数码管闪一下这种问题。2.3 三线串行接口的通信规则YL1628 和 MCU 之间的通信靠三根线实现STB、CLK、DIO。理解这三根线的关系是写好驱动的前提。STB 是片选信号也可以理解成通信的起始和结束标志。STB 拉低表示一次数据传输开始STB 拉高表示这次传输结束。一个很重要的细节是STB 在传输过程中不能被提前拉高否则芯片会认为这次通信异常把之前收到的数据全部作废。我见过不少新手在这上面翻车用逻辑分析仪查了半天最后发现是 GPIO 操作顺序不对STB 被设置了太长时间导致数据没写进去。CLK 是时钟信号数据线 DIO 上的电平在 CLK 的上升沿被芯片锁存。发送数据时MCU 先设置 DIO 的电平再给 CLK 一个上升沿一位一位地传。读取数据时反过来MCU 给 CLK 时钟芯片在时钟边沿把数据送到 DIO 上MCU 去采样。DIO 这根线比较特殊它是双向数据线。写指令的时候MCU 把 DIO 配置成输出读按键数据的时候MCU 要把 DIO 配置成输入。这个方向的切换很多第一次上手的人会忽略导致读回来的数据永远是 0 或者全 1。老老实实看时序图哪一步该切换方向哪一步该采样写代码之前先理清楚能省很多调试时间。指令系统方面YL1628 这类芯片一般有三大类指令数据命令设置、显示控制命令设置、地址命令设置。数据命令用来选择本次通信是写显示数据还是读按键数据显示控制命令用来开显示、关显示、调亮度地址命令用来设置显示 RAM 的起始地址。实际编程时就是用这几条指令组合完成所有操作。3. 硬件电路设计实操3.1 典型应用电路怎么搭先把典型的电路框架讲一遍。YL1628 和 MCU 的连接很简单STB、CLK、DIO 三根线分别接主控的三个 GPIODIO 需要加一个 10kΩ 左右的上拉电阻到 VCC保证总线空闲时处于确定电平。数码管的连接是重点。以最常用的共阴数码管为例SEG 段输出接数码管的段引脚GRID 位选输出接数码管的公共端。不需要在每一段上加驱动三极管YL1628 本身有足够的输出能力直接驱动数码管这就是它比 GPIO 直推方案合理的地方。是不是任何数码管都能直接接不一定。如果你的产品用的是共阳数码管引脚电平逻辑和共阴是相反的直接用会出问题。解决方案有两种一种是换用共阴数码管这是最省事的另一种是在段驱动上加反相电路比较麻烦一般不建议。所以选硬件方案之前先确认数码管的极性这个顺序不能反。按键矩阵的连接K1、K2 引脚作为行线列线接到芯片的 SEG 或 GRID 引脚上每个交叉点放一个按键。按键部分要注意两点一是 K 引脚的走线尽量短避免引入干扰二是按键两端并联一个小电容比如 0.1μF可以帮助滤掉机械按键的抖动毛刺减轻软件去抖的压力。3.2 限流电阻这么算LED 才不容易烧YL1628 驱动 LED 或数码管必须在段输出上串联限流电阻。不串电阻直接接 LED通电瞬间电流会非常大结果就是 LED 很快发烫报废严重的可能把芯片输出脚都烧坏。限流电阻的计算公式很简单R (VCC - V_LED) / I_LED。VCC 是芯片工作电压V_LED 是 LED 的正向压降I_LED 是期望的工作电流。以 5V 供电为例红色 LED 的正向压降一般在 1.8V~2.2V 之间取 2.0V。如果希望 LED 工作电流在 10mA计算就是(5 - 2) / 0.01 300Ω取标准阻值 330Ω。如果是白色或者蓝色 LED压降会高一些通常在 3.0V~3.4V 之间同样算下来限流电阻会更小或者供电电压不够的话干脆点不亮这种情况就得考虑换驱动方案或者提高供电电压。LED 颜色典型压降5V供电、10mA时的限流电阻红色2.0V330Ω绿色2.2V270Ω白色3.2V180Ω蓝色3.2V180Ω实际项目中还要考虑一个因素就是芯片输出的最大灌电流/拉电流能力以及总功耗。如果 8 位数码管全点亮每位数码管又是 8 段全亮瞬时电流会达到几百毫安。虽然动态扫描让每时每刻只有一位在亮但电源设计和芯片选型时还是要算峰值电流留足余量。3.3 布线与电源设计的几个坑关于 PCB 布线有三个地方想多说几句。第一个是电源去耦电容。VCC 和 GND 之间必须放一个 0.1μF 的陶瓷电容而且要紧贴芯片电源引脚摆放。这个电容的作用是给芯片的动态扫描电流提供一个低阻抗回路。如果省掉或者放远了动态扫描时电流突变会引起电源电压跌落症状就是数码管亮度闪烁有时候 MCU 也会跟着复位。第二个是大电流回路。驱动数码管的时候电流从电源经过芯片、经过数码管、回到地这个回路的走线面积要尽量小。我的习惯是电源线和地线尽量加粗避免把地线走成一个细长的条那样地线上的压降会影响芯片参考电平间接导致显示亮度不稳。第三个是静电防护。按键和数码管都是要拉到面板上的人体经常接触难免有静电。我的经验是芯片靠近接口处加 ESD 防护器件或者在走线上串联几十欧姆的电阻能起到一定的限流作用。批量产品在这上面吃过亏返修率高都是因为省了几个防护元件。4. 软件驱动实现4.1 初始化流程第一步就做对软件这边我以兼容 1628 类指令集的方式写驱动框架具体指令码在接入 YL1628 时以数据手册为准。先讲初始化这是最基础也是最重要的环节。芯片上电之后LED 驱动部分默认可能处于关闭状态。所以初始化的第一件事就是发送显示控制命令把显示打开并设置一个合适的亮度。我之前见过一个项目代码里忘了这一步结果硬件一切正常数码管就是不亮排查了整整一天。初始化时序上有一个细节要注意MCU 上电之后IO 口的状态是不确定的。如果 STB 恰好被拉低CLK 上又有杂波芯片可能误判为一次通信开始接收到一堆乱数据。稳妥的做法是先初始化 GPIO 状态让 STB 输出高电平、CLK 输出低电平、DIO 输出高电平等系统稳定之后再发第一条命令。这个习惯能省掉很多莫名其妙的问题。初始化代码框架大概是这样的void YL1628_Init(void) { // 1. GPIO 初始状态防止误触发 STB 1; CLK 0; DIO_OUT(); DIO 1; delay_ms(10); // 2. 发送显示控制命令开显示亮度等级调最大 YL1628_SendCmd(0x8F); delay_ms(5); // 3. 如果有清除显示的需求往 RAM 全写 0 uint8_t buf[16] {0}; YL1628_WriteDisplay(buf, 16); }4.2 显示数据写入与数码管段码设计显示数据写入的核心是把要显示的数字转换成段码然后通过串行接口写进芯片的显示 RAM。先看段码表。最常见的共阴数码管段码数字 0~9 对应如下const uint8_t seg_code[] { 0x3F, // 0 0x06, // 1 0x5B, // 2 0x4F, // 3 0x66, // 4 0x6D, // 5 0x7D, // 6 0x07, // 7 0x7F, // 8 0x6F, // 9 0x77, // A 0x7C, // b 0x39, // C 0x5E, // d 0x79, // E 0x71, // F };为什么 0 是 0x3F把 0x3F 展开成二进制是 0011 1111对应的就是数码管的 a、b、c、d、e、f 这六段点亮正好组成数字 0。用十六进制表示段码比用二进制直观调试的时候一定要学会在脑子里把十六进制和数码管显示对应起来。写显示数据的流程分两步。第一步发送数据命令告诉芯片接下来要写显示 RAM地址自动递增。第二步发送起始地址然后把要显示的数据按顺序连续写入。顺序一般是先发地址命令 0xC0表示从 RAM 地址 00H 开始然后连续写入 16 个字节数据。每个字节对应一位 GRID 的状态字节内每个 bit 对应一个 SEG。写显示数据的代码void YL1628_WriteDisplay(uint8_t *buf, uint8_t len) { // 数据命令写显示数据地址自动加 1 YL1628_SendCmd(0x00); // 地址命令起始地址 00H STB 0; YL1628_WriteByte(0xC0); // 连续写入显示数据 for (uint8_t i 0; i len; i) { YL1628_WriteByte(buf[i]); } STB 1; }这里有个经验显示数据刷新尽量放在主循环里周期性更新不要每次显示变化都中断打断芯片扫描。如果显示数据在传输过程中被打断芯片已经收到的数据会部分生效人眼看到的结果就是某些段突然亮了或者突然灭了看起来像闪烁。4.3 按键读取流程与去抖处理按键读取的流程是MCU 发读按键数据命令芯片返回若干字节的键值数据MCU 再对这些数据处理。读按键的代码uint32_t YL1628_ReadKeys(void) { uint32_t key 0; // 数据命令读按键数据 STB 0; YL1628_WriteByte(0x02); // 连续读取若干字节具体字节数根据芯片手册确定 for (uint8_t i 0; i 4; i) { key | ((uint32_t)YL1628_ReadByte()) (i * 8); } STB 1; return key; }读回来的原始数据不能直接用。机械按键有抖动按下和松开的过程中电平会反复跳变几十毫秒。如果不对这组数据进行处理一次按键会被识别成多次触发。我常用的方法是“消抖延迟状态确认”。首次检测到按键状态变化时启动一个 10ms 左右的定时器到期后再读一次如果状态和之前一致才认为按键真的生效。这样既能滤掉机械抖动也能避免误触发。另一个容易被忽略的问题是按键状态变化的边沿检测。面板应用通常关心的是“按下这个键”这个动作而不是“这个键一直被按着”。所以判断逻辑要基于边沿上一次状态是未按下这一次是按下才算一次有效按键。如果只是在主循环里读电平判断按键一直按住程序会反复响应那体验就很糟糕了。4.4 完整的驱动框架参考把底层函数汇总一下方便直接抄作业。下面是一个精简但完整的驱动框架实际项目里在这个基础上扩展就行。// 底层写字节低位在前数据在 CLK 上升沿锁存 void YL1628_WriteByte(uint8_t dat) { for (uint8_t i 0; i 8; i) { DIO (dat 0x01) ? 1 : 0; CLK 1; delay_us(1); CLK 0; delay_us(1); dat 1; } } // 底层读字节数据在 CLK 下降沿输出主机在 CLK 高电平时采样 uint8_t YL1628_ReadByte(void) { uint8_t dat 0; DIO_IN(); // DIO 切输入 for (uint8_t i 0; i 8; i) { CLK 1; delay_us(1); dat | (DIO_READ() ? 1 : 0) i; CLK 0; delay_us(1); } DIO_OUT(); // 恢复输出 return dat; } // 发送单条指令 void YL1628_SendCmd(uint8_t cmd) { STB 0; YL1628_WriteByte(cmd); STB 1; } // 主循环中的按键处理周期性调用返回按键事件 uint8_t YL1628_KeyProcess(void) { static uint8_t last_state 0; uint8_t current_state 0; uint32_t raw YL1628_ReadKeys(); if (raw 0x00000001) current_state | KEY1; if (raw 0x00000002) current_state | KEY2; // 根据实际键值映射关系继续补充 // 去抖如果状态和上次一致才更新 static uint8_t stable_state 0; static uint8_t debounce_cnt 0; if (current_state stable_state) { debounce_cnt 0; } else { debounce_cnt; if (debounce_cnt 2) { // 连续两次一致确认状态变化 stable_state current_state; debounce_cnt 0; return stable_state; // 返回新状态 } } return 0xFF; // 无事件 }这个框架里按键去抖用的是计数法每 10ms 调用一次连续两次读到相同状态才确认。实际项目可以根据按键质量和扫描频率调整计数阈值。代码并不能覆盖所有 YL1628 型号的具体指令差异但你理解了这个流程拿到任意一颗兼容芯片的数据手册都能很快移植过去。5. 常见问题与排查技巧实录5.1 显示乱码、不亮、闪烁先查这几处显示异常是这类芯片最常见的问题现象不同排查方向也不同。数码管完全不亮先摸一下芯片有没有温度。芯片完全没温度检查 VCC 和 GND 是否接反、供电是否正常芯片有温度但不亮大概率是显示控制命令没发对初始化里忘了开显示或者命令里的亮度等级被设成了 0相当于关显示。显示乱码通常是数据位顺序或地址错位。很多入门工程师在这上面卡壳一直怀疑硬件有问题结果是把低位在前和高位在前搞反了。YL1628 类芯片一般遵循低位在前的传输规则如果你的驱动代码是按“高位在前”写的数据的 bit 全部反了显示出来自然就是乱码。这类问题用逻辑分析仪能一锤定音直接对比时序马上就能看出哪一位传错了。显示闪烁混合了几种可能。一种可能是电源问题动态扫描瞬间电流大电源被拉垮可以看供电是否稳定、去耦电容是否齐全、电源走线是否过细。另一种可能是扫描刷新率不够如果读按键指令执行时间太长占了太多总线时间会影响显示数据的刷新节奏。解决办法是把显示刷新和按键读取分开做按键读取只在空闲时执行别在显示数据传输中穿插。还有一个容易忽略的点就是 MCU 和 YL1628 共用电源时动态扫描引起的电源纹波可能通过地线耦合到 MCU导致 MCU 复位或工作异常。如果遇到这种情况可以在 YL1628 的电源输入端串一个小磁珠把数字噪声隔离掉。5.2 按键失灵、误触发的排查经验按键问题比显示问题更隐蔽因为很多时候芯片本身是好的是电路或软件处理不当造成的。按键完全没反应先检查 DIO 的方向切换有没有做好。读按键时 DIO 必须从输出切到输入如果 DIO 一直保持输出模式读回来的数据永远是芯片输出阻抗和 MCU 输出电平打架的结果不是有效数据。用一个很简单的办法验证读按键的时候把 DIO 引脚在示波器上点一下看波形是不是正常的串行数据。有波形但数据不对说明时序有问题完全没有波形说明芯片根本没进入读按键模式。按键偶发失灵大概率是接触不良或干扰。按键走线太长且没有做滤波环境中的电磁干扰会在 K 引脚上产生毛刺导致按键状态被误判成按下或松开。对策是按键两端并联小电容走线尽量短必要时在 K 引脚串一个小电阻。按键重复触发非常典型的机械开关抖动问题。不能完全靠芯片硬件解决软件上的去抖逻辑要跟上。如果已经做了去抖仍然重复触发检查去抖的时间是不是太短。机械按键的抖动时间通常在 5~10ms去抖时间至少要在 10ms 以上才可靠。还有一类问题是多个按键同时按下时出现串键。矩阵扫描的原理决定了同时按下多个键时某些引脚的状态会比较复杂芯片返回的可能是多个键的组合值。我的建议是应用层明确这个产品支不支持多键同时按下不支持的话软件检测到多键状态直接丢弃本次扫描结果等按键逐个松开再重新扫描。5.3 国产化替换中遇到的兼容性问题国产化替换是很多团队正在做的事YL1628 替换原方案时我碰到过几个有意思的问题写出来给大家参考。第一次用 YL1628 替换时显示正常但亮度总觉得比原来的方案暗了一档。查了半天发现是亮度寄存器默认值不同初始化时重新按手册设置亮度档位就解决了。这提醒我国产芯片的指令虽然兼容但“兼容”不等于“一模一样的默认状态”替换之后要把关键寄存器重新初始化一遍不要依赖默认值。还有一个问题是延时参数不匹配。原来的方案里写了 5μs 的时钟延时换成 YL1628 之后通信偶尔出错。原因可能是芯片内部输入电路的边沿触发速度不同。把时钟频率从原来的 1MHz 降到 500kHz问题就消失了。这类通信类芯片时钟速度保守一点没有坏处1MHz 以上省不了多少时间反而增加不稳定因素。另外不同厂家的 1628 兼容芯片按键返回的键值数据格式可能会有差异。有的型号按键数据是 4 字节有的型号格式略有不同。替换之后一定要仔细看手册中的按键寄存器定义重新做一次键值映射别想当然直接沿用旧代码。6. 个人实操心得与扩展方向6.1 实际项目中的一点体会用 YL1628 这类芯片做了几个项目之后我有一个很深的感受小芯片也有大讲究。它看起来只是把显示驱动和按键扫描封装在一起但用好了整块面板的硬件设计和软件架构都变得干净很多。我最满意的一个项目是给一台设备做控制面板4 位数码管、12 个 LED 指示灯、12 个按键全部走一颗 YL1628MCU 只出了 3 个 IO。整块板子线路简单布板省心软件逻辑也清晰。当时我就在想如果是十年前这个方案至少要多出十几根飞线、两颗扩展芯片。还有一点是在国产化的大背景下这种芯片的供应链稳定性带来的好处是实打实的。方案定了就能拿现货打样、试产、量产节奏完全由自己掌控这在项目交付周期紧张的时候价值比芯片便宜几毛钱大得多。6.2 后续可以做的扩展YL1628 这类芯片的能力边界并不仅限于“数码管 按键”。我做过的扩展方向有这么几个。第一个是调光控制。芯片本身支持的亮度等级不算多但如果你要做的面板需要无级调光或者呼吸灯效果可以通过软件定时改写亮度寄存器实现平滑的亮度变化。实测下来只要刷新频率够高肉眼看起来就是连续的调光。第二个是级联扩展。当 LED 或按键数量超过单颗芯片的容量可以把多颗 YL1628 级联起来。每颗芯片用独立的 STB 片选CLK 和 DIO 可以复用这样 MCU 多消耗的只是每颗芯片一个 GPIO。我测试过两片级联驱动 16 位数码管加 20 多个按键稳定性没有问题只是软件里要区分当前操作的是哪一颗芯片。第三个是配合传感器和通讯模块做智能化面板。比如在面板板上集成温湿度传感器通过 MCU 把环境数据送到 YL1628 驱动的大屏显示或者给面板加一个通讯接口把按键状态上报到上位机。YL1628 的显示和按键能力作为人机交互的底层上面的业务逻辑可以随便扩展。如果你正准备做面板类产品的方案设计或者正在评估国产 LED 驱动 IC 的替代方案建议直接拿一颗 YL1628 回来按这篇文章的步骤搭个最小系统跑一遍。显示、按键、通信把这三块跑通了剩下的就是写业务逻辑的事了。做硬件方案开发动手永远比空想快实测过的方案才有底气放进量产清单。
返回列表