Summary of Charlieplexing 7 segment displays using Atmel Tiny26 microcontroller
This article details a method for driving 6-digit common anode 7-segment displays using Charlieplexing with an Atmel Tiny26 microcontroller. The author reduces pin usage from 14 to 9 by exploiting the display architecture, though they explicitly warn against omitting current-limiting resistors due to potential component damage.
Parts used in the Pulse Generator Project:
- Atmel Tiny26 microcontroller
- 6-digit seven segment display (Common Anode)
- HV power supply coils
- Altoids-like box enclosure

Charlieplexing 7-segment displays is more or less the same as doing it with discrete leds, but with some changes to handle the fact that all the led segments have a common pin instead of being separate, and the need for buffering of the common output so the poor microcontroller can cope with the load.
Step 1 Why
By Charlieplexing the displays I only need 9 i/o-pins and the displays are still muxed in a 1:6 way acheving the same brightness as standard muxing. Charlieplexing usually only light up one led at a time thus giving a reduced brightness if you want several leds to be (visibly) lit at the same time.
Of course I could have used a BCD-to-7segment decoder chip (74LS48) plus a 1-to-8 decoder (74LS138) but that would have been cheating, and i didn’t have any ’48ths as hand and I really wanted to be able to fit the pulse generator in an Altoids-like box.
Step 2 Disclaimer for bad design practices
Normally you must connect leds via a current limiting resistor in order to keep them alive for more than a few milliseconds.
Here I’m not using any resistors since the display is connected to the output pins of a microcontroller that normally can’t sink or source more than a few times the current the leds/displays can handle continuously. Since we’re multiplexing the displays they will only be on for 1/6’th of the time and can handle much more current than if they were on all the time.
In the following schematics and in my construction I’ve left out the current limiting resistors, both for the leds themselves and also the base resistor for the transistors.
Please note the following
It is a really bad construction practice to skip the current limiting and rely on luck and that duty cycle combined with the relatively low sink capability of the processor and the probable underrating of the leds maximum specs.
In anything that you do professionally, or just want to keep running for an extended period of time (longer than your first test run) one should adhere to good construction practices, read the datasheets and to the maths.
And read rgbphils comment about running leds over the rated current in the comments section of this instrucatble.
Step 3 Normal multiplexed displays
The displays I’m using here is of the Common Anode -type. That means that all the segments have a common positive pin. In order to light one segment you connect the common pin to plus and one or more of the segment pin(s) to minus.
A normal multiplexed display have all A-segments connected together in one line, and then all B-segments and so on. The common pins are then connected individually to the microprocessor. This makes eight lines for the segments and one line for the anode on each individual display.
For more Detail: Charlieplexing 7 segment displays using Atmel Tiny26 microcontroller
- Why was Charlieplexing chosen over standard multiplexing?
Charlieplexing reduced the required I/O pins from 14 to 9 on the Atmel Tiny26. - What type of 7-segment displays were used?
The project uses Common Anode type displays where all segments share a common positive pin. - Can this design run without current limiting resistors?
The article states it is bad practice to skip resistors and rely on duty cycles or luck. - How does the brightness compare to standard multiplexing?
Charlieplexing achieves the same brightness as standard multiplexing while lighting only one digit at a time. - What alternative chips were considered but rejected?
A BCD-to-7segment decoder chip (74LS48) plus a 1-to-8 decoder (74LS138) were considered. - Why was the Altoids-like box important?
The small enclosure size made fitting the pulse generator difficult without reducing pin count.
