Digital Solutions
iDigole Buyer ProtectioniDigole Buyer
My shopping cart
0 Items:
Secure Checkout
Top Rated Plus
Visit Our Live Auctions
99.9% Customer's Satisfaction
Forum : Digole Serial Display : 12864 LCD/OLED module :

 Search Forum.. 
 Creat New Topic   Reply 

How to set a start screen?


I was wondering, what is the control sequence to set a boot screen in the Monochrome 0.96" OLED display?

do i use the convertor and the code sequence provided here?


I'm using PERL to communicate ASCII strings over serial port.

Any pointers?

RE:How to set a start screen?

Use commands set, the firmware run it automatically when power on:
 What is command set?

The command set is a command sequence which contain one or more commands and data, that do complicated drawing functions on the screen. Save the command set in the flash chip or MCU flash, run this command set when you needed later, using command set will save you lot of hardware and software resources. A command set must end with an extra byte of value 255,  but for earlier version<V3.3, you need put 2 bytes value on the beginning to indicate the data length of command set.

YES: Only setting and drawing functions (draw Text or graph) can be put in command set. NO: Functions to read data from module and write data to EEPROM and flash can’t be embedded in command set.

Few functions are little bit different when used in command set than regular:

Commands : DIM, EDIM1, EDIM2, EDIM3, these 4 command will show a picture on screen, in regular usage, the top-left coordinate (X0,Y0) will follow the command, then width, height and image data. But when it in command set, the X0,Y0 value need to use “GP” command to set it prior, the width and height will follow to the 4 commands directly, this change give user the ability to display same images at different location on screen when call child command set from parent command set.

Command: LT. Line to command accept destination coordinate in regular usage, but it accept the coordinate offset (-127~127) when used in command set.


eg.: “GP\x0A\x10TTHello user\x00LN\x00\x12\x30\x12LT\xD0\x01LT\x30\x00\xFF”, this command set will display “Hello user” at (10,16) position, then draw line from (0,18) to (48,18) by command “LN\x00\x12\x30\x12” then to (0,19) by command “LT\xD0\x01”(note: 0xD0=-48)  then to (48,19) by command “LT\x30\x00”. and end with “\xFF”. the hex value of \xFF is 255 in dec.

RE:How to set a start screen?


Thanks for the suggestion.

Does that mean that SSS doesn't work? i tried that, following the manual to Download Start Screen to the module, seinding "SSS\x00\x04\x...data\x00" but it seems that the screen is now dead.

It only shows a garbled display on boot now and i can no longer communicate with it. (is there a way to recover it?)

Does using the command set allow me to set a message to show at screen boot up?

so if i were to want to write "HelloWorld" for the screen to show on boot up instead of the usual start screen.


What is the 3 bytes of start address i should use and what is the 3 bytes data length for the above example?


Would the above be correct? i don't want to kill another screen.

Thanks lots

RE:How to set a start screen?

You only can use "SSS" command to download commands set to welcome screen space.
Check the FW version first, if it was V3.3 and later, then the welcome screen use commands set, if earlier, it use old bitmap format.
"SSS" command followed by data lenth, MSB first then LSB, this is different than older version(<V3.3) either.

If the screen died by accident, you can revive it by upgrade/reflush the firmware:


You can find all firmware here:


Download the firmware accordingly, then use "Hard" method to force the display enter bootloader:

the "hard" way to get the module enter bootloader is: pull the DATA pin on the module to GND(can use a jumper), then short the 2 pins on "RESET" button (not installed but footprint on the PCB), then release the "RESET" pins, then release the DATA pin to high,you may need to try this way few times,

then transfer downloaded FW to data pin @57600 8-N-1, to see if the display revived, you may need to try the above steps few times.


It's little bit complicated at first time, but then you will feel it's easy to do.

RE:How to set a start screen?

Sorry I forgot there is no "RESET" button on small display, but you can find a group of 5 pads on the PCB, the rectangle pad is reset, short it to GND will reset the display. 

RE:How to set a start screen?


Does that mean that i should use the "SSS" command to set the start up screen?

what is the correct command format? i used the data converted for my bitmap at http://www.digole.com/tools/PicturetoC_Hex_converter.php

$port->write("SSS\x00\x04[data]"), but it doesn't work. it says "Done!" but it never shows the new screen on reboot.

The firmware for my unit is is 4.2B

does that mean that i would use

$port->write("SSSGP\x00\x00HELLO WORLD\xFF")

to set the boot screen?

As for the screen that died by accident. i will try to reflash the firmware. Is it possible to solder it directly to a UART on a raspberry to flash? instead of using a USB to UART convertor?


RE:How to set a start screen?

Yes, need to use "SSS".
If data length was 1024 byte, you need do "SSS\x04\x00", NOT "SSS\x00\x04" as older.
In order to display a 128x64 black/white image on the display, you need to use "DIM" command in welcome screen:
eg.: "GP\x00\x00DIM\x80\x40"+1024 bytes of image data+ "\xff"
now use "SSS\x04\x0A" to send above commands set to welcome screen space, because the total data length is 1034 bytes now.

RE:How to set a start screen?

$port->write("SSSGP\x00\x00HELLO WORLD\xFF")
was wrong, should like this:

$port->write("SSS\x00\x13GP\x00\x00TTHELLO WORLD\x00\xFF")

RE:How to set a start screen?

Any way that you can transfer firmware file to display at UART 57600-8N1 will work, if you don't use USB->UART adapter.


RE:How to set a start screen?


Thanks. I think i managed to rescue the unit using the "Hard" method and minicom in Linux using my Raspberry PI

I can now see the message "UART Baud:9600 v4.2B"

I am now trying to setup the start screen again.

I tried the command 

$port->write("SSS\x00\x13GP\x00\x00TTHELLO WORLD\x00\xFF");

and the screen displays "->Done!"

I then power cycle the OLED display but nothing shows up. The screen flashes white and it dispays "UART Baud:9600 v4.2B" again.

Do you have any advice?


RE:How to set a start screen?

You may turned the welcome screen off, try "DSS1" to turn that on.

RE:How to set a start screen?


i have it all working now! it seems that i might have to flash it a few times.

but once i have it working, it seems to be consistent.

i haven't tried graphics mode, but the text mode works great!

Thanks lots for your wonderful support!

Copyright Digole Digital Solutions, 2008-2018. All rights reserved.
Powered by Victor Sun