The test board I made. Left the PIC, then ten resistors and then two rows of nine LEDs. This setup could have driven 90 (10 * (10-1)) LEDs, but I was too lazy to make more than two rows.
The PIC that drives the whole shebang. Note my creative use of leads I cut from LEDs and resistors.
The two rows of charlieplexed LEDs. I used high-brightness yellow/orange LEDs that I still had lying around. The current for each LED goes through two resistors, and with 270 Ohm each, that means the LEDs aren't as bright as could have been.
I simplified my code to do some simple tests, programmed the PIC, dropped it in the ciruit, applied power, and it all ran at the first try. Sometimes, things do work out, and that's cool.
But then I had to test what delay I could use in between lighting the individual LEDs. Note that the PIC is running off it's internal oscillator, which is running at 4MHz. Executing a single instruction takes the PIC four clock ticks, which means that the PIC is running at 1 MIPS. The 16F628A can be clocked upto 20MHz, which translates in 5 MIPS, but first I wanted to have a feel for acceptable delays.
I made a video of the experiment, which you can see here. I used several delay loops, but only at the last cycle can you see all LEDs lit (however dimly).
The bad news is that I used only 256 instructions as a delay to light up two series of nine LEDs. That's just too short to be able to do anything meaningful in the meantime. Note that I want to drive 90 leads with a single PIC, which means five times as much leads -- and I can only just tackel that with a clock speed five times higher -- but the LEDs will be dimmer too, because they will be lit up only a fifth of the time they are now.
Simply put, it's not going to work with charlieplexing. 90 leads is out of my league right now. So what is left is to use shift registers after all. Which doesn't require as much engineering effort from me after all -- I already knew everything about using shift registers from before.
A bit too bad of the months of work I've put in this, but I'll live.