Projects‎ > ‎Miscellaneous‎ > ‎

Large LED Lit 7 Segment Display

Motivation and Overview

When a friend of mine commissioned me to work on a Jeopardy style quiz game controller, I needed an easy way to display the timer that alerts players how much time they have left to answer a question. The obvious choice was to use a seven segment display, but large sized displays can be very expensive. Being the cheap inventor that I am, I decided to try and make my own. I had a few requirements for this display that had to be fulfilled.

    • Be easily visible in a fully lit classroom from 20 feet away
    • Consume very little current so as to not drain batteries
    • Use very few total LEDs to keep costs down
    • Allow multiplexed control to save on total control lines
Projects by KEC Large 7 segment LED Display

My final display uses 54 total LEDs to form three 4" x 2.5" digits with a colon to separate the minutes and seconds. Each digit is multiplexed, so they share the control lines. The total current through each segment is 3.6mA, but because each digit is only on 1/3 of the time and each segment is comprised of two parallel LEDs, this equates to about 0.6mA per illuminated LED at any given moment. If more current were sourced a much larger display could have been made, but my LEDs are being controlled by a low current sourcing register, and I didn't want to add any more parts.

Diffusion Considerations

In every sort of DIY display I have seen, numerous LEDs have been used to compose each segment. Since I am trying to reduce parts, cost, and current consumption, I would like to limit the number of LEDs to one or two per segment. To do this, I had to come up with some way to adequately diffuse the light while keeping it confined to a specific area. I have had some success with hot glue before, but I needed something more. I tested a few different methods before coming up with my final procedure.

LED Testing Dissipation        LED Dissipation Testing

I finally settled on using a strip of aluminum foil glued to a black background. Two LEDs would be fixed at each end of the foil, and a coating of glue would be placed in a strip over the LEDs and foil to diffuse the light. I had originally planned on using red LEDs, but I liked the way the green ones looked. In my test setup, I only used one LED at a much higher current. The following table details the resulting LED electrical characteristics. 

                  5mm Clear      5mm Clear     3mm Coated     5mm Clear      5mm Coated     5mm Clear
    LED:      White LED       Blue LED        Red LED           Red LED          Red LED        Green LED
    VS:           4.92V               4.92V              4.92V                 4.92V               4.92V               4.92V
    R:             100Ω               100Ω               100Ω                 100Ω               100Ω                100Ω   
    VR:           1.91V               1.56V              2.79V                 2.86V               2.70V               1.89V
    VLED:        3.01V               3.36V              2.13V                 2.06V               2.22V               3.03V
    ILED:        19.1mA            15.6mA           27.9mA               28.6mA            27.0mA            18.9mA

The Build

Like most LED array projects, I used crafting foam board as the base with one side painted black. The first step was to create a design and draw the digits on the board how I wanted them to be. After I added a few outlines to know how the LEDs would be arrange, I poked holes in the foam for each LED lead. This is a very tedious  but very necessary step in the entire process. 

Foam Board LED Base
 Foam Board LED Base  Foam Board LED Base
   Foam Board LED Base

With the LED lead holes outlining the segment placement, I glued aluminum strips in place. These strips will serve as a reflective background for the light, aiding in the overall diffusion. Once the foil was set, I added all of the LEDs for the first digit.

Foam Board LED Base Aluminum Foil
       Foam Board LED Base Aluminum Foil

With all of the LEDs for one segment in place, a layer of hot glue was added. This was a bit messy, but I trim the edges later in the process. After the glue had set, a quick and successful test of each LED let me continue in the building process with confidence. 

Foam Board LED Base Aluminum Foil Hot Glue Dissipation 
      Foam Board LED Base Aluminum Foil Hot Glue Dissipation

With all of the LEDs in place and the hot glue set, the final step was to add the colon. To do this, I made two larger holes to fit the entire LED body into. This kept the LEDs from standing too far off of the board and allowed a layer of glue coating to be placed over them as well. This thing is finally starting to look like something!

Foam Board LED Hot Glue Dissipated 7 Segment LED Display

Electrical Design

Before I could wire anything together, I had to fully decide how the display would be controlled. My primary concern was current consumption - the display segments would be driven by the outputs of an 8 bit shift register which could only source or sink 10mA per pin. Since I didn't want to add any additional components, I had to work within this limitation.  Originally, I had planned on using two series LEDs for each segment so that they would share the current, allowing more current to be driven through each. However, with my decision to use the green LEDs, I was somewhat forced to place them in parallel due to the higher voltage required to turn the LEDs on. Also, a bit of voltage would be taken by the MOSFET used to sink each digit. This means that the two LEDs in each segment will split the total current instead of sharing it. 

I had always planned on multiplexing the digits, so only one would be illuminated at any given time. With that in mind, the current supplied to a segment bus would actually be about 3 times what was actually consumed by any individual segment because each digit would only be on 1/3 of the time. To achieve this kind of control, each identical segment would be wired together such that a single control line turned on all of the segments sharing that bus. Then, to select the digit to be powered, all of the LED cathodes of each individual digit were wired together to be switched by a power MOSFET sinking them to ground.

Schematic LED Seven Segment Display
      LED Wiring Multiplexed Seven Segment Display

With a series resistance of 560Ω for each segment, a source voltage of 5V, and an LED forward voltage of 3V, each register pin should only be sourcing about 3.6mA [(5V - 3V) / 560Ω ]. Considering that each digit is only on 1/3 of the time because of the multiplexed control and each segment is comprised of two parallel LEDs, only about 0.6mA are flowing through any LED at any given time. With the diffusion, this is plenty enough to fully illuminate the display!

Character Generation and Control

Understanding how to multiplex the digits is one thing; actually implementing the control is an entirely different ball game.  If every segment was controlled individually, it would take 22 total control lines: 3 x 7 + 1 for the dot/colon. That number can be cut down to 11 with simple multiplexing: 8 for the segments + 3 for the digit ground controls. Each additional digit would only require one additional control line to turn it on or off by way of a MOSFET ground sink.

The easiest way to control the display with user defined values is with a microcontroller. The following pseudo code can be used as a general guideline of what needs to happen in order for the display to work. This loop would need to be rpeated indefinitely:

Begin Loop:
     Turn off all 3 digits (Logic Low on all ground control lines)
     Set segment control lines to desired value for digit 1
     Turn on Digit 1 Ground Control
     Pause for so long (a few milliseconds)

     Turn off all 3 digits (Logic Low on all ground control lines)
     Set segment control lines to desired value for digit 2
     Turn on Digit 2 Ground Control
     Pause for so long (a few milliseconds)

     Turn off all 3 digits (Logic Low on all ground control lines)
     Set segment control lines to desired value for digit 3
     Turn on Digit 3 Ground Control
     Pause for so long (a few milliseconds)
End Loop

The frequency of the digit selection should be fast enough so human eyes don't detect the flicker such as 100Hz (10ms period). Each digit then has 1/3 of that total period to be on - 3.33ms on time equates to a 33% duty cycle for each digit.

Seven Segment Display Character Generation Table

With the control strategy understood, the only thing left to figure out is how to create the characters to be displayed. There are actually eight segments in a seven segment display if you include the DOT. These eight segments can be seen as an 8 bit code with the DOT being the most significant bit and the A segment being the least significant bit.

           |           |
       F  |           |  B                                             Shown as a 1 byte code:
           |__G__|                                MSB > | DOT | G | F | E| D | C | B | A | < LSB
           |           |
       E  |           | C
           |__D__|       O  DOT

A displayed character is just a combination of specific segments being turned on. Using the binary code to represent the segments, it is farily eash to generate a table outlining all of the useful display possibilities. Because the DOT is optional, it is considered a "don't care" condition and is represented by an "X" in the table.

To turn on the the DOT, the data for the first digit can be "OR'd" with the DOT hex code.

                 C Code: segments[0] |= 0x80;  // Segment_0 = Segment_0 OR 0x08

Download Button

This header file containing definitions for each character may be useful for microcontroller programming.

Finishing Touches

Even after all of the initial testing I did, one LED was still broken and need replacing. This wasn't a big deal. I touched a new LED to the exposed leads of the bad one to see if it was an LED issue or a wiring issue. Then, I was able to cut the leads for both LEDs in that segment, allowing me to peel the entire segment from the aluminum foil up and replace it all. My wife was also quick to point out that the hot glue segments were far from ideal. The glue had kind of globed into curvy blobs instead of straight lines. This was also an easy fix with a sharp Exacto knife. I cut the edges of each segment so they were straight and then touched up the black paint.

LED Replacement
       LED Replacement

Lastly, I thought the display needed some sort of filter to stop ambient light as well as any stray LED light from illuminating the non-lit segments. My first thought was to use a sheet of wire mesh, but this didn't give the effect that I wanted. I eventually decided to use a cheap pair of sheer black pantyhose, cut into four tube segments that I stretched over the display. Adding this filter over the display makes the unlit segments much less noticeable while still allowing the lit segment to shine through.

Pantyhose Filter over the display
         DIY LET lit seven segment display


This is a quick video showing the display counting down. I doubled the video speed to show more character combinations in less time. The reason the LEDs appear to flash in the video is because the camera has a faster capture rate than the human eye. The LEDs are flashing on and off - that is how the multiplexed control works. But the naked human eye cannot see it because the pulse is too fast - around 100 Hz.