From Wikipedia, the free encyclopedia
Jump to: navigation, search
WikiProject Computing (Rated Start-class)
WikiProject icon This article is within the scope of WikiProject Computing, a collaborative effort to improve the coverage of computers, computing, and information technology on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
Start-Class article Start  This article has been rated as Start-Class on the project's quality scale.
 ???  This article has not yet received a rating on the project's importance scale.


Keep this page, please. The multiplexed display was fundamental to the development of (inter alia) the pocket calculator, and deserves a better technical writeup on Wikipedia. Charlieplexing is an interesting footnote, and should be included for completeness.

IanHarvey (talk) 21:49, 11 February 2008 (UTC)

I would like to comment that this is actually a very important technique for driving a display with a smaller number of i/o pins than traditional multiplexing. It is actually more important now than ever before with the increased integration of embeded computers in appliances and other devices. This technique allows smaller processor chips with fewer i/o pins to do more work, and for commercial products will tend to drive the cost down by preventing an engineer from having to choose a larger chip to support a project. This is critical where the product is a disposable device such as a single use camera, or a device with limited space such as a watch or a battery with a built-in meter. This also reduces the consumption of resources such as copper, so it can be considered an earth friendly technology, making it more than a footnote.
Georgedotcom (talk) 00:17, 10 March 2008 (UTC)
I found about this topic while watching a clip on youtube, but I have to say that the way it's explained here is very confusing. I'm going to try and understand it better and fix this article so it's a little clearer.
-- (talk) 09:00, 25 May 2008 (UTC)
Can anyone put a circuit diagram of it on here?
Pi.1415926535 (talk) 18:17, 13 June 2008 (UTC)
Seems to me that the linked Microchip article "Complementary LED Drive" serves the requirement of a published third-party article. BrianWilloughby (talk) 07:12, 1 July 2008 (UTC)
I have removed the notability template, I think it's good now. Thanks for adding references.
Gigs (talk) 05:28, 30 October 2008 (UTC)
Are comments in this section necessarily read for consideration after the notability template is removed? I ask since there are no comments here after the notability removal in 2008 Regardless, if anyone does read this and has an understanding: How about adding an example to the "Bigger and Brighter" matrix with 6 LEDs, 3 pins and supposed control to illuminate multiple LEDs on the same rows simultaneously? I have not made sense of the circuit diagram and have not found other examples or explanations of the concept.
--Davidd334 (talk) 16:04, 24 August 2014 (UTC)

Duty Cycle -> Refresh Rate[edit]

I changed the name of the "Duty Cycle" section to "Refresh Rate" but I'm still not happy with that term as used in that section. To me, the refresh rate is how often the whole display gets activated once (alway 50 Hz, in the section), but what the section is saying (the number of times a LED has to be addressed for possible activation) might be called the "LED write rate" or "LED Activation Rate." Perhaps scan rate from CRT raster technology, but that seems to imply a horizontal line acrosss a display. Maybe pixel rate?

Benbradley (talk) 21:52, 4 November 2008 (UTC)

Also, I wonder if it actually true that you always only can activate one LED. Consider a set of three IOs with 6 LEDs. Then imagine setting IO A to logic low. You then can set both other IOs to either logic H or Z, thereby activating two LEDs at the same time. Do his round robin style.
In the example with three IOs this means every LED is on for 1/3rd of the time, not 1/6th. Correct?
TomFTom Frey (talk) 10:21, 12 November 2008 (UTC)
The Duty cycle is just 1/N, where N is the number of drive lines. For example, if you have 9 IO or driver lines, then at any given time 1 line will be performing the same function as the digit driver in a normal multiplexed display and the other 8 will be the same as segment lines in a normal muliplexed display. So with 9 lines you can drive 9 digits of 8 segments. A normal multiplexed LED display would use 9 digit lines and 8 segment lines and also have the same 1/9th duty cycle, but using a total of 17 IO lines rather than the 9 lines of the Charlieplexing method. The number of segments you can drive with "N" lines using Charlieplexing is N x N-1. With normal multiplexing, for N lines the maximum number of segements you can drive is for a square matrix of equal number digits and segments. So N/2 * N/2 = N^2 / 4. The duty cycle issue is what sets the practical limit on the number of segments driven. 16 lines would drive 16*2=15 = 240 segments, but with a duty cycle of 1/16. Normal multiplexing to drive 240 segments would take 15+16 = 31 pins and would have a slightly better duty cycle of 1/15.
—Preceding unsigned comment added by (talk) 16:06, 29 November 2008 (UTC)

Errors in Article[edit]

The section on current is almost entirely wrong.

"Due to the decreased duty cycle, the current requirement of a charlieplexed display increases much faster than it would with a traditionally multiplexed display. As the display gets larger, the average current flowing through the LED must be constant in order for it to maintain constant brightness, thus requiring the peak current to increase proportionally. This puts a limit to the size of the display, as when the peak current flowing through the LED’s when they’re turned on exceeds the LED’s ratings, charlieplexing is not a possibility."

The decreased duty cycle is balanced by the fact that only one LED is lit at once. 10 LEDs all at 10mA constantly consumes 100mA. 10 LEDs all at 100mA with a 10% duty cycle and no two LEDs on at the same time also consumes 100mA. So current requirements should stay constant for a given number of lights each emitting a given amount of light.

In fact, the light output increases faster than the current, so putting 100mA/10% duty through an LED will give you more light output than 10mA/100% duty. So current requirements actually *decrease*.

This is a simple energy equation. Charlieplexed displays are in no way inefficient and this paragraph suggests that they are.

Finally, an LED's current limitation is in fact a power dissipation limitation. You can supply a 30mA LED with 300mA for 10% of the time and it should not overheat. However, you may need to increase the switching frequency in this case. The current limit is not a limit on *peak* current, but a limit on *power* which is a function of *average* current. Limits on peak currents are not quoted for LEDs.

—Preceding unsigned comment added by (talk) 17:55, 20 January 2009 (UTC)

The first LED I took a look at the datasheet for ( ) clearly had both a DC forward current and a pulse forward current specified. While for the LED junction itself power is roughly proportional to the peak current other parts (such as bondwires to the package) will likely have a resistive characteristic and hence a power disipation proportional to the RMS current.
While you may be able to run some 30ma LEDs at 300ma 10% of the time I doubt they would survive very long at 3A 1% of the time.
There is also the issue that charlieplexing is largely pointless if you cant use the microcontrollers built in tristates (since controlling a tristate generally requires two lines). Most microcontrollers only have about 20ma or so drive on thier IO lines.
In summary charlieplexing is a neat hack for running a small (say 20) group of LEDs that don't have to be particularlly bright off a microcontroller while saving on IO and not using any external active components but for a larger grid you are going to run into issues and will do better using conventional multiplexing (and if you are short of IO putting a 1-of-n decoder on one side of the matrix).
Plugwash (talk) 00:53, 22 January 2009 (UTC)
But in the light of the section above (Duty Cycle-> Refresh Rate), which makes clear that the duty cycle using charlieplexing is only slightly less than that for traditional multiplexing, is there really a substantial disadvantage? Quote: "16 lines would drive 16*2=15 = 240 segments, but with a duty cycle of 1/16. Normal multiplexing to drive 240 segments would take 15+16 = 31 pins and would have a slightly better duty cycle of 1/15." There certainly is a peak current limit for LEDs, but this problem is exactly the same as for a traditionally multiplexed LED array. So this is not a specific problem to charlieplexing. The sentence

Due to the decreased duty cycle, the current requirement of a charlieplexed display increases much faster than it would with a traditionally multiplexed display

from the article is therefore wrong
--Tom Frey (talk) 02:32, 27 March 2009 (UTC)
Perhaps a better way to phrase the problem is that brightness drops faster with increasing Charlieplexed matrix sizes compared to other techniques. Since brightness is very important to some applications, and since increased current is required to maintain brightness, I think that's whence the original current comment stems. However, the real limiting factor is that Charlieplexing puts a circuit up against the maximum current limitations of an LED far quicker than other matrix configurations. Thus the repeated axiom that Charlieplexing is best for small numbers of LEDs and pins. You certainly don't want to try Charlieplexing 200 LEDs if you want them to be bright and have multiple LEDs appear to be lit simultaneously.
BrianWilloughby (talk) 17:31, 6 January 2011 (UTC)
What I think the problem is is a disagreement over what Charlielplexing is:
to some it is driving only one LED at a time, to others several LEDs can be driven at once and it's still Charlieplexing , some would call that Chipiplexing.
So yes if driving a single LED at a time the LED will see a much higher peak current for the same apparent brightness than if ordinary multiplexing was used. Jasen betts
(talk) 22:56, 28 December 2015 (UTC)

I think there's an error in the number of LEDs stated for the clock shown in the article picture. The article says 90, but looking at the photo there seems to be 89 (60 seconds, 12 minutes, 1 AM/PM, 7 days, 8 instructions and 1 for the alarm). (talk) 21:40, 11 December 2016 (UTC)

Requirement for tristate[edit]

"...if external tristates must be used then each tristate will require two output lines to control eliminating most of the advantage of a charlieplexed display."

Is this actually correct? Most external tristate drivers do require 2 lines to drive them, but it must be possible to make an external tristate driver that works with only one input line. For example, if the microcontroller has outputs that are either +5V, 0V, or floating, what about a weak pull-to-centre resistor network (say 100k from the pin to each rail), so that the float is biased at 2.5V, and then drive 2 symmetric transistor/diode networks: the lower half would be 4 diodes in series with the (NPN) base-emitter junction (thereby turning on only when the voltage exceeds 3.1V, and the upper (PNP) half only turns on when the voltage is below 1.9V.

—Preceding unsigned comment added by (talk) 02:53, 24 January 2009 (UTC)

Certainly possible in theory but i'm not convinced it's particuarlly practical compared to other options like decoder chips.
Plugwash (talk) 13:05, 21 February 2009 (UTC)
I am with plugwash on this one. Gugaplexing (see e.g. uses discrete transistors to do something similar - even giving you the possibility to control twice as many LEDs. But to be honest, this means a lot of effort and as plugwash states, it is probably more space / effort / cost effective to use external logic like shift registers or decoders. But perhaps I can make suggestion. It isn't really necessary to drive the LEDs symmetrically. I don't know if it is frowned upon, but here is a link where I describe this compromise in detail:
Tom Frey (talk) 07:46, 21 April 2009 (UTC)

Charlieplexing is based on an idea from the 1970s[edit]

Christopher Malinowski's German patent in 1979 (on which U.S. patent 4,319,227 is based) describes how to drive e.g. 12 LEDs on 4 wires, etc. Is there anything new in Charlieplexing other than doing exactly the same thing but with a microcontroller?

—Preceding unsigned comment added by (talk) 02:00, 9 December 2009 (UTC)

For easier reference, here's a link to the "THREE STATE SIGNALING SYSTEM" patent (US4319227A, US 06/085335, CA1175526A1, DE2922595A1, DE2922595C2, priority 1979-06-02, filed 1979-10-16, issued 1982-03-09) by Christopher W. Malinowski, Heinz Rinderle, and Martin Siegle, all associated with Department of Research and Development, AEG-Telefunken, Heilbronn, Germany (although the patent doesn't appear to be assigned to AEG):
Regarding your question, I don't think, Charlieplexing is adding anything new, it is just a catchy new name for something much older. I have seen this trick being utilized in keyboard designs of the late 1980s, and - unaware of the prior art - intuitively used ad-hoc variants of what turns out to be following the same underlying idea in some design optimizations myself, therefore, I assume, others have done so as well...
However, the 1979 patent is already generic enough to apply to all kinds of parallel digital tri-state transmission paths to transfer data or addresses between information entities, and the method can be used to either reduce the number of necessary lines, or to increase the amount of information transferred. It includes applications such as keyboards, displays, memories, en- and decoders, active and passive transmitters and receivers, and does not even stop at electrical circuits. The "theory" of operation is described as well. Quite interesting, the text defines terms like combits, comwords, advantage ratio, etc.
--Matthiaspaul (talk) 21:52, 31 March 2015 (UTC)
Multiplexing led's this way has been around since the invention of the led. It is an easy discovery: who hasn't put in a led the wrong way? Charlieplexing is a specific multiplexing technique for driving 7-segment led displays as per Maxim application note. For some reason ( it sounds nice .. ) it has become a generic name, but strictly speaking this article does not address Charlieplexing but multiplexing in general. (talk) —Preceding undated comment added 12:21, 6 December 2015 (UTC)

The clock in the picture[edit]

is backwards!

—Preceding unsigned comment added by Fastfourier (talkcontribs) 15:18, 11 October 2010 (UTC)

Alternate paths[edit]

3 pin, 6 LED scheme

Consider the 6 LED scheme, where we have pin 1 high and pin 2 grounded. The most direct path goes through LED1, directly between the two pins. However, current could also flow through LED6 to pin 3, then through LED4 to pin 2. In larger charlieplexed arrays, there would also be 3-LED paths, 4-LED paths, etc. between any two pins.

Why is this path not utilized? Does charlieplexing require that the voltage drop across the LEDs be more than half of the total voltage, such that there is insufficient voltage for two LEDs in series? Or is there really some current though this path, just not enough to trigger light emission. Would this leakage lead to higher current use than more traditional (and higher pin) multiplexing?

Any addition to the article clarifying these points would be appreciated. Perhaps another subsection of 'Problems'?

--Quantum7 06:06, 25 March 2012 (UTC)

The fact that the article skips this is a strange oversight, as it's the entire point of what makes charlieplexing work. Yes, you're on precisely the right track, due to how LEDs illuminate. The voltage drop across LED1 is nominal (eg if high is 5v, then it's 5v across led6) whereas the voltage drop across LED6 is half that (2.5 in my example) as is the drop across LED4. As you point out, there's a 2-LED path alongside every 1-LED path in the 3-pin array. However, LEDs illumination vs voltage is a curve, not linear (the exact shape varies, of course, but this property is true enough to exploit) such that an LED illuminated at half its proper voltage will usually be so dim as to be effectively off. (And when that's not true, it's effectively always possible to just deliberately reduce the voltage such that even in the 'on' state they're slightly undervolted but bright and in the 'half-volt' state they're unlit).
source: (and earlier pages) is decent but not particularly suitable for a citation. (talk) 05:50, 12 April 2013 (UTC)
the "not linear" claim is untrue: led illumination is linear with current and with a series resistor current is linear with voltage (but not zero intersecting)
Jasen betts (talk) 23:03, 28 December 2015 (UTC)
Actually, LEDs should not emit any light when the applied voltage is below the band gap energy.
Mikhail Ryazanov (talk) 05:30, 23 November 2014 (UTC)
Actually it has been discovered that they do emit a little light at slightly below bandgap due to thermal noise pushing electrons over the edge, but that is unlikely to be significant here
Jasen betts (talk) 22:24, 28 December 2015 (UTC)
By the way, the circuit with individual resistors is worse in this respect, since voltages on all LEDs might be large enough (if pin voltages exceed 2 band gap energies, f.e. 5 V with red LEDs), whereas in the case of a common resistor the "active" LED limits the voltage applied to the "alternative" chain.
Mikhail Ryazanov (talk) 07:26, 25 November 2014 (UTC)
yes, that is a bad circuit
Jasen betts (talk) 22:24, 28 December 2015 (UTC)

External links modified[edit]

Hello fellow Wikipedians,

I have just modified one external link on Charlieplexing. Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:

When you have finished reviewing my changes, please set the checked parameter below to true or failed to let others know (documentation at {{Sourcecheck}}).

You may set the |checked=, on this template, to true or failed to let other editors know you reviewed the change. If you find any errors, please use the tools below to fix them or call an editor by setting |needhelp= to your help request.

  • If you have discovered URLs which were erroneously considered dead by the bot, you can report them with this tool.
  • If you found an error with any archives or the URLs themselves, you can fix them with this tool.

If you are unable to use these tools, you may set |needhelp=<your help request> on this template to request help from an experienced user. Please include details about your problem, to help other editors.

Cheers.—InternetArchiveBot (Report bug) 14:49, 20 November 2016 (UTC)

Reverse voltage[edit]

LEDs are not capable to resist a high Reverse Vorlage. I think it Works but is Out of specific range. — Preceding unsigned comment added by 2A01:598:9180:C013:C138:5C39:30DE:C3AC (talk) 20:15, 2 December 2016 (UTC)

Diodes are produced so that the reverse voltage is higher than the forward voltage and voltage on any diode in charlieplexed circuits will never be higher than forward voltage. Therefore it is impossible to exceed capabilities of a diode. -- wikimpan (Talk) 02:44, 7 June 2017 (UTC)

Multiple serious issues[edit]

I believe that the article has multiple grave issues. The article should be cleaned up, but since I am unsure what the authors of the previous edits actually meant, I am also not very willing to do that without first getting the following questions solved.

  • The Maxim’s article and the patents describe something different than what the article describes. All of them contain descriptions that incorporate, as a part of the solution, circuits that reduce pin count that resemble the article’s subject, but neither of them clearly describes exactly this approach. Do we have any good sources that clearly describe this particular thing? Because right now it seems like the article is based primarily on someone’s own research on the topic.
  • The structure is somewhat odd. The ideas on which charlieplexing is based are described in a paragraph entitled “Traditional multiplexing”.
  • The order of sections is strange too: first there are conclusions on how charlieplexing pin count, then there is a description of the ideas that form the base for charlieplexing, the overviews itself is mixed up with them. Shouldn’t it be different?
  • The reason charlieplexing works is that the conducting diode will keep voltage on any other branch not higher than its forward voltage. This guarantees that voltage on any other diode will never exceed either its forward or reverse voltage. However the circuit presented in “3-pin configuration for different LEDs” has no such guarantee, because — due to resistors — all the branches receive full voltage from the microcontroller and more than one branch may be in conducting mode. There are very specific scenarios with specific output voltages, resistance values and matched LEDs in which this may work, but it is not a typical case — and the article doesn’t even discuss the thing.
  • The requirement described in the previous point is not clearly highlighted in the article.
  • The article misses a description of Y-s from the two bottom images (1, 2). It is also not clear how these circuits should work.
  • The whole article sounds like a tutorial on how to build a charlieplexed circuit, not an encyclopedic description.
  • The section on refresh rate seems to describe a problem with a particular implementation from the Maxim’s article: not of the general approach.
  • LEDs often have a maximum peak current rating as well as an average current rating.: certainly, but how does this relate to the section?
  • In the diagram above it can be seen that if LED 6 has a 4 V forward voltage: which diagram — there are four of them.

-- wikimpan (Talk) 03:11, 7 June 2017 (UTC)