I need to display the temperature acquired by my LM35 on a 2 digit 7 segment display. What I have is LTD383-R2 Common Anode Display. Datasheet here.

The display has 1 Anode pin + 14 Cathode pins for he 14 segments.

Any idea on the best way to drive this (with least components)? I am using Atmega328.

The options that came to mind were

  1. Use a decoder. Google search came up with DS8669 from TI, but it seems that IC is now obsolete.
  2. Go the usual route of using a ULN2803 darlington array IC + 74HC595 shift register. But this would mean using 4 IC's in total (2 for each digit of the display)

Thanks !

  • \$\begingroup\$ If you don't have enough high-drive outputs to directly drive it from the Atmega, you might want to consider a different display. You could also use the '595s to directly drive the segments. Variants exist with DMOS output transistors (not all that cheap). \$\endgroup\$ – Spehro Pefhany Sep 27 '14 at 7:18

Another 16 bit shift register with constant current sinks is the TLC 5926, datasheet available here

  • \$\begingroup\$ Single ic solution, though I'm partial to the i2c version myself. \$\endgroup\$ – Passerby Sep 27 '14 at 20:12
  • \$\begingroup\$ Thanks ! Looks like just what I need :). Whats the part number for the i2c version of this chip? \$\endgroup\$ – Ankit Sep 28 '14 at 12:12
  • \$\begingroup\$ I don't know whether it's second-sourced or not, but from TI, it's the TLC59116. \$\endgroup\$ – EM Fields Sep 28 '14 at 17:09


  • drive the segments directly from your uc. using the 200mA figure from the absolute maxima (which is strictly speaking wrong to do) you have ~ 14 mA per segment. You won't see the difference between 14 and 20 mA.

  • if you have the uc pins but want to use the full 20mA you can use two ULN2003 chips.

  • if you don't have enough uc pins you can go the 595 route. It has a total supply current limit of 70 mA (again: only mentioned in the wretched maxima section), so you have 10 mA per segment. Would be OK for me.

  • if you really want this display AND you have only 3 uc pins AND you want the full 20 mA per segment, sigh, you must go the 4 chips solution (or something equivalent, using a chip that is probably more expensive and more difficult to get).

  • ditch the display and get a more standard one with 2 anodes and shared cathodes (or the other way round), so you can multiplex. If you get a low-current version (use high-brightness displays that work perfect with 1 or 2 mA per segment) you can drive it directly from 10 uc pins.

  • \$\begingroup\$ Thanks for laying out the options. Ideally would love to g with the last one, but unfortunately here in India they are not easy to acquire unless in big quantities. \$\endgroup\$ – Ankit Sep 27 '14 at 10:58
  • \$\begingroup\$ Why not go with the first option? The difference in brightness will be barely noticeable. \$\endgroup\$ – Wouter van Ooijen Sep 27 '14 at 12:45

I personally use the STP16CP05 for plain shift-register operation, or the TLC59116 if I want PWM control of each segment.

The STP16CP05 is the same kind of shift register as a 75HC595 but each output is a constant current sink.

The TLC59116 is an I2C PWM driver which again is a constant current sink.

Both have 16 outputs for driving all 16 segments of your LED display with only 1 resistor and a couple of deccoupling capacitors. Can't get fewer components than that really.

Here's an example with the TLC59116 I sell on eBay.

  • \$\begingroup\$ How about some full disclosure, that's your auction Majenko... \$\endgroup\$ – Passerby Sep 27 '14 at 20:16
  • \$\begingroup\$ I said I use them didn't I? \$\endgroup\$ – Majenko Sep 27 '14 at 20:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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