Bienvenido Charles
Todo depende del hardware como es el circuito que vas a usar.
Esto es lo que menos pines ocupa.
http://settorezero.blogspot.com.ar/2010/11/how-to-control-16-leds-with-only-3-io.htmlEso es 4x4, si quisiera 8x8 podrias usar 2 de los 74hc595. Uno para las Columnas y otro para las Filas, y manejarlo con 5 salidas. O si tu PIC tiene muchos pines usar un puerto para las columnas/filas.
Podrias enviar los datos al puerto uno por uno, o usar el modulo SPI.
El programa es muy simple, suponete que envias los datos por SPI al 74hc595 para las columnas y controlas las filas con el puerto. El programa seria algo asi:
Envio datos por SPI. (Datos de la primera fila)
Port = 0x01
Latch cuando termina de transmitir (flag TXIF)
Espero un tiempo ( segun tu refresh rate )
Envio datos por SPI ( 2da Fila )
Port = Port << 1 ( 0x02)
Latch when TXIF flag is 1.
Repeat