ATmega169PA: The Segment Map Behind an On-Chip LCD Driver
Most microcontrollers drive a display through a controller chip. This one drives the glass directly: it generates the backplane waveforms, multiplexes the segments, and holds the pattern in registers that correspond one-to-one with physical connections.
That architecture moves the interesting content of the product into the firmware. What appears on the display is decided by which bits the code writes, and the mapping from a value to a pattern is a table — usually in flash, usually the largest constant structure in the image.
How the driver is organised
The display is driven in a matrix. Several common lines, called backplanes, are strobed in sequence, and each segment line is driven or not driven during each strobe. A character is therefore not a byte of pixels but a set of bits spread across the backplane phases.
Three consequences follow:
The pattern for a digit is not contiguous in memory. Its bits are distributed across the register set according to the multiplexing. The mapping is arbitrary. Which segment line connects to which part of the glass is a PCB decision, recorded nowhere except in the firmware’s table. Contrast is a register setting, not a data value, and it interacts with the supply voltage.
| Element | Where it lives | What it determines |
|---|---|---|
| Backplane count | Configuration register | Multiplex ratio |
| Segment allocation | Firmware table | Which bit lights which segment |
| Digit patterns | Firmware table | The shape of each character |
| Contrast | Register, sometimes fuse | Visibility across temperature |
Why the table is the valuable artefact
A display product’s specification is its display: which digits, which symbols, which annunciators. The code that does the measuring or the timing is comparatively generic; the table that turns a value into a visible pattern is specific to that product.
Recovering that table means recovering the display layout, which means a replacement device can render the same information without reverse-engineering the glass. On a product with custom icons — a battery symbol, a set of unit markers — the table is the only place that layout is written down.
Reading the table out of an image
Four steps:
- Locate the LCD configuration writes in initialisation. They identify the multiplex setting and the frame rate.
- Find the routine that writes the segment registers. It is usually called from the display update path.
- Follow its input: an index that comes from a lookup, which is the table.
- Extract the table and tabulate it by index against the known display layout.
Step 3 is the key. The table is indexed by something the application computes — a measurement, a counter, a state — and the index sequence tells you what the display is showing.
The PA revision and contrast
The picoPower revision changes the display driver’s bias and the contrast control. Firmware written for the earlier die may set a contrast value that is too low on the new one, producing a display that is readable indoors and not in sunlight.
That is a real and frequently reported field complaint, and it is a firmware constant rather than a hardware fault. The setting is in the code, and so is the story.
What the fuse byte adds
Parts with a display driver often have fuses that select the driver’s clock source and initial contrast. Those settings are outside the flash, they interact with the table above, and they are the reason a device can look blank when its firmware is perfect.
Reading them first is not optional on this part. A blank display with a valid image is a configuration problem until proven otherwise.
Reading order
- Signature, fuses, lock byte — including the display-related fuses.
- Array read, verified.
- Initialisation: display configuration, then framing.
- Display update path and its lookup table.
- Tabulate the segment map against the product’s visible layout.
Step 5 produces something a customer can check immediately, because the display is the product. That makes it the fastest possible confirmation that the analysis is on the right track.
Related notes
- ATmega169PV and display fuses — the configuration side of the same driver.
- ATmega169A and the binary image — what the table looks like in a raw file.
- ATmega644 and page buffers — flash mechanics shared with this part.
FAQ
Does this part need an external display controller? No. It drives the glass directly through its own pins.
Is the segment map standardised? No. It depends on how the glass is wired to the pins.
Why does the display look faint after a revision change? The contrast constant was written for the earlier die’s driver characteristics.
Can the display be blank with valid firmware? Yes, if the display fuses are wrong or the driver is not enabled.
Conclusion
An on-chip display driver pushes the product’s identity into its firmware tables. The segment map is the layout, the digit patterns are the typography, and the contrast constant is the readability — all of them recoverable, all of them absent from any schematic, and all of them invisible until the display configuration registers are read.