Now it works! The package of ten 8x8 LED matrices arrived yesterday! ( At the exorbitant price of $1.30 each... including postage!
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
If you want to build something similar to this, there are a few pitfalls:
First of all, the EzSBC1 has 3.3 volt logic levels, while the ubiquitous MAX7219 LED drivers need 5 volt logic levels. Therefore, you need a level converter. I simply used a 74ACT04 hex inverter/buffer (two inverters in series for each of the three signals - clock, data and load). The 74ACT04 IC is powered from the same 5 volt supply as the LED drivers, but it will accept the lower input levels from the EzSBC1, and still output TTL/CMOS compatible levels. Note: Must be ACT type, ordinary 7400 TTL or 4000 CMOS series won't work!
You will need a hefty 5 volt supply - USB power isn't enough! I use a 2 amp wall wart.
You may have to use series resistances (1 to 10 K) between the buffers and the display inputs in order to minimize reflections and ripple - check with a scope! Low or high brightness causes less ripple than mid-range. Too much ripple, and you get garbage on the display... A few extra caps (one 100 nF and another 100-470 uF per module) will lessen the ripple.
As designed, the modules shift vertically, and for my purpose, I need horizontal. Thus, the modules had to be turned 90° clockwise, i.e. inputs at top left. I had to connect them with diagonal wires...
Download the MAX7219 datasheet from the web, too, to better understand the intricacies of the data shifting process!
The commented code below should be self-explanatory; I'm shifting out all the data for an 8x80 display one 8-LED column at a time in about 0.7 seconds, like on a teletypewriter, which looks quite nice.
There certainly is a faster way, just 65 ms for refreshing the entire display of 10 modules. I'm sure you can figure it out! Hint: Restructure the SHIFTOUT loops to avoid the NOPs.
![Idea :idea:](./images/smilies/icon_idea.gif)
Note that in BASIC, it will not be possible to scroll a large display very quickly, you would need to refresh it at least 40 Hz to get a decent scrolling speed. The absolute maximum for 10 modules with ControlBASIC looks to be around 16 Hz. That's quite snail-paced scrolling! Also, i if you want to do proper scrolling, you'll have to connect the displays for vertical shifting, complicating the code a bit.
I decided not to do it, since my display will eventually consist of 30 modules, and any scrolling would then be at a glacial 5 Hz or so... But if you plan on using only 5 modules or so, then it would certainly be possible!
Good luck, if you plan to build a project like this yourself !