Lösningen är enkare än vad du tror...
Man har bara "på" den rad man vill arbeta med, genom att uppdatera alla raderna snabbt så ser det ut som man kan tända och släcka dioderna var för sig....
Hoppas du för stog vad jag menar (lite flumit skivet)
Aha..du måste använda muliplexing! Det är en teknik som går ut på att man i snabb takt tänder [1,1] och sedan [2,2], sedan [1,1], sedan [2,2]...
ögat blir då lurat och tror att de lyser samtidigt fast de egentligen blinkar varannan gång. För att man inte ska se flimret så måste du växla ca 50ggr per sekund eller mer.
Hur du lämpligast löser programmeringen har jag inget direkt bra svar på, men jag skulle i allfall välja att konfigurera en avbrottsstyrd timer som körs med jämna mellanrum och i den göra utskrifterna. I huvudprogrammet skulle du kunna skriva till en global variabel som används av avbrottsrutinen.
Ett tips till... använd fem bytes för att lagra varsin kolumn. Avbrottsrutinen får sedan läsa bit för bit (utom den sista) i de fem byten och tända motsvarande LED. Så håller den på i evigheter... sen är det bara att uppdatera de fem byten från huvudprogrammet
När vi ändå kommer in på den diskussionen igen:
"Blinkhastigheten" beror ju på hur snabbt lysdioderna kan tända/släcka och om de släcks med en gång eller snabbt tonar ner.
TV-apparater (gamla hederliga) kör ju med 50Hz och de upplevs ju inte som särskillt flimriga pga fosforet (om jag inte är ute och cyklar..)
Men visst, ju snabbare desto vänligare för ögonen. Dessutom blir det lättare/trevligare att filma om de blinkar snabbt.
Efterlysningen på en diod är obefintlig. Så där blir det flimmer. En TV funkar ju bättre. men även en glödlampa, som har efterlysning flimmrar vid 50Hz. Vid 75Hz är det svårt att se något. Men gå gärna över 100Hz. Ofta kommer man klart över de frekvenserna utan att anstränga sig.