21 will require three shift registers, they are easy to use, if you want to drive higher current LEDs then use the HEF4794 or a transistor on the output of the 595
This is what I did, I've not done more since.
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1205021534
You will probably want a stable time source since the Arduino does not have one.
http://www.arduino.cc/playground/Main/InterfacingWithHardware#Input