Tri-state Multiplexing
   HOME

TheInfoList



OR:

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 In electrical engineering, a switch is an electrical component that can disconnect or connect the conducting path in an electrical circuit, interrupting the electric current or diverting it from one conductor to another. The most common type o ...
, micro-
capacitors In electrical engineering, a capacitor is a device that stores electrical energy by accumulating electric charges on two closely spaced surfaces that are insulated from each other. The capacitor was originally known as the condenser, a term st ...
or other I/O entities, using relatively few
tri-state logic In digital electronics, a tri-state or three-state buffer is a type of digital buffer that has three stable states: a high voltage output state (logical 1), a low output state (logical 0), and a high-impedance (Hi-Z) state. In the Hi-Z state, th ...
wires from a
microcontroller A microcontroller (MC, uC, or μC) or microcontroller unit (MCU) is a small computer on a single integrated circuit. A microcontroller contains one or more CPUs (processor cores) along with memory and programmable input/output peripherals. Pro ...
. These I/O entities can be wired as discrete components, x/y arrays, or woven in a diagonally intersecting pattern to form diagonal arrays.


Etymology

Although the technique was introduced in 2001 by
Maxim Integrated Maxim Integrated Products, Inc., was an American semiconductor company that designed, manufactured, and sold analog and mixed-signal integrated circuits for the automotive, industrial, communications, consumer, and computing markets. Maxim's pr ...
, the name "Charlieplexing", however, first occurred in a 2003 application note. It was named after Charles "Charlie" M. Allen, an applications engineer of MAX232 fame, who had proposed this method internally.


How and why to use Charlieplexing

The simplest way to address a single pixel (or input button) is to run a wire out to it and another wire back to ground, but this requires a lot of wiring. A slight improvement is to have everything return on a common ground, but this still requires one wire (and one pin on the microcontroller) for each pixel or button. For an X by Y array, X*Y pins are required. With
tri-state logic In digital electronics, a tri-state or three-state buffer is a type of digital buffer that has three stable states: a high voltage output state (logical 1), a low output state (logical 0), and a high-impedance (Hi-Z) state. In the Hi-Z state, th ...
pins (high, low, disconnected), matrix wiring needs only X+Y pins and wires. Each X and each Y take turns being on vs being disconnected; the disadvantage is that each light is only powered at most 1/(X*Y) of the time. If there is enough
fan-out In digital electronics, the fan-out is the number of gate inputs driven by the output of another single logic gate. In most designs, logic gates are connected to form more complex circuits. While no logic gate input can be fed by more than one ...
, the Y pins can be left always on, and all checked in parallel. The refresh can then happen every 1/X of the time, but the X wires each need to pass enough current to light up Y lights at once. Charlieplexing is a further improvement on matrix wiring, which enables the I/O entities (LEDs, switches etc.) to be connected between any two microcontroller I/O pins. Instead of X horizontal wires meeting Y vertical wires, every wire meets every other wire. Assuming diodes are used for the connections (to distinguish between wire A going to wire B vs wire B going to wire A), Charlieplexing needs only about half as many pins as a conventional matrix arrangement, at the cost of more complicated mapping. Alternatively, the same number of pins will support a display nearly four times (doubling in both directions) as large. For example, with 4 I/O pins, standard x/y matrix multiplexing distinguishes only 4 positions. Pins representing the same direction (such as 1 and 2) can never pair with each other. With Charlieplexing, each pin can pair with any other pin, so those same 4 I/O pins have 6 unique pairings: all those available to matrix multiplexing, but also (1 to 2) and (3 to 4). Because the microcontroller can send current in either direction, and diodes can filter out one direction, each connection can address two diodes separately. In this example, 4 pins with six connections can identify 12 independent diodes. Doubling connections with diodes isn't unique to Charlieplexing, but is rarely done unless I/O pins are scarce enough to at least consider Charlieplexing. Although Charlieplexing is more efficient in its use of I/O lines, the mapping from I/O lines to a physical location is usually more complicated. Other issues that affect standard multiplexing but are exacerbated by Charlieplexing include: * 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.


Origin

The Charlieplexing technique was introduced by
Maxim Integrated Maxim Integrated Products, Inc., was an American semiconductor company that designed, manufactured, and sold analog and mixed-signal integrated circuits for the automotive, industrial, communications, consumer, and computing markets. Maxim's pr ...
in 2001 as a reduced pin-count LED multiplexing scheme in their MAX6951 LED display driver. Also in 2001, when the name "Charlieplexing" became common,
Don Lancaster Donald E. Lancaster was an American author, inventor, and microcomputer pioneer. Early life Don graduated from North Allegheny High School in Wexford, Pennsylvania. He received a BSEE degree from Lafayette College in 1961, and a MSEE from A ...
illustrated the method as part of his musings about the " N-connectedness" problem, referring to
Microchip Technology Microchip Technology Incorporated is a publicly listed American semiconductor corporation that manufactures microcontroller, mixed-signal, analog, and Flash-IP integrated circuits. Its corporate headquarters is located in Chandler, Arizona. ...
, who had already discussed it as "complementary LED drive technique" in a 1998 application note and would later include it in a tips & tricks booklet. While Microchip did not mention the origin of the idea, they might have picked it up in the PICLIST, a
mailing list A mailing list is a collection of names and addresses used by an individual or an organization to send material to multiple recipients. Mailing lists are often rented or sold. If rented, the renter agrees to use the mailing list only at contra ...
on Microchip
PIC microcontroller PIC (usually pronounced as /pɪk/) is a family of microcontrollers made by Microchip Technology, derived from the PIC1640 originally developed by General Instrument's Microelectronics Division. The name PIC initially referred to ''Peripher ...
s, where, also in 1998, Graham Daniel proposed it to the community as a method to drive rows and columns of
bidirectional LED A light-emitting diode (LED) is a semiconductor device that Light#Light sources, emits light when Electric current, current flows through it. Electrons in the semiconductor recombine with electron holes, releasing energy in the form of pho ...
s. Daniel at the time had created simple circuits with PIC 12C508 chips driving 12 LEDs off 5 pins with a mini command set to set various lighting displays in motion. The method, however, was known and utilized by various parties much earlier in the 1980s, and has been described in detail as early as in 1979 in a patent by Christopher W. Malinowski, Heinz Rinderle and Martin Siegle of the Department of Research and Development, AEG-Telefunken, Heilbronn, Germany for what they called a "three-state signaling system". Reportedly, similar techniques were already in use as early as 1972 for track signaling applications in model railroading. Display multiplexing is very different from multiplexing used in data transmission, although it has the same basic principles. In display multiplexing, the data lines of the displays are connected in parallel to a common databus on the microcontroller. Then, the displays are turned on and addressed individually. This allows the use of fewer I/O pins than it would normally take to drive the same number of displays directly. Here, each "display" could, for instance, be one calculator digit, not the complete array of digits. With traditional multiplexing N I/O pins can drive a maximum of (\frac)^2 = \frac LEDs, or listen to that many input switches. Charlieplexing can drive N^2 - N LEDs, or listen to \frac buttons even if directionality is not enforced by a diode.


Tri-state multiplexing (Charlieplexing)

The Charlieplexing configuration may be viewed as a directed graph, where the drive pins are vertices and the LEDs are directed edges; there is an outward-pointing edge connected from each vertex to each other vertex, hence with ''n'' drive pins there are (''n'')(''n''-1) total edges. This equates to ''n'' pins being able to drive ''n''2 − ''n'' segments or LEDs. If the number of LEDs (''L'') is known, then the number of pins (''n'') can be found from the equation: n = \left\lceil 1 + \sqrt \right\rfloor, the result being rounded to the nearest whole number. Example: If L = 57, then √L = 7.549, and 1 + √L = 8.549; the nearest whole number to this is 9, so 9 pins are needed to drive 57 LEDs (9 pins could drive up to 72 LEDs, but 8 pins could drive only 56 LEDs at most). If L = 56, then √L = 7.483, and 1 + √L = 8.483; the nearest whole number to this is 8, so 8 pins are needed to drive 56 LEDs. ; Origin of the (''n''2 − ''n'') equation in Charlieplexing: Unlike in a traditional x/y multiplexed array, where a sub-set of conductive elements crosses a different sub-set of conductive elements, in a "fully Charlieplexed" multiplexed array, each conductive element crosses every other conductive element. Six (''n'') conductive elements in a standard x/y multiplexed array forms a maximum of nine ((''n'' / 2)2) unique intersections (see figure on far left). The other diagrams also show six (''n'') conductive elements, but here all six elements cross over themselves, forming a multiplexed array of 36 (''n''2) intersections. LEDs are shown placed at every intersection. However, each conductor also crosses itself at the diagonal. Horizontal conductor 1 crosses vertical conductor 1, horizontal conductor 2 crosses vertical conductor 2, etc. This means that six of these LEDs are short-circuited (e.g. D1 and D5 are short-circuited). The six (''n'') diagonal LEDs will, therefore, never light up, because no voltage can ever develop across them, so (''n'') has to be subtracted from the total. There is no point in installing these LEDs (they are simply included here for illustrative purposes). This leaves 30 LEDs (''n''2 − ''n'') that can be uniquely addressed and lit up independently. Conductor "a" crossing conductor "b" is distinguishable from conductor "b" crossing conductor "a" because LED polarity is reversed. For example, when conductor 3 is positive and conductor 2 is negative, current flows through, and lights up LED D8, but when conductor 3 is negative and conductor 2 is positive, current flows through, and lights up LED D9. These reverse polarity LED pairs are called complementary pairs. This diagram has 15 complementary pairs, allowing 30 LEDs to be lit independently. The 6 unusable diagonal LEDs can be conveniently replaced by actual bidirectional shortcuts (so that there's no longer need to set up the interconnection lines grouped on the left and bottom of the diagrams, to drive the bottom input of vertical connectors from the matching left input of horizontal connectors). By adjusting diagonally the form of horizontal and vertical connectors along the short-circuited main diagonal of the original matrix, this can be easily transformed into an array of 5 × 6 or 6 × 5 LEDs arranged on a regular grid. A similar pattern could be used for a 10 × 11 matrix that could be used to drive up to 110 keys (including a few indicator LEDs) on a modern
PC keyboard A computer keyboard is a built-in or peripheral input device modeled after the typewriter keyboard which uses an arrangement of buttons or keys to act as mechanical levers or electronic switches. Replacing early punched cards and paper tape t ...
, where each key switch includes a small serial diode or LED, so that only 11 pins would be needed to individually control all of them (these individual diodes or LEDs inside each key switch would also avoid all common and undesirable "ghosting" effects, that are hard to eliminate completely when an arbitrary number of keys at any position are pressed at the same time). Charlieplexing can also be used to significantly reduce the number of controlling pins for much larger matrixes, such as modern digital displays with high resolution. E.g. for a 4K RGB display at 3840 × 2160, this requires more than 8 millions individually addressable pixels, each featuring at least 3 colored LEDs or LCD cells, for a total of nearly 25 millions LEDs or LCD cells. Using a conventional x/y multiplexing would require at least (3840 + 2160 × 3) = 10320 controlling pins and many selection chips for controlling rows and columns all around the panel of LEDs or LCD cells. But with Charlieplexing, this can be reduced to only 63 controlling pins for the selection gate of display columns, plus 46 × 3 controlling pins for the selection and power-activation of RGB display rows, by a single transistor for each row or column (possibly with an extra common shielding ground to limit their mutual coupling); these controlling pins can easily fit around the output pins of one or two controller chips, even if we add the few additional pins needed on the controller for power, ground, clocks and I/O buses, surface-mounted with a high density and low cost on a single-layer PCB, and no need of complex routing and interconnection holes between layers; a dual layer is needed only for the basic Charlieplexing matrix mounted on borders of the panel itself. Positions in the Charlieplexed matrix are not reduced to be just LEDs or diodes, they can be filled as well by two pins of a transistor (including its gate pin) so that its third pin is used as output to further control other devices, such as the horizontal and vertical selection lines of a large flat display panel (in that case, the two Charlieplexed matrices of transistors controlling and activating the rows or columns of the panel will be smartly arranged all along a border of that panel).


Complementary drive

Charlieplexing in its simplest form works by using a
diode matrix A diode matrix is a two-dimensional grid of wires: each "intersection" wherein one-row crosses over another has either a diode A diode is a two-Terminal (electronics), terminal electronic component that conducts electric current primarily in ...
of complementary pairs of LEDs. The simplest possible Charlieplexed matrix would look like this: By applying a positive voltage to pin X1 and grounding pin X2, LED 1 will light. Since current cannot flow through LEDs in reverse direction at this low voltage, LED2 will remain unlit. If the voltages on pin X1 and pin X2 are reversed, LED 2 will light and LED1 will be unlit. The Charlieplexing technique does not actually make a larger matrix possible when only using two pins, because two LEDs can be driven by two pins without any matrix connections, and without even using tri-state mode. In this two-LED example, Charlieplexing would save one ground wire, which would be needed in a common 2-pin driver situation. However, the 2-pin circuit serves as a simple example to show the basic concepts before moving on to larger circuits where Charlieplexing actually shows an advantage.


Expanding: tri-state logic

If the circuit above were to be expanded to accommodate three pins and six LEDs, it would look like this: This presents a problem, however: In order for this circuit to act like the previous one, one of the pins must be disconnected before applying charge to the remaining two. If, for example, LED 5 was intended to be lit, X1 must be charged and X3 must be grounded. However, if X2 is also charged, LED 3 would illuminate as well. If X2 was instead grounded, LED1 would illuminate, meaning that LED 5 cannot be lit by itself. This can be solved by utilizing the tri-state logic properties of microcontroller pins. Microcontroller pins generally have several possible states: * "output": the pin "drives". It can drive "high" (often 5 V) or "low" (usually 0 V). * "input": the pin does not intentionally drive at all, but instead senses what some other device (or pin) is driving. It may draw current while doing so. * "high-Z": the pin is in a high-impedance state. Essentially, it is disconnected from the circuit; it will neither drive nor draw any current. This allows the circuit to see any number of pins connected at any time, simply by changing the state of the pins. In order to drive the six-LED matrix above, the two pins corresponding to the LED to be lit are connected to 5 V (I/O pin "high" =
binary number A binary number is a number expressed in the Radix, base-2 numeral system or binary numeral system, a method for representing numbers that uses only two symbols for the natural numbers: typically "0" (zero) and "1" (one). A ''binary number'' may ...
1) and 0 V (I/O pin "low" = binary 0), while the third pin is set in its high-impedance state. In doing so, current leakage out of the third pin is prevented, ensuring that the LED which should be lit is the only one lit. Because the a diode (such as a LED) reduces the voltage available in series, current will not flow across alternate paths (an alternate 2-LED path exists for every pair of pins in the 3-pin diagram, for example), so long as the voltage drop in the desired LED path is less than the total voltage drop across each string of alternative LEDs. However, in the variant with individual resistors this voltage-regulating effect does not affect the alternative paths so all LEDs used will not have to be lit with half the supply voltage applied because this variant does not benefit from the voltage-regulating effect of the desired path LED. By using tri-state logic, the matrix can theoretically be expanded to any size, as long as pins are available. For ''n'' pins, ''n''(''n'' − 1) LEDs can be in the matrix. Any LED can be lit by applying 5 V and 0 V to its corresponding pins and setting all of the other pins connected to the matrix to high-impedance mode. Under the same constraints as discussed above up to ''n'' − 1 LEDs sharing a common positive or negative path can be lit in parallel.


Expanding

The 3-wire circuit can be rearranged to this near-equivalent matrix (resistors have been relocated). This emphasizes the similarities between ordinary grid multiplex and Charlieplex, and demonstrates the pattern that leads to "the ''n''-squared minus ''n''" rule. In typical usage on a circuit board the resistors would be physically located at the top of the columns and connected to the input pin. The rows would then be connected directly to the input pin bypassing the resistor. The first setup in the image on the left is suitable only when identical LEDs are used since a single resistor is used for current-limiting through more than one LED (though not at the same time—rather, one resistor limits current through only one LED in a given column at one time). This is contrasted to the second configuration with individual resistors for each LED, as shown in the image on the right. In this second configuration, each LED has a unique resistor paired with it. This makes it possible to mix different kinds of LEDs by providing each with its appropriate resistor value. In both of these configuration, as shown in both the left and the right image, the relocated resistors make it possible to light multiple LEDs at the same time row-by-row, instead of requiring that they be lit individually. The row current capacity could be boosted by an NPN
emitter follower In electronics, a common collector amplifier (also known as an emitter follower) is one of three basic single-stage bipolar junction transistor (BJT) amplifier topologies, typically used as a voltage buffer. In this circuit, the base termi ...
BJT transistor instead of driving the current directly with the typically much weaker I/O pin alone.


Problems with Charlieplexing


Refresh rate

Refresh rate is not a problem if Charlieplexed
Active matrix addressing Active matrix is a type of addressing scheme used in flat panel displays. It is a method of switching individual elements of a flat panel display, known as pixels. Each pixel is attached to a transistor and capacitor that ''actively'' maintain th ...
is used with a Charlieplexed LED array. In common with x/y multiplexing, however, there can be refresh rate issues if
passive matrix addressing Passive matrix addressing is an Display addressing scheme, addressing scheme used in early liquid crystal displays, liquid crystal displays (LCDs). It is a matrix addressing scheme, meaning that only ''m'' + ''n'' control signals are requi ...
is used. Because only a single set of LEDs, all having a common anode or cathode, can be lit simultaneously without turning on unintended LEDs, Charlieplexing requires frequent output changes, through a method known as
multiplexing In telecommunications and computer networking, multiplexing (sometimes contracted to muxing) is a method by which multiple analog or digital signals are combined into one signal over a shared medium. The aim is to share a scarce resource� ...
. When multiplexing is done, not all LEDs are lit quite simultaneously, but rather one set of LEDs is lit briefly, then another set, and eventually the cycle repeats. If it is done fast enough, they will appear to all be on, all the time, to the human eye because of
persistence of vision Persistence of vision is the optical illusion that occurs when the visual perception of an object does not cease for some time after the Light ray, rays of light proceeding from it have ceased to enter the eye. The illusion has also been descr ...
. In order for a display to not have any noticeable flicker, the
refresh rate The refresh rate, also known as vertical refresh rate, vertical scan rate or vertical frequency in reference to terminology originating with the cathode-ray tubes (CRTs), is the number of times per second that a raster-based display device displa ...
for each LED must be greater than the
Flicker fusion threshold The flicker fusion threshold, also known as critical flicker frequency or flicker fusion rate, is the frequency at which a flickering light appears steady to the average human observer. It is a concept studied in vision science, more specificall ...
; 50 Hz is often used as an approximation. As an example, 8 tri-state pins are used to control 56 LEDs through Charlieplexing, which is enough for 8 7-segment displays (without decimal points). Typically, 7-segment displays are made to have a common cathode, sometimes a common anode, but without loss of generality a common cathode is assumed in the following: All LEDs in all 8 7-segment displays cannot be turned on simultaneously in any desired combination using Charlieplexing. It is impossible to get 56 bits of information directly from 8 trits (the term for a base-3 character, as the pins are 3-state) of information, as 8 trits fundamentally comprises 8 log23, or about 12.7 bits of information, which falls far short of the 56 bits required to turn all 56 LEDs on or off in any arbitrary combination. Instead, the human eye must be fooled by use of multiplexing. Only one 7-segment display, one set of 7 LEDs can be active at any time. The way this would be done is for the 8 common cathodes of the 8 displays to each get assigned to its own unique pin among the 8 I/O ports. At any time, one and only one of the 8 controlling I/O pins will be actively low, and thus only the 7-segment display with its common cathode connected to that actively low pin can have any of its LEDs on. That is the active 7-segment display. The anodes of the 7 LED segments within the active 7-segment display can then be turned on in any combination by having the other 7 I/O ports either high or in high-impedance mode, in any combination. They are connected to the remaining 7 pins, but through resistors (the common cathode connection is connected to the pin itself, not through a resistor, because otherwise the current through each individual segment would depend on the number of total segments turned on, as they would all have to share a single resistor). But to show a desired number using all 8 digits, only one 7-segment display can be shown at a time, so all 8 must be cycled through separately, and in a 50th of a second for the entire period of 8. Thus the display must be refreshed at 400 Hz for the period-8 cycle through all 8 segments to make the LEDs flash no slower than 50 times per second. This requires constant interruption of whatever additional processing the controller performs, 400 times per second.


Peak current

Due to the decreased
duty cycle A duty cycle or power cycle is the fraction of one period in which a signal or system is active. Duty cycle is commonly expressed as a percentage or a ratio. A period is the time it takes for a signal to complete an on-and-off cycle. As a for ...
, the
current Currents, Current or The Current may refer to: Science and technology * Current (fluid), the flow of a liquid or a gas ** Air current, a flow of air ** Ocean current, a current in the ocean *** Rip current, a kind of water current ** Current (hydr ...
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 (roughly) constant in order for it to maintain constant brightness, thus requiring the peak current to increase proportionally. This causes a number of issues that limit the practical size of a Charlieplexed display. * LEDs often have a maximum peak current rating as well as an average current rating. * If the microcontroller code crashes, and a one-LED-at-a-time Charlieplex is being used, the single LED left lit is under much higher stress than it would be in a row-at-a-time Charlieplexed display or in a traditionally multiplexed display, increasing the risk of a failure before the fault is spotted.


Requirement for tristate

All the outputs used to drive a Charlieplexed display must be tristate. If the current is low enough to drive the displays directly by the I/O pins of the microcontroller, this is not a problem, but if external tristates must be used, then each tristate will generally require two output lines to control, eliminating most of the advantage of a Charlieplexed display. Since the current from microcontroller pins is typically limited to about 20 mA, this severely restricts the practical size of a Charlieplexed display. However, it can be done by enabling one segment at a time.


Forward voltage

When using LEDs with different forward
voltage Voltage, also known as (electrical) potential difference, electric pressure, or electric tension, is the difference in electric potential between two points. In a Electrostatics, static electric field, it corresponds to the Work (electrical), ...
s, such as when using different color LEDs, some LEDs can light when not desired. In the diagram above it can be seen that if LED 6 has a 4 V forward voltage, and LEDs 1 and 3 have forward voltages of 2 V or less, they will light when LED 6 is intended to, as their current path is shorter. This issue can easily be avoided by comparing forward voltages of the LEDs used in the matrix and checking for compatibility issues. Or, more simply, using LEDs that all have the same forward voltage. This is also a problem where the LEDs are using individual resistors instead of shared resistors, if there is a path through two LEDs that has less LED drop than the supply voltage these LEDs may also illuminate at unintended times.


Alternative use cases and variants


Input data multiplexing

Charlieplexing can also be used to multiplex digital input signals into a microcontroller. The same diode circuits are used, except a switch is placed in series with each diode. To read whether a switch is open or closed, the microcontroller configures one pin as an input with an internal pull-up resistor. The other pin is configured as an output and set to the low logic level. If the input pin reads low, then the switch is closed, and if the input pin reads high, then the switch is open. One potential application for this is to read a standard (4 × 3) 12-key numeric keypad using only 4 I/O lines. The traditional row-column scan method requires 4 + 3 = 7 I/O lines. Thus Charlieplexing saves 3 I/O lines; however it adds the expense of 12 diodes, (since the diodes are only free when LEDs are used). A variation of the circuit with only 4 diodes is possible, however this reduces the rollover of the keyboard. The microcontroller can always detect when the data is corrupt, but there is no guarantee it can sense the original key presses, unless only one button is pressed at a time. (However, it is probably possible to arrange the circuit so that if at most any two adjacent buttons are pressed, then no data loss will occur.) The input is only lossless in the 4-diode circuit if only one button is pressed at a time, or if certain problematic multiple key presses are avoided. In the 12-diode circuit, this is not an issue, and there is always a one-to-one correspondence between button presses and input data. However, there are so many diodes that are required to use the method (especially for larger arrays) that there is generally no cost savings over the traditional row-column scan method, unless the cost of a diode is only a fraction of the cost of an I/O pin, where that fraction is one over the number of I/O lines.


Projected capacitance touchscreens and keypads

These do not use diodes but rely on the change in capacitance between crossing conductive tracks to detect the proximity of one or more fingers through non-conducting materials such as plastic overlays, wood, glass, etc. - even double glazing. These tracks can be made from a wide range of materials, such as printed circuit boards, transparent Indium Tin oxide, insulation coated fine wire, etc. The technology can range in size from very small, as in "fingerprint detectors", to very large, as in "touch interactive video walls". Usually, a limit is imposed on the maximum width of an x/y wired touchscreen, because the horizontal track resistance gets too great for the product to function properly. However, a diagonally wired touchscreen (as described later in this section) does not have this problem. There are no LEDs or diodes and, at any one time, only one I/O line is set as an output, the remaining I/O lines being set as high-impedance inputs or "grounded". This means that power requirements are very small.


GuGaplexing

In 2008, Dhananjay V. Gadre devised ''Gugaplexing'', which is like Charlieplexing with multiple drive voltages.


Chipiplexing

In 2008, Guillermo Jaquenod's so called ''Chipiplexing'' adds emitter followers to boost the strength of the row drive allowing rows wider than a single microcontroller port could drive to be lit simultaneously.


Cross-plexing

In 2010, the Austrian chip manufacturer austriamicrosystems AG (named ams AG since 2012, and ams-OSRAM AG since 2020) introduced the multiplexing LED driver IC AS1119, followed by the AS1130 in 2011. Also, the analog & mixed signal (AMS) division (named Lumissil Microsystems since 2020) of Integrated Silicon Solution Inc. (ISSI) introduced the IS31FL3731 in 2012 and the IS31FL3732 in 2015. They all use a technique they call ''cross-plexing'', a variant of Charlieplexing with automatic detection of open or shorted connections and anti-ghosting measures.


Tucoplexing

In 2019, Micah Elizabeth Scott developed a method to use 3 pins to run 4 LEDs and 4 switches called ''Tucoplexing''.


Pulse-width modulation

Charlieplexing can even be used with
pulse-width modulation Pulse-width modulation (PWM), also known as pulse-duration modulation (PDM) or pulse-length modulation (PLM), is any method of representing a signal as a rectangular wave with a varying duty cycle (and for some methods also a varying peri ...
to control the brightness of 12 LEDs with 4 pins.


Code example

In the following
Arduino Arduino () is an Italian open-source hardware and open-source software, software company, project, and user community that designs and manufactures single-board microcontrollers and microcontroller kits for building digital devices. Its hardwar ...
code example, the circuit uses ATtiny 8-pin
microcontroller A microcontroller (MC, uC, or μC) or microcontroller unit (MCU) is a small computer on a single integrated circuit. A microcontroller contains one or more CPUs (processor cores) along with memory and programmable input/output peripherals. Pro ...
which has 5 I/O pins to create a 7 -segment display. Since a 7-segment display only requires control of 7 individual LEDs, we use 4 of the ATtiny I/O pins as Charlieplexed outputs (''n'' (''n'' - 1)), i.e. the 4 pins could be used to control up to 12 individual LEDs (here we just use 7 of them). Leaving the fifth I/O pin to be used as digital or analog input or another output. // ATtiny code. // Reads analog (or digital) input from pin 4 and every time the input goes below a set threshold. // It counts one and displays the increase in count either by activating up one of four LEDs (or transistors) // or one of twelve Charlieplexed LEDs. // SET THESE VALUES: int threshold = 500; int maxCount = 7; //////////////////// boolean sensorTriggered = false; int count = 0; int sensorValue = 0; long lastDebounceTime = 0; // The last time the output pin was toggled. long debounceDelay = 50; // The debounce time; increase if the output flickers. //////////////////////////////////////////////////////////////////////////////// void setup() //////////////////////////////////////////////////////////////////////////////// void loop() void testDigits() //////////////////////////////////////////////////////////////////////////////// void readSensor() //////////////////////////////////////////////////////////////////////////////// void charlieLoop() //////////////////////////////////////////////////////////////////////////////// void charliePlexPin(int myLed) //////////////////////////////////////////////////////////////////////////////// void spwm(int freq, int pin, int sp)


See also

*
Anti-parallel (electronics) In electronics, two anti-parallel or inverse-parallel devices are connected in parallel but with their polarities reversed. One example is the TRIAC, which is comparable to two thyristors connected back-to-back (in other words, reverse parall ...
*
Flicker fusion The flicker fusion threshold, also known as critical flicker frequency or flicker fusion rate, is the frequency at which a flickering light appears steady to the average human observer. It is a concept studied in vision science, more specifically ...
*
Connectivity (graph theory) In mathematics and computer science, connectivity is one of the basic concepts of graph theory: it asks for the minimum number of elements (nodes or edges) that need to be removed to separate the remaining nodes into two or more Connected compone ...
*
Polarity reversing switch In electrical engineering, a switch is an electrical component that can disconnect or connect the conducting path in an electrical circuit, interrupting the electric current or diverting it from one conductor to another. The most common type o ...


Notes


References


Further reading

* * * {{cite magazine , title=Microcontroller drives 20 LEDs , author-first=Dhananjay V. , author-last=Gadre , magazine= EDN , date=2007-09-27 , id=CA6483826 , url=https://www.edn.com/video-design-idea-microcontroller-drives-20-leds/ , url-status=live , archive-url=https://web.archive.org/web/20211225220441/https://www.edn.com/video-design-idea-microcontroller-drives-20-leds/ , archive-date=2021-12-25 Digital circuits