🔗 Charlieplexing

🔗 Computing 🔗 Electronics 🔗 Electrical engineering

Charlieplexing (also known as tristate multiplexing, reduced pin-count LED multiplexing, complementary LED drive and crossplexing) is a technique for accessing a large number of LEDs, switches, micro-capacitors or other I/O entities, using very few tri-state logic wires from a microcontroller, these entities being wired as discrete components, x/y arrays, or woven in a diagonally intersecting pattern to form diagonal arrays.

The method uses the tri-state logic capabilities of microcontrollers in order to gain efficiency over traditional multiplexing, each I/O pin being capable, when required, of rapidly changing between the three states, logical 1, logical 0, and high impedance.

This enables these I/O entities (LEDs, switches etc.) to be connected between any two microcontroller I/Os - e.g. with 4 I/Os, each I/O can pair with 3 other I/Os, resulting in 6 unique pairings (1/2, 1/3, 1/4, 2/3, 2/4, 3/4). Only 4 pairings are possible with standard x/y multiplexing (1/3, 1/4, 2/3, 2/4). Also, due to the microcontroller's ability to reverse the polarity of the 6 I/O pairs, the number of LEDS (or diodes) that are uniquely addressable, can be doubled to 12 - adding LEDS 2/1, 3/1, 4/1, 3/2, 4/2 and 4/3.

Although it is more efficient in its use of I/O, a small amount of address manipulation is required when trying to fit Charlieplexing into a standard x/y array.

Other issues that affect standard multiplexing but are exacerbated by Charlieplexing are:

  • consideration of current requirements and the forward voltages of the LEDs.
  • a requirement to cycle through the in-use LEDs rapidly so that the persistence of the human eye perceives the display to be lit as a whole. Multiplexing can generally be seen by a strobing effect and skewing if the eye's focal point is moved past the display rapidly.

Discussed on