Saturday, February 12, 2011

6 Digit Display Module


During the development of embedded projects debugging sometimes can get difficult. There are a number of ways to help troubleshoot problems - a scope or a logic analyzer go a long way narrowing down the problem (although a bit expensive for the hobbyist), a serial connection is extremely useful (but needs a PC). A dedicated debug screen is also an easy and cheap way to make sure variables/levels/counters/peripherals do what they are supposed to do. I created this simple 6 digit 7 segment display out of inexpensive materials that only use 3 pins of the microcontroller and can display information in human readable format. The display module can be used with any microprocessor/microcontroller and can be used as an actual display for other projects that need to display data on 7 segment displays.


The design is based on the 74HC595 CMOS Serial-In-Paralel-Out shift register. One shift register belongs to each 7 segment display (7 bits for the 7 segments + 1 bit for the decimal point). The data displayed is fully static, not multiplexed. As you can see from the schematics there are two connectors on the board: CN1 is the port where data comes in (normally from a microcontroller) and CN2 is an output port that can connect to another similar board. In theory, many display modules like this can be daisy chained to make up a longer display.
Jumper JP1 allows the use of common cathode and/or common anode 7 segment modules of your choice.
The current limiting resistors are to be selected according to the specifications of the actual 7 segment displays.

Capacitors C8-C13 are only needed if a great number of such modules are chained together at higher frequencies. I use mine as a single module with a 8 MHz PIC micro with no capacitors and have never observed any problem.

Board, hardware

Since I wanted to use the same circuit for a clock project as well, the first step in designing the board was to find 7 segment displays I liked. After some browsing I found one that I liked. It comes in several colours and in common anode and common cathode versions. I got some red and blue, common cathode versions. The size of these 7 segment displays defined the overall size of my board. The size of the board is exactly the size of 6 of these displays next to each other. Looking at it from the front you can't see the board, just the displays.
Front view: Note the PCB is the same size as the total area of the 7 segment displays
One could make the board even smaller (after all, there are only a handful of components on it, even those are SMT), but then you would have to use cables, connectors to connect the board with the displays - something I don't personally like. It just doesn't look good, in my opinion.
Back view: All the SMD parts are on this side
(Apart from the 7 segment displays) the board contains only SMT components. Most components are on one side of the board.

Side view: In this prototype I used IC sockets for the 7 segment display modules, but they can be omitted in a final module and the displays can sit straight on the PCB.


This simple circuit is an excellent way to add some debug functionality to any microprocessor based digital circuit. It can display basic information about almost anything that goes on in the microprocessor. In a daisy chained configuration, although there are some limits to the number of devices chained together, the displayed information doesn't have practical limits. The module can also be used as the main display module of a particular embedded system that requires many 7 segment displays as a display device.