I have two 7-segment displays (datasheet here). They are common cathode. The forward voltage for each segment is 2.0 V. The continuous forward current is 25 mA. What I'm looking for is a relatively inexpensive ($3-$4 or less) IC that can drive both of these, using a microcontroller to command it over SPI, or something else that uses few I/O pins. (I've tried looking on digikey.com for a good solution, but I'm not sure what key words to search exactly, and it's difficult to understand the lingo of the datasheets to find out what a particular IC actually does. does anyone know of a good display driver or even a shift register that will work well with this display? If not, do you know what keywords or search terms are best to find what I'm looking for?
In summary, the IC I need has to:

  • Have at least 14 outputs (or can multiplex the 2 7-segment digits)
  • be able to source 25 mA on each output
  • able to be controlled with SPI or something else that takes few pins
  • available in DIP, so I can test it easily on breadboard

Since I am new to sourcing electronics parts for my own projects, I would appreciate any tips on how to read datasheets for relevant information, how to find the exact part I need, or what are some good websites to look for parts on.

  • \$\begingroup\$ these functions of 7 seg. decoder digit driver for LEDs are pretty much obsolete except for ADAFRUIT , SPARKFUN and a few OEM's learn.adafruit.com/adafruit-led-backpack/overview The LED's you have are pretty weak 0.5mcd. \$\endgroup\$ Dec 9, 2016 at 22:21
  • \$\begingroup\$ Instead of asking for a specific IC, maybe ask how to search on Digi-Key instead. Asking for product recommendations is off-topic here. \$\endgroup\$
    – Adam Haun
    Dec 9, 2016 at 23:36

3 Answers 3


By far the best and cheapest way to drive seven segment displays such as this is to use multiplexed drivers like the AMS AS1108 4 digit or the Maxim MAX7219 8 digit constant current drivers even if you only need a couple of displays. If you have other indicator needs then of course they will also drive lots of LEDs in the other digit positions.

enter image description here enter image description here

Both use a single resistor to set the segment currents. Both drive Common Cathode displays. Both support a simple serial drive from something like an Arduino.

By the way, these things are really ridiculously cheap as made up units on Ebay and Amazon where you get an 8 digit MAX7219 module for less than $2 ...that's less than the price of the chip alone on Mouser or Digikey.
I've bought dozens of these and really like the TOOGOO unit which has about the best build quality I've seen.

The AMS chip is SOIC only, but the MAX7219 is available in DIP packaging, though if you buy a complete 8 digit solution you get it all on an easy to use PCB.

  • \$\begingroup\$ Most of the MAX7219/7221s on eBay are counterfeit. They seem to work, though… \$\endgroup\$
    – user39382
    Dec 10, 2016 at 0:15
  • \$\begingroup\$ Thanks this answer was really helpful and I now know enough to weigh the different design options. \$\endgroup\$
    – chen
    Dec 12, 2016 at 15:03
  • \$\begingroup\$ Also, just to note: I had already considered and dismissed the idea of the MAX7219 because I only need to drive 2 digits (and don't want to make my PCB bigger than it needs to be). I ended up deciding to just use a MCU with more I/O, 7 for each segment, and 2 controlling transistors to multiplex the 2 digits. This seemed like the best design option for my specific needs at this point. \$\endgroup\$
    – chen
    Dec 13, 2016 at 15:41

25mA is the absolute maximum forward current of the LED segments at 25°C. Unless you plan on only operating it outside in Canada in the winter you will likely be violating the ratings. 10mA-15mA would be a more reasonable maximum current.

If you can reduce that to 6-7mA you can use a couple 74HC595s with 8 resistors each. They're not designed as LED drivers but they will work fine, and require only a few control lines (you can daisy chain them).

The limit on the HC595 is not from the per output limit, by the way, but the maximum supply/ground current (70mA abs max). All constraints must be simultaneously respected.

There are some specialized power shift registers that have output source drivers built in such as the Microchip MIC5891. This is capable of more current than your LED display can safely handle.

enter image description here

With any type of power logic device you need to take a lot of care with layout or the switching transients will cause logic glitching.

This is static drive so there is no inherent flicker. The shift registers are buffered, so updating does not necessarily introduce any flicker either.

There are other LED driver chips, including some really old muxed parts that may still be available in through-hole but if you can use jellybean parts it will be cheaper and probably better. For example, you could add emitter followers to the HC595.

  • \$\begingroup\$ The OP's displays are common cathode, so the ULN2803 won't help. He'll need high-side drivers. \$\endgroup\$ Dec 9, 2016 at 22:32
  • \$\begingroup\$ @PeterBennett Good point, he could shunt the LEDs but that's far from ideal due to wasted power. \$\endgroup\$ Dec 9, 2016 at 23:23

Yeah I didn't know what it was called at first either, but what you want is called an LED Display Driver. I googled "7 segment display driver ic", made my way to Mouser.com (which is another good site for electronics btw), but that one was an LCD driver. So I went up a level and in Driver ICs I see LED Display Drivers, bingo.

On Digikey, from their ICs page, I just did a ctrl+F for 'Display'(drivers) and sure enough there was only 1 category. From there I suggest you first narrow down the results based on the Configuration - you'll want to select as many as possible because different manufacturers call it different things like '7 Segment + DP' or '8 Segment' etc., all of which would work fine for you. This is a common issue when searching for electronics components across many suppliers, when you start narrowing down the results be as broad as possible - you can always narrow down more later, like when you select the Interface and then sort by Price

Another thing to watch out for is the ratings on Digikey aren't always accurate. Case in point, some of the ICs show a current rating in micro-amps, but this is the quiescent current when it's basically off and not driving the LEDs. When your options become limited, or the price becomes huge, go back and question your initial assumptions.

There are drivers that take serial and do multiple digits, but for those you're never gonna get under the $5 mark. Also I think serial might overcomplicate things, you've only got 2 digits here, so not much data. Plus all the sub-$3 ICs do BCD, not really doing any processing in that price range. If you have the pins, I would just use a single digit 7-segment decoder/driver, wire both digits to the same outputs, and you just set which digit is active by turning on 1 cathode or the other. Take a look at the CD54HC4511 by TI, the datasheet explains everything you need to know - you just gotta read it. The BLanking, LampTest, and LatchEnable bits aren't really necessary to turn on and off with the microcontroller, you can just hook those up to the appropriate + and - rails and then it'll just be working as long as your board is powered. Don't forget a resistor, you don't need one for each LED, just the common cathode. You'll set the current and thus the brightness with that resistor - calculate the values that give you the min/max current first, then you'll adjust so it looks ok. So that's 6 output pins total - you could get it down to 5 with a couple transistors (1 PNP and 1 NPN), connecting your single output to the base of both transistors. Then the transistors set which digit's cathode is active. The microcontroller can very quickly switch between the two digits, giving the appropriate BCD value for each.

But if you don't have the pins, then you'll have to pony up for one that does serial and multiplexes the digits independently, like this MC14489B, and then just figure out how to communicate with it serially. That might be more work than it's worth for 2 pins on the MCu.

  • \$\begingroup\$ Thanks for your input. I decided for my project to use a MCU with more I/O, 7 for each segment, and 2 controlling transistors to multiplex the 2 digits. \$\endgroup\$
    – chen
    Dec 13, 2016 at 15:45

Not the answer you're looking for? Browse other questions tagged or ask your own question.