Hi,
To get a non flickering display i recommend to use a fixed timing. The wole display should be interrupt drven.
To be non flickering you need about 50 complete display updates per second.
(If this needs too much processing power look for "interlacing")
With 8 rows you need 50Hz x 8 = 400Hz interrupt.
Mind that the LEDs are driven with 1/8 duty cycle. To get more brightness you may overdrive the LED current. ( specified max DC led current)
If you see artefacts (from the previous driven row) then you may switch off all columns, then update row, then enable new column.
To calculate the max Leds per row:
The column driver must be able to supply (Led_current x Leds_per_row) worst case for the given duty cycle.
Klaus.