Become a subscriber (Free)

Join 29,000 other subscribers to receive subscriber sale discounts and other free resources.
:
:
Don't worry -- youre-mail address is totally secure. I promise to use it only to send you MicroZine.

Charlieplexing

Although it seems impossible you can drive 12 LEDs with 4 microcontroller pins and with more pins available you can drive even more LEDs! The diagram below shows the basic idea using diodes and 3 microcontroller pins to drive 6 LEDs.

Charlieplexing

The technique was invented at Maxim by a person whose name is Charlie so they chose to call the technique Charlieplexing! A play on words from the standard multiplexing method.

Some Maxim ICs that use this technique are (all have serial SPI interface as the control method):


MAX6950 Common-cathode display driver - up to 5 x 7seg
MAX6951 Common-cathode display driver - up to 8 x 7seg
MAX6954 Drives up to 16 digits 7-segment, 8 digits 14-segment, 8 digits 16-segment, or 128 discrete LEDs
MAX6955 Drives up to 16 digits 7-segment, 8 digits 14-segment, 8 digits 16-segment, or 128 discrete LEDs and kas 5 GPIO port expander.
MAX6958 4-Digit, 9-Segment LED Display Drivers with Keyscan 8 switch detects.
MAX6959 4-Digit, 9-Segment LED Display Drivers with Keyscan 8 switch detects - Debounces Up to Eight Switches with n-Key Rollover .

The fundamental concept is that a microcontroller pin can have three states:

  • Output High.

  • Output Low.
  • High impedance or tristated i.e. set as an input.

The most important state is the high impedance state (tristated) since that isolates a node from a mesh network.

Since an LED is a diode when you reverse the voltage across a it no current flows which means no light is output from it.

Simple case 2 pins 2 LEDS

Here's a simple two LEDs example:

Charlieplexing  

You can easily see that each LED is set on and off by setting one pin high and the other low.

D1 on P1 low, P2 high.
D2 on P1 high, P2 low.

Drive 6 LEDs using 3 pins

It gets more interesting when you add a third microcontroller pin:

Charlieplexing

If you set P3 as an input then D3 D4 D5 and D6 are disconnected (no current can flow) so it's the same circuit as before.

Truth Table operation for 3 pin charliplexing

The operation is easy to see using a truth table


Port Pin State
Diode active

P1

P2

P3


D1

D2

D3

D4

D5

D6

0

0

0


0

0

0

0

0

0

0

1

X


1

0

0

0

0

0

1

0

X


0

1

0

0

0

0

X

0

1


0

0

1

0

0

0

X

1

0


0

0

0

1

0

0

0

X

1


0

0

0

0

1

0

1

X

0


0

0

0

0

0

1

X = tristate or input.

Note: If you wire up the circuit wrongly then the current paths change so lots of LEDs will light up!

Formula for the number of LEDs

This formula tells you how many LEDs you can control with N microcontroller pins:

LEDs = N * (N-1)

Two pins gives 2 x (2-1) = 2
Three pins gives 3 x (3-1) = 6
Four pins gives 4 x (4-1) = 12
Five pins gives 5 x (5-1) =20
Six pins gives 6 x (6-1) =30
Seven pins gives 7 x (7-1) =42

Charlieplexing

Advantages

Very few pins control many LEDs.

Disadvantages

Only certain sets of LEDs can be turned on at the same time.

The way round this is to do 'normal' multiplexing but you have to ensure that you refresh the LEDs at a fast enough rate and obviously the more LEDs to be serviced means that the task is more difficult – requiring higher speed processing.

As well as this upping the processing speed means less current is delivered to the LED so you may need high brightness LEDs.

Ideal use

It is ideal for systems where you need to turn only one LED on at a time e.g. State indicator LEDs.

It's also not too bad for turning a few other leds on at the same time but you have to carefully select your LEDs as you are limited to which ones you can use.


New! Comments

Have your say about what you just read! Leave me a comment in the box below.



Privacy Policy | Contact | About Me

Site Map | Terms of Use



Visit our Facebook Page:
To Visit Click Here


Recent Articles

  1. AD9833 a versatile easy to use signal generator on a chip

    Find out how to use the AD9833 to generate sine, square and triangle waves at 0.1Hz resolution.

    Read more

  2. How to use an arduno Nano as an ISP (In System Programmer)

    Arduino Nano ISP: How to program an ATmega328P using an Arduino Nano as the ISP programmmer. One common problem: Programming a sketch into the chip without a reset control - solved here.

    Read more

  3. Arduino Voltage Reference Capabilities

    Arduino Voltage reference: Both the Uno and Nano have a built-in voltage reference: Find out how to make it more accurate. In addition find out how to use it to measure the supply voltage 1V8 ~ 5V5

    Read more

  4. Arduino EEPROM - how it works and how to use it - with examples.

    Arduino EEPROM: How to use it and How to preserve the life of EEPROM. Two examples sketches to save multiple values to EEPROM.

    Read more

  5. How to use the ADS1115

    A tutorial on using the ADS1115 precision 16 bit ADC for low power use.

    Read more

  6. The TP4056: Lithium Ion/polymer Battery Charger IC

    Learn how to use the TP4056 properly. There's a right, and a wrong way, to use it to safely charge Lithium Ion batteries.

    Read more

Readers Comments

"I wanted to thank
you so so so much
for all the information
you have provided in
your site it's

SUPERB and FANTASTIC."

- Ranish Pottath

"This site really is
the best and my favorite.
I find here many useful
projects and tips."

- Milan

bursach<at>gmail.com<

"Awesome site,
very, very easy and nice
to navigate!"


- Matt
matt_tr<at>
wolf359.cjb.net


Learn Microcontrollers

"Interested in
Microcontrollers?"

Sign up for The
Free 7 day guide:

FREE GUIDE : CLICK HERE


"I am a newbie to PIC
and I wanted to say
 how great your
site has been for me."


- Dave

de_scott<at>bellsouth.net

"Your site is a great
and perfect work.
congratulations."


- Suresh

integratredinfosys<at>
yahoo.com

"I couldn't find the correct
words to define
yourweb site.

Very useful, uncovered,
honest and clear.

Thanks so much for
your time and works.
Regards."


- Anon

Back to Top