TM16C23字段式LCD驱动芯片:低功耗仪表显示方案详解

发布时间:2026/9/18 8:59:28
TM16C23字段式LCD驱动芯片:低功耗仪表显示方案详解 1. 先说清楚字段式LCD凭什么还能再战十年这个标题第一眼看上去有点老。现在满世界都是IPS TFT LCD手机屏幕动辄几百万像素OLED都卷到折叠屏了谁还在意一块只能显示数字和几个图标的字段式LCD但是如果你做过电池供电的仪表、温控器、智能电表、手持终端就会明白一个反直觉的事实这类设备里字段式LCD不是将就的选项而是算过账之后的理性选择。TM16C23就是这类场景下的专用显示驱动控制芯片准确说是一颗低功耗、字段式段码式LCD显示驱动专用芯片。它做的事情非常简单通过MCU发过来的I2C指令把显存里的数据映射到LCD的COM口和SEG口上驱动液晶字段点亮或熄灭。整个过程不需要MCU持续参与芯片自己完成扫描、刷新、偏压管理MCU只需要在画面发生变化时写一次数据然后就可以回去睡大觉。我最早接触这颗芯片是因为一个温控器项目。产品要求两节AA电池供电目标是整机平均功耗做到10微安以下液晶屏需要显示温度数值、模式图标、Wi-Fi状态、定时符号等十几个字段不要求任何点阵级显示。一开始团队还在纠结要不要上带背光的IPS TFT屏后来一算账TFT屏加背光即使最省电的方案待机电流也要几十毫安电池根本扛不住一个月。换字段式LCD之后显示部分整个驱动电流压到微安级别设备续航直接从周变成年。这种量级差距不是靠MCU技巧能追回来的。所以这篇内容不打算泛泛介绍字段屏原理而是围绕TM16C23这颗芯片把选型理由、硬件设计、软件驱动、功耗调优、踩坑记录一次讲透。适合正在做低功耗仪表、家电面板、智能硬件的人参考也适合那些刚想转低功耗方向、对段码屏还停留在老古董印象的人看看它到底是怎么在超低功耗场景里活成主力的。2. 液晶不耗电但驱动液晶很考验芯片功力2.1 字段屏和TFT屏的能耗差在哪先说个很多人误会的事LCD本身不发光所以显示这一步理论上只消耗极小的功率。TFT LCD费电主要费在背光源上那块均匀照亮整个屏幕的背光板动辄几十毫安的消耗才是续航杀手。IPS TFT屏还得配偏光片、彩色滤光片、TFT阵列基板驱动方式复杂刷新频率高电容负载大每一帧都要翻转大量的像素电容。而字段式LCD完全不同。它没有背光显示内容靠环境光反射或者透过液晶本身在电场作用下改变分子排列让光线透过或遮挡。每个字段就是一块预定义的电极图形你要显示温度两个字要么用现成的图标要么用7段码搭数字。它的物理结构决定了它不需要持续刷新只要电场保持液晶分子就保持一定的排列状态显示内容可以稳定保持几乎不耗额外的动态功耗。但这里有个关键点液晶不能通直流电。长期加直流电压会电解液晶材料导致不可逆的劣化。所以驱动芯片必须用交流波形驱动也就是带交替极性的方波或类正弦波。这就意味着即使画面完全不变芯片也要持续产生交流驱动波形把COM口和SEG口上的电压周期性翻转。这部分功耗和刷新率直接相关也和偏压架构有关。2.2 TM16C23在这条赛道上的分工TM16C23的作用就是把MCU从持续产生驱动波形这件事里解放出来。它内部自带振荡器、显存和波形发生器。MCU通过I2C把要显示的数据写进显存芯片就自动完成剩下的工作扫描COM、切换SEG电平、维持偏压、刷新波形。整个过程MCU可以进入休眠芯片自己维持显示这是低功耗系统中最关键的分工逻辑。我拿它和常见的HT1621系列对比过。HT1621也是段式LCD驱动器很多电工都熟3线串行接口支持1/2和1/3偏压资源很类似。但TM16C23用的是I2C接口只用两根线硬件连接更简洁而且它的低功耗设计做得更细休眠电流、动态工作电流的数据都很接近数据手册标称值实测下来没有虚标。对于需要严格抠功耗的项目这是很实在的优势。还有一点值得提TM16C23在一颗芯片里同时管了LCD偏压生成和显示刷新。这意味着外围电路非常精简一颗偏压电阻分压网络几颗电容加上MCU的两根I2C线就能点亮整块屏幕。对比一下用GPIO直接驱动COM和SEG的做法那要占掉MCU十几个引脚刷新还得靠定时器中断功耗和代码复杂度都不可控。所以这类专用芯片的意义不只是省引脚更在于省心和省电。3. 硬件电路设计把低功耗的下限焊死在板子上3.1 最小系统就五六个元件但别小看它们先看最小系统。TM16C23的电源电压范围大概在2.4V到5.2V区间具体以最新数据手册为准正好覆盖两节碱性电池串联的2.4V到3.4V变化范围也覆盖USB供电的5V场景。VDD接电源VSS接地I2C的SCL和SDA分别接MCU的对应引脚再给这两根线加上拉电阻。然后就是偏压网络。偏压网络怎么设计决定了你的LCD显示对比度和功耗。字段式LCD一般需要多个电压等级来避免串扰。简单解释就是在1/4占空比4个COM模式下某一时刻只有1/4的字段被有效驱动其他字段需要通过偏压来保持非选通状态。如果偏压不合适非选通的字段会半亮不亮也就是所谓的鬼影。TM16C23这类芯片通常会提供1/2偏压和1/3偏压两种选择。1/3偏压的意思是把LCD驱动电压分成三档VDD、2/3VDD、1/3VDD非选通电极被钳在中间电平液晶两端电压低于阈值就不会误点亮。偏压比例和外接电阻分压网络直接相关下图这种分压结构属于这类芯片最常见的参考设计VDD -- R1 -- LCD_V1 -- R2 -- LCD_V2 -- R3 -- VSS三个电阻串联从中间抽头引出VLCD参考电压。实际阻值需要根据LCD面板的电容负载和驱动电压来选。原则是阻抗不能太大否则充电速度跟不上扫描时序显示会变淡也不能太小否则分压网络本身就成了一个持续的耗电通路。这个平衡点就是典型的低功耗设计细节。我做过一个实测对比在3.3V供电、1/4 duty、1/3偏压的配置下分压电阻选100kΩ级别分压网络的静态电流大概在几十微安量级如果选到1MΩ级别静态电流能压到几微安但显示刷新时前沿变缓快速切换画面会有轻微拖影。所以具体选多少要看你的刷新场景。固定显示内容为主的应用大胆用高阻值内容频繁变动的应用还是要留够充电裕量。3.2 偏压电阻和电容的数值别照抄参考设计很多开发板原理图上直接标了100kΩ/100nF很多人就照抄了。但偏压电阻的阻值选取跟你选的LCD面板参数是强相关的。先看电容。COM和SEG线对地有寄生电容LCD面板越大、走线越长电容越大。驱动波形翻转时这些电容需要充电放电而充电电流完全由偏压网络的输出阻抗决定。如果你用1MΩ级别的电阻分压再加上驱动频率较高充电时间常数可能已经接近一个扫描周期的量级显示就会不均匀、末尾的段码明显偏淡。再看功耗。电阻分压网络是一直通电的阻值越小功耗越大。同样是3.3V供电10kΩ组合的分压网络光是漏电就有330微安这在待机电流目标是个位数的系统里不可接受。所以我的习惯是先用示波器看板子上的实际驱动波形在满足显示均匀的前提下尽量往高阻值方向靠。偏压电容其实也有讲究在驱动电压节点对地放一颗10nF到100nF的电容可以稳定电压、抑制开关噪声但同时它也会在每一帧驱动翻转时成为充放电负载。电容越大波形越稳功耗越高。这个平衡要靠实测多试几组组合。一个小技巧如果你用的LCD面板比较小比如那种显示4位数字加几个图标的小屏可以放心从1MΩ起步很多情况下3.3V供电时显示效果依然清晰。大面板或者走线特别长再往下降阻值。调试的时候手边备几组贴片电阻现场换着试比在仿真里纠结精确值实用得多。3.3 电源去耦和I2C上拉两个容易被忽略的功耗陷阱低功耗系统的电源设计讲究的是稳定但不浪费。TM16C23在动态刷新时瞬间电流会有波动VDD旁边必须放一颗1uF左右的陶瓷电容靠近芯片电源脚负责吸收瞬态电流。这颗电容别省也别用太大的——100uF的电解电容不但体积大而且等效串联电阻高高频响应反而不如小容量的陶瓷电容。I2C上拉电阻的取值是又一个低功耗细节。上拉电阻太小总线静态电流大上拉电阻太大边沿变缓通信容易出错。标准I2C速率100kHz下4.7kΩ是常见值但我建议在满足时序要求的前提下试10kΩ甚至更高。原因很简单总线在空闲状态时SCL和SDA都是高电平每个上拉电阻上都在持续消耗电流。3.3V下用1kΩ上拉两根线加起来就是6.6毫安对电池供电设备来说是灾难。低功耗产品里很多老工程师会把I2C上拉拉到几十kΩ配合低速通信完全没问题。另外GPIO在掉电状态下的去向也要注意。TM16C23如果接了独立的电源开关来自MCU的SCL和SDA引脚可能在芯片断电时仍然保持高电平电流会通过引脚的保护二极管反向灌进芯片电源轨。设计时要么保证电源时序让MCU先掉电要么在I2C线上串联一颗小电阻做隔离。这种细节看起来不起眼但放到整机待机电流的指标上0.5V的二极管压降加上几毫安的灌电流足够让你的功耗测试报表难看。4. 软件驱动从写显存到点亮字段的完整路径4.1 I2C通信的基本动作以及为什么它天生适合低功耗TM16C23采用I2C通信从机地址是固定的具体地址要看芯片手册的AD引脚配置。I2C协议相比SPI和并口最大的优势是只需要两根线而且多设备挂总线上互不干扰。更重要的是I2C的通信速率可以压得很低比如10kHz甚至更低这直接降低了总线翻转带来的动态功耗。软件上你只需要实现标准的I2C写操作。一般流程是发起始位发送从机地址加写位等待应答然后连续发送若干个字节的控制命令或者显示数据最后停止位。TM16C23的显存是按地址排列的你要更新哪个字段就往对应地址写数据。这个过程有个省电技巧只在字段内容发生变化时才写显存画面不变时完全不要碰I2C总线让MCU和芯片都保持安静状态。我用一个温控器的显示流程来举例。系统里有一个温度值每30秒更新一次更新时MCU从传感器读出温度计算出个位、十位、小数点后一位各自的段码组织成几个字节通过I2C写入TM16C23的显存然后立即进入休眠。TM16C23拿到数据后自行刷新显示波形MCU这一轮工作总耗时不超过2毫秒平均电流的贡献非常小。4.2 显示数据怎么映射到字段上7段码和图标的关系段码映射是很多人第一次接触字段式LCD时最懵的地方。一个数字8由7个段a到g加上一个小数点dp组成共8个bit。你写一个字节进显存每个bit对应一个段。但这个对应关系并不是标准的完全取决于你的LCD屏厂是怎么排布电极的。同样的5在A屏上的段码到B屏上可能就乱了。所以第一步永远是拿到屏厂的电极排布图通常叫pad map或者segment map对照TM16C23的SEG引脚编号建立一个映射表。我习惯直接写一个全局数组每个显示元素数字、图标、符号对应一个位掩码在代码里用查表的方式把要显示的内容翻译成显存的bit。这样做的好处是清晰后期屏厂改了电极排布只需要改这一个数组不用动业务逻辑。如果想显示中文那就得看你的LCD面板的字段设计。字段屏上的中文其实是一个设计好的图标比如运行停止故障这类固定文字要么做成一个整块字段要么用笔画拼出来。TM16C23并不关心这些它只负责把显存里的位映射到COM/SEG交叉点上。真正的中文显示是面板和你的映射表合谋的结果。点阵屏或者IPS TFT屏能自由显示任意中文那是另一码事也是字段屏的边界所在。4.3 寄存器配置顺序决定了一上电的画面是不是花屏TM16C23这类芯片上电后通常处于系统关闭或低功耗状态你必须先送一串初始化命令它才开始工作。顺序很重要我见过不少人在这一步踩坑出来的画面要么是全亮要么是乱码闪动。推荐顺序是这样的先关闭显示输出再配置系统时钟和偏压模式然后清空显存把显存所有字节写0最后开启显示输出。为什么最后一步才开显示因为如果显存里是随机值或者残留数据你开着显示去清显存屏幕会瞬间闪一下或者显示乱码。严格的做法是先把显示输出关掉等显存清零之后再打开。偏压模式和占空比的配置要和你的LCD面板规格严格一致。比如你的屏是4个COM1/4 duty、1/3偏压那就必须把寄存器配置成对应模式否则显示对比度会差甚至出现严重串扰。这里有个经验很多人以为偏压配置越高越好1/3偏压肯定比1/2偏压显示清楚。实际不一定。1/3偏压的驱动电压中间档更多驱动波形更接近正弦确实能减少串扰但它需要更高的LCD驱动电压才能达到同样的显示对比度。如果系统供电只有2.7V1/3偏压可能让显示偏淡。这种情况下1/2偏压反而是更合适的选择。4.4 闪烁字段一个被低估的功耗来源很多产品需要某个图标闪烁提示比如报警符号闪动。实现闪烁有两条路一是MCU定时器中断每隔500ms改写一次显存让字段交替亮灭二是利用TM16C23自带的闪烁功能如果芯片支持。第一种思路最简单但MCU要持续唤醒。500ms一次的中断对CPU负担不大但每次处理都是一次唤醒、执行、再睡的过程平均功耗不可避免地上升。而且闪烁的字段越多MCU的唤醒频率越高。第二种思路是把闪烁控制交给芯片MCU写完显存就下班芯片内部硬件自己控制闪烁频率和相位功耗几乎无感。我建议做产品时优先考虑后者。哪怕芯片自带的闪烁频率和你的产品需求不是刚好一致也要看能不能接受一段代码里自己实现闪烁看着很灵活但在低功耗系统里任何实时性的代价都是功耗能交给硬件的就绝不让软件扛。5. 功耗实测与排查经验数据比感觉靠谱5.1 实测数据静态、动态、休眠三个状态分开测项目验收时功耗数据必须经得起拷问。我的测试方法是把工作状态拆成三块显示静止时的整机电流、显示内容刷新时的瞬时电流、以及系统休眠时的电流。用TM16C23搭出来的典型低功耗系统在3.3V供电、1/4 duty、1/3偏压、显示内容静止的情况下整机含MCU休眠电流能做到10微安以下。芯片自身的休眠电流我实测大概在1微安级别具体值要以你拿到的那批芯片为准但量级应该在这个范围附近。刷新时的瞬时功耗则要看I2C通信速率和显存写入内容。以100kHz的I2C速率、写入4字节显存为例一次完整通信的持续时间大概在500微秒以内平均电流峰值在几百微安到几毫安不等。这部分因为持续时间极短折算到平均功耗里基本可以忽略不计。真正需要注意的是不要让MCU频繁唤醒去刷新——每唤醒一次MCU启动、ADC采样、通信传输哪个不是耗电大户休眠电流的测试要特别注意测量方式。用万用表的电流档直接串进去测可能因为万用表的采样率太低漏掉瞬间的电流尖峰。更靠谱的做法是用一个低阻值的采样电阻串联在电源通路里用示波器观察电阻两端的电压波形再换算成电流。这样才能看到真实的启动浪涌和休眠电流波形。我见过很多人测出来的待机电流偏低其实是万用表的分辨率不够把微安级别的尖峰平均掉了看到的只是看起来很美的数字。5.2 屏幕均匀性差先查偏压再查时序如果你点亮后发现屏幕左侧清楚、右侧发淡或者某些段码明显比别的暗排查路径很固定。第一步查偏压。用示波器量VLCD节点电压是否稳定波形是否有跌落。如果电压不稳大概率是偏压网络阻抗太高或者偏压电容不够芯片在扫描时拉载导致电压跌落越靠近扫描末端的位置越明显。解决办法是降低分压电阻阻值或者加大偏压电容。第二步查扫描时序。TM16C23的扫描频率是否和面板匹配。有些面板对驱动频率有要求频率太低会闪烁频率太高则功耗上升。用手电筒照着屏幕能看到肉眼可见的闪烁那就是频率偏低了。调整芯片的振荡器配置或者检查是不是电源电压偏低导致振荡器频率下降。第三步也是很多人忽略的LCD面板的导电胶条或者PCB焊盘接触问题。字段式LCD通过导电橡胶条或者金属pin脚连接到PCB压接不良会导致某些COM或SEG接触电阻变大显示变淡。这种问题用示波器量驱动波形是看不出来的因为波形正常只是过不去接触阻抗。先用万用表量一下COM和SEG到芯片引脚之间的导通电阻电阻值超过几十欧姆就要检查连接方式了。5.3 这三个坑我分别都掉进去过第一个坑偏压网络的地接错了位置。原理图上VSS是个符号实际PCB上却有模拟地、数字地、功率地的区分。一开始我把偏压电阻的接地端接到了功率地回路里而功率地正好经过一个DC-DC电感的回流路径纹波很大。结果屏幕出现了缓慢的明暗波动查了两天才定位到是地线噪声干扰了偏压基准。最后把偏压地单独引线回到芯片VSS引脚附近问题立刻消失。第二个坑过早进入休眠模式。有个版本的固件里我在完成通信后立刻让MCU进入deep sleep但TM16C23的I2C从机还在处理最后一批数据。偶尔出现屏幕显示内容不完整原因就是MCU的I2C外设在芯片还没完成应答时就已经关掉时钟了。后来在写完最后字节之后加了一个小的延时或者确认芯片的应答信号再睡就稳定了。第三个坑显存清零时机不对。有一次改版后屏幕开机时总是闪一下全亮画面。排查到最后发现是新版固件初始化顺序问题我先开显示输出再执行显存清零。开机瞬间芯片内部显存恰好是0xFF所有字段全亮闪了一帧后才清掉。改成先清零、后开显示开机画面就干净了。这就是我前面说初始化顺序的重要性属于看起来小但体验影响很大的细节。6. 从TM16C23看字段式LCD的选型边界6.1 什么情况下该选它什么情况下果断放弃没有万能芯片TM16C23的适用场景非常明确。如果产品具备这些特征它是近乎完美的选择需要显示的内容是固定的数字、字母、符号的有限组合供电是电池特别是纽扣电池或者两节AA这种能量有限的来源设备大部分时间处于静态显示状态很少快速刷新外壳可以做成正面平整不透明或者半透明的造型不需要显示复杂图形图像。反过来如果产品要求显示动态波形、地图、彩色图表、自由布局的字符、视频画面那就完全不适合字段屏。这种需求选IPS TFT加背光是唯一出路功耗和成本的代价只能接受。还有人会问用低成本小尺寸的单色点阵屏来替代字段屏行不行可以但点阵屏需要MCU持续刷新即使在静态画面下也要反复扫描栅极和源极功耗比字段式LCD高一个数量级。这也是为什么在许多超低功耗仪表里面字段式LCD依然是标准答案。从驱动层面看TM16C23这类芯片还特别适合替换老掉牙的直驱方案。很多早期仪表用的是MCU的IO直接驱动8段LCD一个IO控制一段引脚占用很多软件又累只能实现极其简单的显示。升级到TM16C23MCU的引脚开销直接降到2个还多了片内显存和亮度管理代码量也能精简不少。6.2 显存够不够用决定你的屏幕能做多复杂TM16C23能驱动多少个字段取决于它的显存大小和COM/SEG扫面数量。一般来说这类芯片支持若干个COM和SEG的组合显存里对应若干字节。你要做的第一件事就是数一数你的LCD面板上一共有多少个需要独立控制的段然后对照芯片的规格看是否放得下。如果不小心超出了芯片的最大驱动能力不是简单加个字段就行而是要换更大型号的驱动芯片或者分割成两片芯片搭一个多总线架构。这种改动会影响硬件设计、PCB尺寸、功耗和成本所以选面板和选芯片这两件事一定要放在一起做别等面板都开模了才发现芯片驱动不了。还有一个小细节字段数不是单纯数显示字符个数。一个7段数字有7个段加小数点就是8个段一个8.8两位数字就是16个段一个普通图标可能就一个段但是用笔画拼出来的汉字一个字可能是十几个段。我实际遇到过客户想显示温度两个字觉得不就是两个图标吗结果因为用笔画拼一个字用了一堆段整个显存预算直接超了一半。6.3 和HT1621、TM1621等同类芯片怎么互相替换做产品最怕芯片断货所以选型时我一定会看有没有可替换的备选方案。TM16C23属于天微电子的产品线和同系列的TM1621、乃至早年盛行的HT1621这类段式LCD驱动芯片在功能和封装上有很多相似之处。如果你之前的项目用了HT1621想转到TM16C23主要工作就是重写驱动层的I2C操作———HT1621是3线串口CS、WR、DATATM16C23是I2C硬件引脚和应用层逻辑都不完全一样代码不能直接复用。反过来如果TM16C23供货紧张想临时换回HT1621除了通信接口的差异还要检查偏压模式和占空比支持是否一致以及显存地址映射是否兼容。我的经验是在原理图阶段就把接口设计得灵活一点比如I2C的SCL/SDA用普通GPIO模拟这样万一换了芯片只要改驱动层硬件不用大动。虽然模拟I2C比硬件I2C略费代码但带来的供应链灵活性绝对值回票价。另外提醒一句天微的芯片命名虽然有规律但随着产品迭代不同批次的功能细节可能略有差异。每次拿到新的芯片型号别只看型号相似就当替换件一定翻最新数据手册核对关键电气参数。芯片选型这种事稳妥永远比新奇重要。在实际项目中我最后选的方案常常不是表现力最强的而是系统综合成本最低的。显示方案和电源方案、MCU选型、外壳结构是绑在一起的。TM16C23这颗芯片能把显示功耗压到几乎可以忽略不计让MCU有更多精力处理传感器和通信也让电池容量选型可以往小里算、往轻里做这种整体系统最优的思路比拧着一个屏幕参数较劲有用得多。