MAX7219 LED Matrix

A serial-input common-cathode LED driver IC paired with an 8x8 dot-matrix, controlling all 64 LEDs over three signal wires.

MAX7219 LED Matrix: One to four 8×8 modules

What is the MAX7219 LED Matrix?

The MAX7219 LED matrix module combines the Maxim/Analog Devices MAX7219 display driver IC with an 8x8 dot-matrix of 64 LEDs on a small carrier PCB. The driver handles multiplex scanning, per-segment control, brightness, and (for 7-segment use) BCD decoding entirely on-chip, so the microcontroller only shifts display data in over a simple serial link. A single external resistor sets the peak segment current for every LED.

Control uses a 4-wire serial interface: DIN, CLK, and LOAD/CS for data, plus V+ and GND. The shift register clocks at up to 10MHz. A DOUT pin lets modules daisy-chain, so one to four (or more) 8x8 modules can be strung together and driven from the same three signal lines, which is why these are sold as single, dual, and quad matrix strips.

On-chip control registers provide digital brightness in 16 steps, a scan-limit register to display 1 to 8 digits (or rows), an optional code-B decode mode for 7-segment digits, a display-test mode that forces all LEDs on, and a 150uA low-power shutdown that retains the display data. The part drives common-cathode displays and is specified for a 4.0 to 5.5V supply.

Specifications

Operating supply voltage (V+)
4.0 to 5.5V (5V nominal)MAX7219/MAX7221 datasheet (Analog Devices / Maxim Integrated)
Max peak segment current
40mA (set by RSET, min 9.53k ohm)MAX7219/MAX7221 datasheet (Analog Devices / Maxim Integrated)
LEDs driven per IC
64 (one 8x8 matrix) or up to 8 digitsMAX7219/MAX7221 datasheet (Analog Devices / Maxim Integrated)
Serial interface
4-wire (DIN, CLK, LOAD/CS, DOUT), 10MHz max clockMAX7219/MAX7221 datasheet (Analog Devices / Maxim Integrated)
Digital brightness control
16 steps via intensity registerMAX7219/MAX7221 datasheet (Analog Devices / Maxim Integrated)
Scan-limit range
1 to 8 digitsMAX7219/MAX7221 datasheet (Analog Devices / Maxim Integrated)
Logic-high input threshold (VIH)
3.5V minMAX7219/MAX7221 datasheet (Analog Devices / Maxim Integrated)
Shutdown supply current
150uA (data retained)MAX7219/MAX7221 datasheet (Analog Devices / Maxim Integrated)
IC package
24-pin DIP or SOMAX7219/MAX7221 datasheet (Analog Devices / Maxim Integrated)

Every specification is cited to its source.

Circuit requirements

  • Powers from a 4.0 to 5.5V rail; wire V+ to Arduino 5V and share a common GND. Do not run the driver from 3.3V, since the segment current and brightness are specified at 5V.
  • Control needs only three signal lines (DIN, CLK, LOAD/CS) plus V+ and GND, regardless of how many modules are chained.
  • The logic-high input threshold (VIH) is 3.5V minimum, so 5V logic is ideal. A 3.3V microcontroller (ESP32, Pi Pico, STM32) sits below the guaranteed high level and may need a level shifter for reliable DIN/CLK/CS timing.
  • The ISET pin connects to V+ through the RSET resistor, which sets the peak segment current for all LEDs; module boards ship this resistor on-board (commonly around 10k ohm). Its minimum value is 9.53k ohm, which sets roughly 40mA per segment; going lower pushes current past the 40mA rating.
  • To cascade, wire each module's DOUT to the next module's DIN and bus CLK and LOAD/CS to all of them. Data appears at DOUT 16.5 clock cycles after it enters DIN, so the host must clock 16 bits per chained device before latching.
  • The IC drives common-cathode displays; the on-board matrix is already wired to match, so use a MAX7219 library and select the correct hardware/orientation type for your specific module version.
  • For matrix use, set the decode-mode register to no-decode (0x00); the code-B BCD decoder is only for 7-segment digits and will otherwise render font glyphs instead of individual pixels.
  • A fully lit 8x8 module at high brightness draws substantial current; when chaining several modules, power them from an external 5V supply rather than the Arduino's onboard regulator to avoid brownouts.

Board compatibility

The MAX7219 LED Matrix connects to any of the microcontrollers supported in Tinkered.

Common MAX7219 LED Matrix mistakes

Leaving decode mode enabled for a matrix

On a matrix you must write 0x00 to the decode-mode register (0x09). If the code-B BCD decoder is left on, the driver interprets your pixel data as 7-segment font digits and the display shows garbage instead of the dots you set.

Forgetting shutdown and scan-limit setup

The display is blanked on power-up. If you never write the shutdown register to normal operation and set the scan-limit register to all 8 digits, the panel stays dark or lights only a few rows even though your data is loading.

Under-powering a chain of modules

Each fully lit 8x8 module can draw a lot of current at 40mA per segment. Chaining four modules off the 5V pin of a USB-powered Arduino can brown out the board; use a dedicated 5V supply and common ground.

Wrong or missing RSET resistor

With the ISET pin left open (no RSET) there is no segment current and the display stays dark. Fitting a resistor below the 9.53k ohm minimum drives segments past their 40mA rating, risking LED and driver damage. Keep the on-board resistor or adjust brightness digitally via the intensity register instead.

Scrambled or mirrored output when chaining

Generic MAX7219 modules differ in physical LED orientation and row/column mapping. Selecting the wrong hardware type in a library (for example FC16 vs GENERIC vs ICSTATION in MD_MAX72XX) makes text appear upside down, mirrored, or split across the wrong modules even though wiring is correct.

Popular MAX7219 LED Matrix projects

Scrolling text marquee

Chain four 8x8 modules into a 32x8 strip and scroll messages, clocks, or sensor readouts across it using a MAX7219 text library.

Digital clock display

Pair the matrix with an RTC module to show the time in a compact scrolling or static font, a classic desk-clock build.

8x8 dot-matrix games

Snake, Pong, and falling-block games map neatly onto the 64-pixel grid, using the driver's fast full-frame updates for smooth animation.

Audio VU meter / spectrum visualizer

Drive the columns from an analog audio envelope or FFT bins to turn the matrix into a bar-graph level meter that reacts to sound.

Notification and status board

Show icons, weather glyphs, or notification counts from a connected ESP32/ESP8266, updating the matrix over Wi-Fi.

Build with the MAX7219 LED Matrix.

Drop the MAX7219 LED Matrix into a circuit, write firmware, and simulate it in your browser, then deploy to real hardware. All in one editable Tinkered project.