For a long time I had a layout for this circuit, but could never build it, because the layout was to small to be made by tonertransfer.
So it was the first layout I made with my new exposure unit. It’s quite small, so it fits under the LEDMatrix itself. Therefore only SMD parts are used.
It took three trys to get it right. The first failed because the etching solution was to weak, took to long and caused heavy underetching. The second was not properly exposed.
The third try worked perfectly. The alignment of the two layers was good and the etching took only 10 minutes.
Soldering the SMD resistors and transistors was not very difficult using a magnifyer and tweezers.
The 74HCT138 was more or less easy to solder, but the MAX6964 was a bit harder. (The pins have a pitch of only 0.635mm.) But with desoldering braid any superfluous solder can be removed.
The MAX6964 is controlled via I²C. It has 2 8-bit registers which switch the 16 outputs on and off and 8 8-bit registers which controll the brightness (via PWM).
To keep the layout easy and the number of vias low, i had to wire the pixels of the LED matrix in somewhat weird way. But this is easily compensated in software.
The correct order for the rows is saved in a lookup-table (just an array).
The data for one row is two bytes long. The first byte contains the data for the first four pixels. (Two bits per pixel, for red and green.) The first byte is left to right, the second byte is right to left.
Most of the code is I²C communication and transforming pixel data to the correct format for the MAX6964.
Layout and code can be downloaded here. Datasheet for MAX6964 here. (Maxim is very generous when it comes to shipping free samples…)