Overview

The TM1637 is an LED drive control circuit manufactured by Titan Micro Electronics. It integrates a 2-wire serial interface, an internal MCU digital interface, data latches, LED high-voltage drive, and a keyboard scanning circuit.

It is universally used to drive 4-digit 0.36" and 0.56" 7-segment LED display modules featuring a central clock colon (:) or decimal points. The TM1637 requires only two signal pins (CLK and DIO) to communicate with a microcontroller and provides 8 selectable LED brightness levels via internal PWM pulse duty control.

Quick reference

Operating voltage (VCC)3.3 V to 5.5 V DC (5 V nominal)
Display capacityUp to 6 digits ×\times 8 segments (4 digits typical on breakout)
InterfaceCustom 2-wire serial bus (CLK, DIO)
Brightness control8-level pulse width modulation (PWM) duty cycle control
Keyboard matrix8×28 \times 2 key-scan matrix input (16 keys)
Peak segment current50 mA per segment
Quiescent current<1 mA< 1\text{ mA}

Pinout

Standard 4-Pin Module Header

PinNameTypeDescription
1GNDPowerGround (0 V)
2VCCPowerSupply voltage (+3.3 V to +5.5 V DC)
3DIODigital I/OSerial Data Input/Output line (requires pull-up resistor)
4CLKDigital InputSerial Clock input line

Specifications

ParameterSymbolMinTypMaxUnitConditions
Supply VoltageVDDV_{DD}3.35.05.5VDC
Logic Input High VoltageVIHV_{IH}0.7VDD0.7 V_{DD}VDDV_{DD}VCLK, DIO
Logic Input Low VoltageVILV_{IL}00.3VDD0.3 V_{DD}VCLK, DIO
Segment Sink CurrentIOL1I_{OL1}305080mAVDS=0.5 VV_{DS} = 0.5\text{ V}, segment ON
Grid Source CurrentIOH1I_{OH1}203550mAVDS=VDD2.0 VV_{DS} = V_{DD} - 2.0\text{ V}, grid ON
Maximum Clock FrequencyfCLKf_{CLK}250500kHzCLK pin pulse rate

Communication protocol & Command set

The TM1637 uses a custom I2C-like 2-wire serial protocol (without I2C slave addressing). Data is transmitted LSB first.

Data Command Set

Command ByteDescription
0x40Write data to display register (Automatic address incrementing)
0x44Write data to display register (Fixed address mode)
0x42Read keyboard matrix data
0xC0 to 0xC5Set display memory address (Digit 1 = 0xC0, Digit 2 = 0xC1, etc.)
0x80 to 0x87Display OFF (0x80) / Display ON with brightness levels 1 to 8 (0x880x8F)

7-Segment Encoding Table (Common Anode)

Bit mapping: [DP/Colon, g, f, e, d, c, b, a]

CharacterSegment Byte (Hex)CharacterSegment Byte (Hex)
00x3F50x6D
10x0660x7D
20x5B70x07
30x4F80x7F
40x6690x6F

Wiring

TM1637 Module PinMicrocontroller (Arduino Uno / ESP32)
GNDGND
VCC5V (or 3.3V)
DIODigital Output Pin (e.g. GPIO2)
CLKDigital Output Pin (e.g. GPIO3)
Note

Standard TM1637 modules incorporate 10 kΩ10\text{ k}\Omega pull-up resistors on CLK and DIO, along with 100 pF100\text{ pF} filtering capacitors. If communicating at speeds above 250 kHz, ensure clock signal pulse widths are at least 2 µs.

Common mistakes

  • Treating TM1637 as a standard I2C device: Although CLK and DIO resemble I2C, TM1637 does NOT use 7-bit slave addresses (0x000x7F). Standard I2C libraries (e.g. Wire.h) will not work.
  • Forgetting to send Display Control command (0x88..0x8F): Writing segment data to 0xC00xC3 alone will not turn on the display. Software MUST send the Display ON command (e.g. 0x8F for max brightness) after updating memory.
  • Clock colon control on 4-digit modules: The central colon (:) is typically wired to the Decimal Point (DP - Bit 7) of Digit 2 (0xC1). Setting bit 7 to 1 on Digit 2 illuminates the colon.

Notes

  • Low power consumption allows direct USB or battery operation.

Assets & downloads