做倒计时器、电子秒表、给小车显示速度或电压,四位数码管是比液晶屏更直白的存在,几个大大的红字一眼就能看清。而TM1637这款数码管模块最大的好处是省引脚:它内置了驱动芯片,主控只要用CLK和DIO两根控制线,就能点亮一整排共四位数的数码管,还自带扫描和消隐处理,接线比1602省一半以上。这篇把这两根线怎么接、显示数字怎么控制、亮度怎么调讲透。
TM1637引脚:CLK、DIO、VCC、GND四脚
模块上一共四只脚:VCC接5V、GND接地、CLK是时钟线、DIO是数据线,个别模块也叫DIN。CLK和DIO看起来像I2C,但TM1637用的是自家改写的两线协议,公共库都帮你封装好了,不用手动去数时序。它工作电压3.3到5V,Arduino直接接5V最省心。数码管一般是共阳的4位加一个冒号点,做时钟时中间两点还能闪一亮表示秒。

接线图:两线即可点亮
接法非常省事:VCC接5V,GND接地,CLK接Arduino的数字口D2,DIO接数字口D3。想要数据线的位置也能随意换,但CLK和DIO一旦接反,屏幕就死活不亮或显示乱码。接好后在Arduino库管理器里安装TM1637Display这块库,它能帮你把数字、字符串、甚至是十六进制段模板直接写成段码,省得自己去查字模表。

代码:showNumberDec就能显示数字
用TM1637Display库,代码很利落:include头文件后声明display(2, 3),setup里调用setBrightness(5)把亮度设到合适档位,loop里用showNumberDec(1234)把整数显示到四位上,要显示多位数还能用showNumberDecEx加冒号。做秒表就用millis()计时,每1000毫秒把秒数show一次,配合中间冒号闪动就是个小电子钟。想显示字符就从0x90这类段码数组里取模板,灵活度很高。
常见坑:亮度档位和冒号
亮度范围是从0到8,数值越低越暗、8最亮,0是最低亮度不是熄灭,设计到夜里使用别把灯做太刺眼。显示五位及以上的数会溢出只显示后四位,要显示更长信息得换八位版本或拼接。另外这块芯片本质靠扫描点亮,刷新太快会轻微闪烁,正常应用看不出,但如果遇到闪烁就是refresh太频繁,适当加延时即可。


亮度0到8那档解释得明白,夜里做时钟档位别调太亮刺眼
CLK和DIO接反不亮这条太真实了,我折腾半天最后发现就是插反了
两线就能好四位显示确实省引脚,做秒表靠millis这思路直接能上手