Charlieplexing
From Wikipedia, the free encyclopedia
Charlieplexing is an electronics technique developed by Charlie Allen (hence the name) at Maxim in which relatively few I/O pins (in contrast to the standard multiplexing technique) on a microcontroller are used to drive a large number of LEDs, sometimes used in controlling multi-segment numerical displays.
With Charlieplexing, n drive pins can be used to drive n digits with n-1 segments each; in other words, n drive pins can be used to control n^2-n LEDs. Traditional multiplexing would take n^2 drive pins to control the same number of LEDs.
Charlieplexing works by having the I/O pins alternate between driving digits and driving segments; the cathodes of all the LEDs are attached to a single pin which remains low. The anodes of the LEDs are grouped in a manner similar to multiplexing and each group is tied to an I/O pin. During operation, each of the "anode pins" is either driven high or used as an input. If all the pins that an LED is tied to are driven high, current passes through the LED and it lights, otherwise the pin(s) used as inputs cause the LED to be driven with a reverse-bias current and it will not light.
Since the LEDs will be driven with a reverse-bias current whenever they are not lit, this is not a power-efficient way to control a display; its primary advantage lies in using very few I/O pins. The developer must also make sure that the LEDs can withstand the reverse-bias current.
[edit] Resources
- Maxim's article on the technique provides a good conceptual overview.
- This Instructables article shows how to implement Charlieplexing in hardware (and links to the article above).
- Charlieplexed Displays using AVR