Schematic is attached. Knock yourself out.

(It's actually an old design which didn't work, but it still gets the idea across)
The challenge was to control 4 of
these babies to create a 16x16 RGB display, and possibly write a small game for it (I'm thinking Snake, or Tetris). The display will support a 15-bit colour depth, i.e. 2^15 different colours.
The matrix is multiplexed, which means I switch through each row of LED's (16 rows in total) and write the pixel data in each column (48 columns in total, because 16 columns * 3 colours = 48).
Each LED is actually pulsed with a current of about 32 mA as opposed to the normal 2 mA limit. Normally this would destroy the LED, but since each LED is only going to be turned on a 16th of the time, I am able multiply the total current which would flow through the LED by 16.
In order to save pins for the micro controller, the 16 rows are demultiplexed by a 4-16 demultiplexer, and the data for the 48 columns are output serially into shift registers. That compresses the 64 pins which would need to have been connected to the micro controller down to just 13 pins.
The micro controller constantly loops through the pixel array and refreshes all of the LEDs. 32 different brightness levels can be achieved per LED by modulating a PWM signal onto the column data.
The micro controller also has a UART communication port leading to the main connector of the circuit. This allows me to either communicate to the display via USB<->computer, or another micro controller.
TheComet
TheComet