The circuit forms an interface between a micro controller and a 8 by 8 Dual Colour Common Anode LED Module. This type of module has two LEDs per pixel, each row has 8 pixels, with 8 rows. The anodes of each LED in a row are connected, with 16 columns formed by connecting together the cathode of an LED from each row.
A high side switch is needed to turn on/off a row and must be able to source approximately 240 milliamperes (16 multiplied by 15 milliamperes). A low side switch is needed to turn on/off a column, but only one LED is on per column so it only needs to sink 15 milliamperes.
For the high side switching I used a TD62783APG 8 Channel High-Voltage Source Driver from Toshiba Semiconductor. It’s very important that only one output from the TD62783 is on at any one time so I used a 74HC238 3-to-8 Decoder from NXP to control the row selection. For the low side switching we used two 74HC595 8-bit Shift Registers from NXP.
The basic operation for displaying a single frame is. The data for a row is shifted into shift registers one bit at a time, the shift register output is turned off (OE), the row is selected on the decoder, the shift register data is loaded into the output registers (LE) and then the shift register output is turned on. These steps are repeated for each additional row of data. All the steps are repeated indefinitely until the next frame of data is to be displayed.
The circuit was designed around the Arduino micro controller but should work with other micro controllers. The connections are shown in the image. The left hand side of the display is the row select pins the central pins are for power and ground, with the columns connected to serial peripheral interface (SPI) pins on the Arduino on the right.
I’ll do a follow-up blog post with the source code and a Java program I’ve written to create animations.