ST7565 LCD w/ RGB Backlight! ('Arduboy DMG Edition'?)

Following on from my experiments here with using colour screens in ‘mono-mode’, I found a nice little 1.8" 128x64 LCD with an RGB Backlight! :grinning:

Turns out that the ST7565 controller being used has almost exactly the same command set and page addressing as a SH1106! (setup / initialisation command sequence is completely different though). Anyway, problem is that these are just the LCD - no controller board attached, no voltage regulation / conversion, no nice friendly header pins… so I made my own board, and as Doc Brown would say - “if you’re gonna do it, why not do it with a little style!” :smile:

Started with a ‘frame’ to hold the LCD in place:

And then the controller board itself - ICs onboard are SN74LVC245ADWR (5V to 3.3V level shifter), IS25LP128F-JBLE (128Mbit SPI Flash for potential use with @Mr.Blinky’s flash cart implementation), and CAT4109V-GT2 (3-Channel Constant-Current RGB LED Driver):

(with a low-current 10mA LED to stand in for the GameBoy’s battery indicator LED, of course!)

That ribbon cable mess in the middle is because pin 1 according to the LCD and pin 1 according to the Eagle part for the ribbon cable connector are not the same pin 1! :tired_face:

Oh well… that is what happens when you try to squeeze these projects into ‘spare’ time between work and family, and anyway - that is what prototyping is for! A little adaptor board from eBay fits great as a temporary work-around:

So… maybe @bateske would be interested in collaborating on this design and running with it for another Kickstarter? ‘Arduboy Dot-Matrix-Game Edtiion’? :rofl:

Here is the modified library:

Was able to use @Mr.Blinky’s SH1106 functions directly with the ST7565, also needed to tweak the RGB LED functions because the LED driver IC wants the PWM ‘non-inverted’ (and also to add the extra indicator LED - on Arduino pin 3).

Hopefully @Mr.Blinky sees all of these mentions, and would be willing to help out with a new version of his custom bootloader to support the ST7565 initialisation sequence?


…the button PCB you can see in there is from a project I did years ago:

This is basically a NES controller, in a shape that fits the GameBoy enclosure.

I used @Mr.Blinky’s controller sketch and a spare Arduino Nano to make it talk nicely with the 32u4:


Great project and cool PCBs :+1:

PM me the details and I’ll have a go at it when I’m back from my holiday

1 Like

This is fantastic! It looks like there’s a little more work to do to get everything in the case. How do you see it fitting together in the end with regards to battery and USB connector?

1 Like

WOW! This is awesome! Love to see Circuit Dude on more homebrew Arduboy devices! Will definitely be retweeting. :smiley:

Would love to see this closed up with a battery inside of it!

1 Like



…trying to decide now on which direction to take the project - there is easily enough space on this PCB to think about also including all of the components that make up the ‘guts’ of an Arduboy, but the idea for a modular controller board design was actually inspired to begin with by the serendipitous way that a micro:bit fits right into the GameBoy’s cartridge slot!


ACHIEVEMENT UNLOCKED! (Thanks @Mr.Blinky! :grin:)


Wow the contrast and rgb backlight on that little lcd look phenominal! Definitely have to pick one up to play with.

Yeah it’s surprisingly good. Note that the LCD display has a low refresh rate so high framerate animations will be a bit tough to play (like invisible bullets on Virus and heavy ghosting during scrolling).

The 1.8" size and low refresh rate makes the display easy on the eyes (no fast flashing pixels like on OLED). That and the choice of different colored backlight is what I like about it :slight_smile:

1 Like

I’ve been working on adding support for this display in the homemade package and running test this week. While testing Arduventure some nasty sound glitch appeared. With the help of @uXe I found out it was timer related and found out that it was a glitch caused by ATMlib. Once revealed It was easy to fix though.

I’ve made a PR for @TEAMarg but the change can be easily be made manually too.


I also changed the screen driver initialization to the LCD, the game smear is very powerful, almost no way to play, or OLED is good


It looks great … pity about the smearing.

A trick you can use to reduce the smearing is to reduce the display updates. with games that update the screen each frame you could change



if (arduboy.everyXFrames(2)) arduboy.display();

Then the display is only updated once every two frames. But game play is still at full frame rate.

1 Like