I'm building a project where I want to use two double-digit 7-segment-LED displays (green, common cathode). From what I've read, a shift register wouldn't be able to source enough current, so I decided upon using a SN74LS248N IC (datasheet). This IC takes Binary Coded Decimals (BCD) as input and has 7 outputs to drive the segment LEDs, minus the decimal point LED. As I understand the *248 ICs are for common cathode displays, so pins connected to active segments are HIGH.
My problem: I can't get the LED segments to light up properly.
When I connect using the driver IC, the segments light up only weakly (it's visible in the pics, but worse in real life). My bench power supply indicates the circuit is using 9 mA.
Now, I've tested the display using only power leads and a 150Ω resistor. That works beautifully, using up more than three times the power: 30 mA according to my bench power supply:
Those tiny displays will not have 4 leds in series, that's a bad choice of symbol. If they did, as Crossroads says, they would not light at all with 5V & 150R series resistors.
I believe the problem here is your choice of display and driver chip. You are using common cathode displays, and therefore your chip needs to source current to the segments. Problem is, if you look at the data sheet, 74ls248 outputs are not meant to drive the display directly, but via transistors (it was originally designed for lamps) There is an internal 2.0K pull-up resistor in the chip, and I suspect this is where the current that is dimly lighting your segments is coming from. Your idea would have worked ok with 74ls247 and common anode displays.
You would be much better off with a max7219! It could drive all 4 of your digits with minimum external components and only 3 Arduino pins.
Alternatively, drive the displays with the Arudino and 4 npn transistors like this.
vincentjacobs:
From what I've read, a shift register wouldn't be able to source enough current, so I decided upon using a SN74LS248N IC.
Well, it is a complete mystery as to why you decided that, as the datasheet (your link didn't work) clearly states:
The LS248 and 249 have active-high outputs for driving lamp buffers
and specifies the output as a 2.0 kΩ pull-up with (incongruously) a maximum current source of 2 mA. Apparently it is more effective at pulling the output LOW at 6 mA when you do not want the segment to light. Nevertheless it should have been obvious from the datasheet that this obsolete IC is distinctly less suitable than a 74HC595.
OK, so the datasheet has errors in the table toward the top of page 5-403 and is badly written overall.
vincentjacobs:
This IC takes Binary Coded Decimals (BCD) as input and has 7 outputs to drive the segment LEDs, minus the decimal point LED. As I understand the *248 ICs are for common cathode displays, so pins connected to active segments are HIGH.
For driving lamp buffers for common cathode displays.