8 X 40 LED Matrix

I happened across an 8×40 LED Matrix at a surplus store online (You can get them while they are available at KP’s Surplus) that I thought could be of interest, so I bought one.

The display panel appears to have been part of a larger display. So, the curious person I am, I set out to see if I could make this thing work.

My 1st step was to see what electronics were onboard. There were some familiar IC’s, a bunch of transistors, and a couple of unfamiliar IC’s. The Familiar IC’s were the 74164 shift registers and 7414 Hex inverters. The unfamiliar IC’s were a DS8820N and SN75183. I’ll get to these later.

The layout looked perfect, each row appeared to be individually driven and the shift registers controlled each column. There was a transistor on each output of the shift registers to provide the current to drive the LED’s. Here’s a photo of the back of the board.

The board also had four male banana plug connectors labeled 5L, GL, 5D, and GD, as well as two single row 15 pin header connectors labeled J1 and J2.

So with a basic understanding of how shift registers worked, I set off to see if I could make this thing do something. The 1st step was to find out what the two unknown IC’s were and how they affected the circuit. So I looked them up.

The DS8820N was found to be a Dual Line Receiver and the SN75183 was a Dual Differential Line Driver. These are essentially the transmit and receive IC’s. I also determined through tracing the circuit that the connectors were as follows:

  • GL – Logic Ground
  • 5L – 5V Logic
  • GD – Display (LED) Ground
  • 5D – Display (LED) 5V
  • J1 – Input for Row, Clock, and Data (See below)
  • J2 – Output for Row, Clock, and Data (See Below)

These are the pin-outs for J1 and J2.

My goal was to control this via an Atmel ATMEGA328P microcontroller. The way the DS8820N works is it takes 2 inputs one for high logic and one for low logic and converts those into a single high/low output. So to set a low output for the data to the shift registers, the Data high input of JP1 would be low and the Data Low input of JP1 would be high. To set a High output for the data to the shift registers, the Data High input would be high and the Data Low input would be low. The same holds true for the clock inputs. Well, I didn’t want to tie up 4 lines of my microcontroller to serve the purpose of two so I purchased an SN75183 to let it do the toggling for me. That is the purpose of this IC on the board as well. It takes the data and clock from the final stage of the shift register chain and creates an output on J2. This allows these modules to be daisy chained together end to end probably only limited by how fast the data can be shifted and still provide a smooth looking display.

Here are a couple of close-ups of each end of the board showing the banana plug connectors, J1 and J2.

The 7414’s take the high level input from the Row Enable pins and provide logic to drive the sinking Row transistor pairs.

I did use separate power supplies for the display power and the logic power. Originally I tied them all together on my breadboard power supply which consists of a 7805 regulator circuit with a heatsink. When the display was in operation, it drew so much current that the heat sink was too hot to touch for more than a fraction of a second. By providing power to the display with an old regulated 2A 5V supply from an old router, and just powering the logic with my breadboard power supply, the issue went away. It would still get pretty warm but not much more than normal. I could probably get away with just using the 5V 2A supply, I just haven’t done that as of yet.

So, with the circuit pretty much figured out, I went on to write the software for the microcontroller to drive this display. An LED marquee was one of the projects that got me into microcontrollers. I built from scratch a 5 x 24 marquee based on the NerdKit LED Array project. You can see my build in their forum posts Here where I describe my build and Here where I posted my final code for that project. I thought with modification, I should be able to make the bulk of that code work with this display. It took a bit more than I thought but in the end, persistence prevailed and the display came to life.

Here is the Source for the project.

Here’s a brief video of the display in operation.



This entry was posted in News, Projects. Bookmark the permalink.

6 Responses to 8 X 40 LED Matrix

  1. Ronald R. Loveland Jr. says:

    Hello, I have been through your whole web site, and your story is very much like mine. I have been active in electronics, since I was 10 years old, and programming since I was 13. A couple times I went to college to learn some programming, but knew way more than the class from being self taught. I am 45 now and design electronic circuits for work and play. This is where it gets good.

    I too, purchased an 8×40 display from KP surplus back in 2010-2011. I reverse engineered the board, just as you did and hooked the display up to an Atmega 168A. It has been displaying a clock in my shop ever since. The next time I went back to KP surplus, they were down to 10 units left. I bought them all. What a deal!

    The code you have written to run the display is great. Beats the heck out of my code, which just throughs a number into an 8×8 area of the display, no scrolling or special effects.

    My question to you is this? May I have permission to port your code to my programming environments? I use BASCOM AVR and Arduino (C++). I would be sure to keep credits going to you for the original code. The ultimate would be to make a C++ class out of the code and turn it into a library. I know this might be a bit much as there are no more displays for sale, but it sure would be fun!

    Thank you for sharing this project with everyone. It is people like us who help spark the interest of more people like us, to push the world of technology ever further!

    Ron Loveland Jr.

    • Rick_S says:

      My code is a variation of code written for a display promoted by NerdKits. NerdKits has since quit selling hardware or updating their site though it is still up and I do frequent their forums still. I had their permission to use it freely so I heavily modified it for these displays. You can use the code any way you choose. If you want to give props for it’s origins, I appreciate that. I played with BascomAVR when I first started programming AVR’s but preferred the free alternative that AVRGCC gave.

      I’ve thought of making a clock from one of those displays… could be fun.

  2. fabz says:

    Hey Rick

    Thank you very much for taking time to look at our case.
    We will keep on trying! 😉

  3. fabz says:

    Hallo there,

    we are working to a project like yours, although we already have an 8 x 80 led matrix
    (here you can fine the model http://www.embeddedadventures.com/LED_matrix_display_LDP-8008.html). we are struggling to understand how to connect the matrix to the Arduino (we are using an Arduino Duemilanove).
    We are very new to this all and not experts in electronics. We were wondering if you could share with us the schematic to understand what should be connected to what?
    Also, do you think your code would work with our LED board.

    Man, we are veeery impressed by your project!!!

    • Rick_S says:

      I’d like to help out, but they really don’t give enough information on their website to exactly describe what needs to be done. They use shift registers though similar to the boards I used, but they have a 4 bit row address section that based on the state of those pins, a different row is selected. If they weren’t in the UK, I’d be tempted to order one to play with, the price seems right. However, shipping would offset that pretty quickly. Most likely the code I wrote could be modified to drive this display. As for using arduino, look into the shiftout command. I’m not into the processing language, so I can’t really be of much help there. But shiftout is commonly used for shift registers on an arduino platform.

      Good luck in your project,


  4. Pingback: KPSurplus » Weekly WhatIsIt – The Lost Levels

Leave a Reply

Your email address will not be published. Required fields are marked *