Fork me on GitHub

Project Notes

#080 DoubleShift

Driving a 4-Digit 7-Segment display with only 3 pins, using two 74HC595 shift registers and some NPN BJTs


See Led4Digit7Segment for general discussion of 4-digit 7-segment displays, how to drive them, and the details of the specific SMA420564 unit used in this test.

The SingleShift experiment demonstrated how to use a 74HC595 shift register and some NPN BJTs to save Arduino pins. But it still needed 7 pins (3 for the 74HC595, 4 for the BJTs).

This circuit is a variation that uses two registers and means we reduce the number of Arduino pins required to 3.

It works by chaining the 74HC595 shift registers: each data update pushes two bytes down the pipe. The first byte encodes the selection of which digit(s) to enable, and the second byte endodes the selection of which LED segments to enable.

The LED segments and BJTs are wired to the shift register outputs accordingly. So then it is just a matter of pushing the right bytes out to the shift registers and latch the result.

As before, the circuit puts the current-limiting resistors in series of the common cathode pins. Which is a bit of an approximation, as current (brightness) varies a little depending on how many LED segments are on. The better way is to put a resistor on each segment pin. But this was good enough for a simple test.

When fully on (e.g. displaying 8888), it appears the display and associated components on the breadboard are drawing an average of about 2.87mA. A direct replacement of the S9013 BJTs with n-channel FETs - see Led4Digit7Segment/DoubleShiftWithFETs - results in an average current of 2.47mA).


The Breadboard

The Schematic

The Build

Credits and references

About LEAP#80 7-SegmentCMOS/TTLArduino
Project Source on GitHub Project Gallery Return to the LEAP Catalog

This page is a web-friendly rendering of my project notes shared in the LEAP GitHub repository.

LEAP is my personal collection of electronics projects, usually involving an Arduino or other microprocessor in one way or another. Some are full-blown projects, while many are trivial breadboard experiments, intended to learn and explore something interesting (IMHO!).

The projects are usually inspired by things found wild on the net, or ideas from the sources such as:

Feel free to borrow liberally, and if you spot any issues do let me know. See the individual projects for credits where due. There are even now a few projects contributed by others - send your own over in a pull request if you would also like to add to this collection.