Light Emitting Diodes, or LED's, are discrete components able to produce light when a current passes through them. Most microcontroller designs use one or more LED's. This application highlights the utility of driving multiple LED's with a minimum number of I/O pins. Typically, each I/O drives or sources a single LED. To drive more than one, a high I/O count is required. In order to reduce I/O requirements, LED's are multiplexed
in a matrix (as found on a keyboard). The complementary LED drive method proposes to implement even more LEDs while using fewer I/O. LEDs are polarized and can only operate when current flows from anode to cathode (unlike a switch). We can therefore take advantage of this fact. Table 1 shows the number of possible LEDs with respect to the number of I/O pins required. Fifty-six LEDs can be driven using only 8 pins. The only drawback is that only one LED can be driven at a time. Typical applications include; games, bargraphs, audio, video, or driving a single seven-segment LED display.