做电池供电产品的工程师,大多被"灭屏功耗"折磨过。产品明明没显示,整机电流却还有几百微安,电池几个月就见底。换芯片、加电容、翻手册......排查一圈,最后发现卡在几个容易被忽略的细节上。
这篇文章不绕弯子,把 LCD 驱动芯片(1621 类)灭屏低功耗的三个关键点拆开讲清楚,附可直接抄的代码。看完你就能自己判断:功耗高,到底卡在哪一步。
01 先认清一个事实:显示状态下,1621 天生做不了低功耗
很多人的第一个误区,是希望芯片"边显示边省电"。但先要接受一个现实:1621 在显示时无法做到低功耗,一般都有几百个 uA。
这不是芯片缺陷,而是这类 LCD 驱动器的物理特性------显示需要持续刷新、需要偏置电压输出,这部分功耗省不掉。
所以正确的策略不是"显示时省电",而是"灭屏时把功耗做到极致"。把期望放对位置,后面的优化才有意义。
记住一个判断:1621 的功耗分两档------显示档(几百 uA,正常)和休眠档(可以做到很低)。真正要抠的,是休眠档。
02 灭屏低功耗第一步:先关时钟,再关偏置
1621 的功耗主要来自两处:系统时钟(System Clock)和 LCD 偏置发生器(Bias Generator)。进入休眠前,必须执行两条命令:
SYS DIS :关闭系统时钟和 LCD 偏置发生器;LCD OFF:关闭 LCD 偏置发生器。这两条命令的复位位均为 YES,即复位后即可生效。
| 命令 | 命令代码 | D/C | 功能 | 复位 |
|---|---|---|---|---|
| SYS DIS | 100-0000-0000-X | C | 关闭系统时钟和LCD偏置发生器 | YES |
| LCD OFF | 100-0000-0010-X | C | 关闭LCD偏置发生器 | YES |
| LCD ON | 100-0000-0011-X | C | 打开LCD偏置发生器 | |
| SYS EN | 100-0000-0001-X | C | 打开系统时钟 |
两条命令都不复杂,但顺序和配套动作常常被漏掉------尤其是下面这一步。
03 最容易漏的一步:通讯口要"放手"
这是最容易踩坑、也最容易被忽略的一步。
1621 的通讯脚位(CS、WR、DATA)内部带有上拉。休眠时如果 MCU 端还把这些脚保持为输出,内部上拉电阻就会持续产生漏电流------命令发得再对,功耗照样下不来。

正确做法只有两句话:
-
进入休眠前:将驱动端 MCU 通讯口设置为输入上拉 或输入浮空;
-
唤醒后:恢复为正常通讯口。
一句话总结:让通讯口"放手",而不是"握紧"。
04 一段可以直接抄的休眠代码
以常见的 GCC 编译器环境为例,完整流程如下(具体寄存器名以实际 MCU 为准):
sendcmd(SYSDIS); // 关闭系统时钟和LCD偏置发生器 sendcmd(LCDOFF); // 关闭LCD偏置发生器 _pbpc0 = 1; // CS 口设置为输入上拉 _pbpu0 = 1; _pbpc1 = 1; // WR 口设置为输入上拉 _pbpu1 = 1; _pbpc2 = 1; // DATA 口设置为输入上拉 _pbpu2 = 1; GCC_HALT(); // 芯片进入休眠 // 唤醒后恢复 _pbpc0 = 0; // CS 口设置为输出 _pbpu0 = 1; _pbpc1 = 0; // WR 口设置为输出 _pbpu1 = 1; _pbpc2 = 0; // DATA 口设置为输出 _pbpu2 = 1; sendcmd(SYSEN); // 打开系统时钟 sendcmd(LCDON); // 打开LCD偏置发生器
注意:具体通讯口的设置输入输出方式,以客户使用的 MCU 为准。
05 三个避坑提醒
-
顺序不能乱:先执行 SYS DIS + LCD OFF,再改通讯口方向,最后才让芯片休眠。
-
唤醒后记得恢复:通讯口要重新设为输出,并执行 SYS EN + LCD ON,否则显示起不来。
-
别在显示状态下测低功耗:显示时几百 uA 是正常的,要测就测灭屏状态,否则永远测不出"问题"。
以后遇到 1621 这类 LCD 驱动芯片功耗下不来,不必急着怀疑芯片,先按这个顺序自查:显示状态是不是被误当成休眠状态测了?SYS DIS 和 LCD OFF 执行了吗?通讯口是不是还保持输出?
三步到位,功耗才能真正降下来。如果你的项目正在做低功耗 LCD 方案,欢迎一起交流------兼容选型、软硬件对接,都可以聊。