MAX7219 32x32 LED Display
Posted: Tue Feb 10, 2026 12:30 pm
For a project I'm currently working on - I wanted to use a LED display with 32 x 32 LEDs - this uses 16 MAX7219 display drivers in series.
I have some in stock that have a single piece PCB - with 16x8x8 MAX7219 displays attached - I couldn't find any for sale (I got them a few years back) - but the 32 x 8 displays are widely (and cheaply) available - and it effectively 4 of these connected in a square.
I wrote a simple component for this - it has Clear, Refresh, Plot and Write for display purposes, as well as Initialise and SetIntensity.
I tasked gemini with creating a character set for the digits 0..9 and the results were 'poor' - after several iterations, I decided I needed simulation - to make visualising Gemini's efforts quicker.
I eventually tried ChatGPT - and the results were slightly better - though if you try this, I think there is still room for improvement (the 1 is a bit 'thin' and 0 is a bit 'boxy') - if anyone has any artistic skills - there are 16 x 16 pixels per digit to play with
(I have no artistic skills - but I think I could have done as well as gemini with a pencil and graph paper - the 6 and 9 caused it a lot of difficulty)
If anyone tries in hardware - be warned that the display can pull quite a lot of current. I used an esp32 with a level shifter and external PSU - but you will need 'thicker than jumper' wires for VCC and GND to the display. CS should be HIGH before power is applied to the display to avoid corruption too.
The current version uses an array of data for the 'character set' (here just '0'..'9') - it could be extended if needed, as using a LUT gave some issues - so uses some RAM at present (not an issue on esp32 of course)
The display can be run in simulation using test_led or in the component source?
Martin
I have some in stock that have a single piece PCB - with 16x8x8 MAX7219 displays attached - I couldn't find any for sale (I got them a few years back) - but the 32 x 8 displays are widely (and cheaply) available - and it effectively 4 of these connected in a square.
I wrote a simple component for this - it has Clear, Refresh, Plot and Write for display purposes, as well as Initialise and SetIntensity.
I tasked gemini with creating a character set for the digits 0..9 and the results were 'poor' - after several iterations, I decided I needed simulation - to make visualising Gemini's efforts quicker.
I eventually tried ChatGPT - and the results were slightly better - though if you try this, I think there is still room for improvement (the 1 is a bit 'thin' and 0 is a bit 'boxy') - if anyone has any artistic skills - there are 16 x 16 pixels per digit to play with
If anyone tries in hardware - be warned that the display can pull quite a lot of current. I used an esp32 with a level shifter and external PSU - but you will need 'thicker than jumper' wires for VCC and GND to the display. CS should be HIGH before power is applied to the display to avoid corruption too.
The current version uses an array of data for the 'character set' (here just '0'..'9') - it could be extended if needed, as using a LUT gave some issues - so uses some RAM at present (not an issue on esp32 of course)
The display can be run in simulation using test_led or in the component source?
Martin