Reverse Engineering a Commercial Dryer 9‑Digit LED Dot Matrix Display

by Voltage Ventures in Circuits > Arduino

436 Views, 4 Favorites, 0 Comments

Reverse Engineering a Commercial Dryer 9‑Digit LED Dot Matrix Display

20260204_205147.jpg
20260204_193310.jpg
20260130_200350.jpg
20260126_073647 (1).jpg

Commercial dryer machines often use custom LED dot‑matrix displays instead of simple 7‑segment LEDs. These displays show time, error codes, status messages, and animations — all driven by minimal hardware and very clever multiplexing.

In this project, I reverse-engineered the dot‑matrix display system from a commercial dryer, focusing on:

  1. How 9 dot‑matrix digits are driven
  2. How rows and columns are multiplexed
  3. How shift registers reduce MCU pin usage
  4. How fonts are encoded and scanned
  5. Why changing scan direction dramatically improves performance

This is pure reverse engineering — no schematics, no datasheets from the manufacturer.

Programming the ATmega128

For programming the ATmega128, I used an Arduino Mega as an ISP (In-System Programmer).

This approach is simple, reliable, and does not require a dedicated AVR programmer.

The Arduino Mega was configured using the ArduinoISP sketch, and the ATmega128 was programmed directly through its SPI pins (MOSI, MISO, SCK, and RESET). This method made it easy to upload and update firmware while reverse engineering and testing the dot-matrix display logic.

  1. Using the Arduino Mega as a programmer allowed fast iteration during development and helped validate the reverse-engineered display timing, font scanning, and multiplexing behavior.


Supplies

20260204_193310.jpg
20260204_193251.jpg
Screenshot 2026-02-04 201900.png
mm300_1__GZLJ_v2.jpg
download.jpg

ToolPurpose

Multimeter Continuity & power tracing

Oscilloscope Timing & multiplexing analysis

Camera / phone PCB documentation

ATmega128 (for reproduction) Display controller

Logic analyzer (optional) Verifying scan patterns

Identifying the Display Hardware

dng.JPG
20260126_073647 (1).jpg

The dryer front panel contains:

  1. 9 individual LED dot‑matrix digits
  2. Each digit arranged as 5×7 LEDs
  3. Digits placed side‑by‑side

Important observation:

There is no driver IC per digit. All digits are passive.

This immediately tells us:

  1. The display is fully multiplexed
  2. Brightness and stability depend entirely on scan timing


Counting Wires & Understanding the Topology

Dryer board.jpg
20260126_065812-EDIT.jpg
20260125_123645-EDIT-EDIT.jpg
20260130_200350.jpg

By tracing the connector from the display board:

  1. Rows are shared across all digits
  2. Columns are digit‑specific

This reveals a classic multiplexed dot‑matrix layout:

Rows: R0 R1 R2 R3 R4 R5 R6 (shared)

Columns: C0–C4 per digit × 9 digits

Total control lines are drastically reduced.

Discovering the Shift Registers

20260130_200449.jpg
20260130_200442.jpg
20260125_123645-EDIT.jpg

Tracing the PCB reveals five ABT574 octal latches.

Why ABT574?

  1. Fast output switching
  2. Strong LED drive capability
  3. Latched outputs = stable columns during row scan

Functional roles:

  1. ABT574 #2 → Column data
  2. ABT574 #3 → Digit / row selection

This means:

The MCU shifts data once, latches it, then rapidly scans rows.


Row Scanning Vs Column Scanning (The Key Discovery)

20260204_193310.jpg
dngcolumn.JPG
dngnum.JPG
columnrow.JPG

By probing with an oscilloscope:

  1. One group of signals pulses rapidly (scan lines)
  2. Another group changes more slowly (data lines)

This confirms:

  1. Rows are scanned
  2. Columns hold font data

Original implementation (observed):

  1. 7 scan cycles per character
  2. Font stored column‑based
  3. Each scan activates one row

This works — but it’s inefficient.

Reverse Engineering the Font Encoding

20260130_200442.jpg
20260130_200408.jpg
20260126_073647 (1).jpg

By freezing the display and capturing column states:

Each character is stored as 5 bytes, each byte representing one column:

Column font example ('H'):

0xFE

0x10

0x10

0x10

0xFE

bit 7 → top LED

bit 1 → bottom LED

This confirms:

  1. Column-wise font encoding
  2. 7 vertical scan steps


The Big Optimization – Row-Based Font Scanning

FKTHEYWLQQN9FEX.jpg
20260204_193310.jpg

After fully understanding the original system, I redesigned the font logic:

Original:

  1. 7 scan cycles per digit
  2. Column font
  3. Higher CPU load

New approach:

  1. Row-based font encoding
  2. Only 5 scan cycles
  3. Each scan outputs one full row across all digits

Why this matters:

  1. ~30% faster refresh
  2. Higher brightness
  3. More CPU time for scrolling & animations
  4. Cleaner multiplexing timing

This is a huge architectural improvement over the original design.

Digit Multiplexing Logic

dngcolumn.JPG
dng.JPG
dngnum.JPG
columnrow.JPG

Digit selection works like this:

  1. Disable all columns
  2. Clear row latches
  3. Load font data into column latch
  4. Enable exactly one digit
  5. Advance to next digit

This happens hundreds of times per second, creating a stable image.

Why Commercial Designs Choose This Method

20260130_200408.jpg
20260204_193251.jpg

Manufacturers optimize for:

  1. Minimal parts
  2. Low cost
  3. Reliable brightness
  4. Simple firmware

Using:

  1. Passive LED matrices
  2. Shift registers
  3. Aggressive multiplexing

This design hits all those goals — even if it’s not the most CPU‑efficient.

Recreating the Display (Proof of Understanding)

download.jpg
download (1).jpg
20260204_193149.jpg
20260204_193251.jpg

To validate the reverse engineering:

  1. Rebuilt the display logic using ATmega128
  2. Reimplemented both column‑scan and row‑scan fonts
  3. Achieved identical visual output
  4. Improved refresh quality using row-based scan
If you can recreate it from scratch — you truly understand it.


Final Thoughts

How to create fonts for 5x7 LED Dot matrix display
LED Dot matrix display multiplexing
LED DOT MATRIX DISPLAY scrolling text

Reverse engineering this dot‑matrix display revealed that:

  1. Display performance is mostly about scan strategy
  2. Font encoding direction matters a lot
  3. Commercial designs prioritize cost over elegance
  4. Small architectural changes make massive improvements

This project turned a black‑box appliance display into a fully understood, reproducible system.

All the code is in this link

https://github.com/banoubbanoub/5x7-LED-Dot_Matrix-display