I recently bought a 32x32 RGB LED matrix from aliexpress.com for £17. The only problem I found when I received it was that in order to display anything on it, you have to multiplex each row. You select the address of the row, clock in 32 bits for red, green and blue and then toggle the enable pin. The row lights up and then you do the next row.
The problem is that if your PIC micropocessor has to go off and do some calculations or run some other code, the LED matrix isn't being refreshed so it goes blank.
I decided to make a driver for the matrix. I used a PIC18F26K22 SOIC chip mounted on a very small PCB that I got made at OSHPark.com. The board attaches to the back of the LED matrix display via the 2x8 pin header.
The PIC has been set up as an SPI slave device. It keeps refreshing the display until a master PIC drops the chip enable line and starts writing to it. I have got several commands like brightness etc. and it only takes about 3ms to send a complete new display to the chip. 3ms is pretty quick and you cannot notice the display not being refreshed for that small amount of time.
Currently the colour depth is 1 bit. You can either have the red, the green or the blue in any one pixel either on or off, but that does give you black, white and 6 other colours.



The schematic:
The board:
A zip file with the Eagle files and also the C code for the project.
The problem is that if your PIC micropocessor has to go off and do some calculations or run some other code, the LED matrix isn't being refreshed so it goes blank.
I decided to make a driver for the matrix. I used a PIC18F26K22 SOIC chip mounted on a very small PCB that I got made at OSHPark.com. The board attaches to the back of the LED matrix display via the 2x8 pin header.
The PIC has been set up as an SPI slave device. It keeps refreshing the display until a master PIC drops the chip enable line and starts writing to it. I have got several commands like brightness etc. and it only takes about 3ms to send a complete new display to the chip. 3ms is pretty quick and you cannot notice the display not being refreshed for that small amount of time.
Currently the colour depth is 1 bit. You can either have the red, the green or the blue in any one pixel either on or off, but that does give you black, white and 6 other colours.



The schematic:
The board:
A zip file with the Eagle files and also the C code for the project.
Attachments
-
59.3 KB Views: 39
Last edited by a moderator:

