I've been working on a LED coffee table , with 112 RGB led's underneath a frosted glass top. This is accomplished by multiplexing the common cathode leds. the red green and blue colors are on for roughly 2ms a piece, much faster than the human eye can perceive so it appears a solid color.

The table has two atmega's in it one to control the tlc5940 chips, and one to interface with the user and the computer. the two chips communicate via i2c.

the master board has a ftdi chip for serial comms with a computer and connection to a control panel.

Well they are common cathode led's so they have 3 positive leads and one negative. You can control which color is lit by activating a separate transistor in my schematic. when the program begins the first red grayscale pwm information gets loaded onto the TLC5940. then the red transistor pin is driven high by the atmega, while the two other transistors are driven low. after an amount of time has passed ~ 2 ms all of the transistors are shut off and the next information is uploaded to the tlc5940, this time its the green pwm info. then after the upload has finished the green transistor is driven high. this process cycles over and over...

hope this is helpful, take a look at the send_data() function in my code