The best example I can think of is the "Peggy," A Light Emitting Pegboard Display. It is a 25x25 LED matrix display driven by an ATmega168 (which is pin compatible with the ATmega328)
The wiki page has a lot of good information. Including a detailed schematic.
There are few things to notice in their layout.
For one, they use a row common anode setup. That is the current source is on the row, and sink on the column. You have yours in row common cathode. There is nothing inherently right or wrong with either layout. Just something to keep in mind when designing your circuit. If using discrete leds, it just means flipping the led connections. If using a prebuilt LED matrix, it is something important to know. (I'll assume you can easily swap the order to match the peggy schematic. If not, just swap column for row in your head)
They use 74HC154 4-16 decoder/demux chips for row select. Since you only need 10 rows (or cols) you can get away with just one. Of course, there is the issue of current. In your case, at 10 x 30mA = 300mA minimum. To solve that problem they used 2STX2220 PNP transistors which will be able to source up to 1.5A per row. A bit over kill in your case. Since you will just use these as row select switches, just about any other pnp transistor that can source your max current should work just as well. Take a look at Transistor Circuits to figure out what resistor values you'll need for full on/off operations.
On the Peggy board, for the column sink driver they use an STP16DP05. But I have found these difficult to find and expensive. There are many other alternatives like the TLC5916 These use a serial input, and can be easily cascaded. If not, a digikey of mouser search for led sink driver will yield many results.
Alternatively, since you already have ULN2803 arrays, you could use two of these with a single current limit resistor per column. That's a lot of pins, so you'll have to get creative, but it could work for the column sink as well.
Avago published a nice application note titled "Introduction to Driving LED Matrices". It covers this and a few other things.
As long as you've got some transistors to drive the LEDs, then you can source your 16-bit PWM from a PSoC3. A single PSoC microcontroller should be able to give you 8x3 16-bit PWM channels. You'll then have to multiplex them.
The PSoC should even be able to handle the multiplexing in hardware, using DMA to stream the image data from memory, and deliver it to the PWM channels. This leaves the CPU to do other important tasks like generating the display data
The PSoC5 has an ARM Cortex M3 core. The good thing about the PSoC chips, though, is that they have re-configurable digital peripherals. This means you can choose to have loads of PWM, or loads of SPI, UARTS, or any combinations. You can wire up all of these peripherals internally, with gates, timers, flip flops, etc.
This means that you can probably make the hardware in the PSoC manage the screen without any intervention by the CPU, giving a good solid image.
Best Answer
Your 8x8 led matric is going to have a circuit similar to the image above. Though the pinouts may be different. (Check if the pinouts are the same for your LED array as mentioned in the image. Most of them are similar.)
To find the exact pinout, you can use a 5V or 3.3V supply and GND. Connect the supply through a resistance (eg. 330 ohm) to any one pin, and connect all the other pins one after another with the ground. Note the LED's that glow. If no LEDs glow, then reverse the polarity and do it again. You should have 8 LEDs glowing by now.
Repeat this process for all the pins and you will be able to make the pinout for your 8x8 led array (dot matrix) yourself.
You could do this using a multimeter. Set the multimeter in the mode to detect short cirucit. In this mode the multimeter's positive probe is set to a weak 5V supply(So series resistance may not be required) and the other probe is at 0V.