3 Simple Ways to
Share What You Make

With Instructables you can share what you make with the world — and tap into an ever-growing community of creative experts.

PhotosPhotos

Share one or more photos of a project, recipe, or whatever you've made, quickly and easily.

Step by StepStep-By-Step

Share your step-by-step photos with text instructions of what you made so others can do it too!

VideoVideo

Share your how-to video. You'll need your embed code from a video site such as YouTube.

LED matrix using shift registers

Step 5Modular concepts

modular concepts
«
  • 14 - 8x15 All Illuminated.JPG
  • Prototype.JPG
  • LED_Matrix_Cascading.png
  • Sch_Matrix_Multi_Rows.png
This project is scalable. The only true limiting factor will be how much current your power supply can provide. (The other reality is how many LEDs and register shifters you have available).

Math

I am driving the LEDs at about 15mA (5V-1.8vDrop/220ohms=14.5mA). This means I can drive up to 33 columns with the mic2981 driver (500mA/15mA=33.3). Divided by 8 we can see that this allows us to string together 4 shift registers.

Also consider that you do not need to have all 32 columns stretch from left to right. You could instead create a 16x16 array that is wired the same way you would an 8x32 array. This would be addressed by shifting in 4 bytes.... the first two would shift all the way to the leds for the 9th row, the second two bytes would shift into the first row. Both rows would be sourced by one pin on the row driver.

Cascading Shift Registers

The shift registers used are cascading shift register. This means that when you shift in data, the overflow appears on the Os pin. The becomes very useful as a set of shift registers can be connected to each other, Os pin to Data pin, adding 8 columns with each new chip.

All of the shift registers will connect to the same Latch, Clock, and Enable Output pins on the microcontroller. The "cascading" effect is created when the Os of the first shift register is connected to the Data pin of the second. The programming will need to be altered to reflect the increased number of columns. Both the buffer that stores the information and the function that shifts information in for each column need to be updated to reflect the actual number of columns.

A schematic of this is given below as an example.

Multiple Row Drivers

The row driver (mic2981) can source enough current to drive 32 columns. What if you want more than 32 columns? It should be possible to use multiple row drivers without using more microcontroller pins.

We need the row drivers to source enough current to light the LEDs. If you are using more columns than it is possible to light at one time, addition row drivers can supply the needed current. The same input pins from the microcontroller are used so there is no need to alter the scanning of the rows. In other words, each driver controls the rows for an 8x32 block. Even though 64 columns may have the same PHYSICAL row placement, we divide the row buses in two, using one driver for the 8 rows of the first 32 columns, and a second driver for the 8 rows of the second 32 columns and so forth.

A schematic of this is given below as an example.

Potential Missteps:
1. Do not use multiple row drivers with the same number of columns. Doing so would mean that each shift register pin would be driving more than one LED at a time.
2. You must have a set of 8 resistors (3k3) for each row driver, one set for multiple row drivers will not work as it will not provide the necessary current to switch the gates.

For Example

I decided to expand on the matrix I built earlier. I have added 7 more rows for a total of 15 as that's all I can fit on this protoboard.

I also just found out about a contest that Instructables is doing called "Let it Glow". Here is a video of my take on that. Once again, the digital camera I used to take the video doesn't do it justice. This looks great to the human eye, especially where all the LEDs flash, but doesn't look nearly as good in the video. Enjoy:


Source code for this larger display is included below.
« Previous StepDownload PDFView All StepsNext Step »
2 comments
Feb 23, 2011. 8:26 PMemihackr97 says:
hi, im really interested in this project, specially in the 16x16 array, but I want to use it with an arduino, and also, that each LED is individually addressable (meaning that the code shuld have a place with lines with the text "B00000000, x32" and that each line has a total of 256 0 (Which can be changed to 1 to make tle LED light up) so each line would be a new frame with every LED individually addressable.
The problem is that Im kinda new with microcontrollers and can't write the code, Where can I get it?? can you help me write it??
plz help,
really interested in ur project.
Thanks.
Apr 3, 2009. 5:08 PMformat_c says:
ok lets chek it out

Pro

Get More Out of Instructables

Already have an Account?

close

All Steps Viewing
View all steps of an Instructable on the same page when you're a Pro Member.

Upgrade to Pro today!
41
Followers
6
Author:barney_1