Home : Digole Serial Display : Mono LCD :
Images is here

Universal Serial: UART/I2C/SPI Text LCD Display Adapter V2 for 1602/1604/2002/2004/4002 LCD

Price: US $7.29
Ship from:Canada
add to cart


2nd Version-Serial: UART/I2C/SPI Text LCD Display Adapter for 1602/1602/2002/2004/4002 LCD
Backlight be controlled able by software

(This auction EXCLUDE LCD panel in pictures below)

(Please compare the pinout with you display, make sure they are same before purchasing)

Unlike other "Serial Display" which just convert serial input to parallel, Digole's Serial displays and adapters embedded a powerful MCU to process the commands received. Display characters and control back light as you want, all commands are simple, high level and easy to remember!

Programing User Manual
Download Arduino lib and demo code

mbed  Library (Thanks for Michael Shimniok to contribute code)

The following vedio show this adapter work with 16pin and 8*2pin LCD

In order to use a Text LCD display, you need connect at least 4 data pins and 2 control pins from your circuit to display, and you also need to spend some time to write code to drive it, in some case, you may need couple of days to deal with it, and it will give you a nightmare when changing to other display.

This control module (adapter) will help you to solve this issue, it can work with most 1602/1604/2002/2004/4002 LCD that config with KS0066U/F / HD44780 and other compatible chips seamlessly, so you can use your display with this module in couple of minutes!(Please ask if you not sure whether or not your LCD is compatible with the adapter)

What benefits you if using these products in you electronic projects?

  • Save lots of the I/O resources: these products only need 1 to 3 I/O pins from your master controller that depends on the communication type you want.
  • Easy to use: the commands sending to products are easy to remember and understand.


  • Supply voltage: 1.8V to 5.5V
  • Communication mode: UART/I2C/SPI, defined by the jumper on board
  • Receiving buffer: 64 bytes
  • Work with KS0066U/F / HD44780 and other compatible chips
  • Work with most 1602/1604/2002/2004/4002 LCD
  • 16 Pins with 2.54mm pitch connect to LCD
  • Low power consumption: 4mA maximum
  • Simple command sets, easy to remember
  • Default setting: UART baud 9600bps, I2C address is 0x27
  • UART baud (bps): 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200, selected by software
  • Manual, Arduino lib, sample code download here
  • Turn backlight on/off by software to save energy

Work with 2002 LCD (double row 8x2 pin)

Work on 1602 LCD (single row 16pin)

Pinout of module connect to LCD display:

PIN Description PIN Description
1 VSS Ground of circuit 2 VDD Power Supply
3 V0 4 RS
5 R/W 6 E
7 DB0 or D0 8 DB1 or D1
9 DB2 or D2 10 DB3 or D3
11 DB4 or D4 12 DB5 or D5
13 DB6 or D6 14 DB7 or D7

BLA or A, + power supply for backlit

16 BLK or K, - power supply for backlit

Pinout of this module connect to MCU:

PIN Description PIN Description
1 GND (0V) 2 SS: SPI mode only
chip select control in, low active

I2C and SPI mode:
SCK/SCL: Clock in


UART mode:
I2C mode:
SPI mode:

5 VCC: power supply
1.8V to 5.5V depends on you LCD

Character/Graphic Display Shared Command: (B-one byte, B…-Bytes)



Arduino lib function



CLear screen and set the display position to first Column and first Row (x=0.y=0), for graphic LCD, it also set the font to default and turn off the cursor.




set CurSor on/off




Set Back Light ON/OFF, B=0 or 1, 0 off, 1 on


Not available on Character Adapter V1


Display Config on/off, the factory default set is on, so, when the module is powered up, it will display current communication mode on LCD, after you design finished, you can turn it off




Set UART Baud, B are ASCII characters, the available values are: “300”, “1200”, “2400”,”4800”, “9600”, “14400”, “19200”, “28800”, “38400”, “57600”,”115200”

Set BAUD when initial the class

When adapter power up or reset, always start with 9600 Baud


Set I2C Address,the default address is 0x27, the adapter will store the new address in memory


Change address to 0x34


Set Text Columns and Rows, this command will config your LCD if other than 1602 and the chip is other than KS0066U/F / HD44780


The last 4 B should be“\x80\xC0\x94\xD4”


set Text Position for following display


This will affect the following “TT” command


display TexT string, the text will wraped in next row if the current row fulled, the Text Postion will be changed to the last char displyed, this command ended by 0x00 or 0x0D received


The print function in Arduino, also can print other data and format the out put.


Manual CommanD: send command B to display bypass the adapter


Use it if you want to control the display directly


Manual DaTa: send data B to display bypass the adapter


Same as above

Arduino Sample Code(download here):

#include <DigoleSerial.h>
#include <Wire.h>
DigoleSerialDisp mydisp(&Serial, 9600); //Pin 1(TX)on arduino to RX on module
//DigoleSerialDisp mydisp(&Wire,'\x27');  //SDA (data line) is on analog input pin 4, and SCL (clock line) is on analog input pin 5
//DigoleSerialDisp mydisp(8,9,10);  //Pin 8: data, 9:clock, 10: SS, you can assign 255 to SS, and hard ground SS pin on module
#define LCDCol 16
#define LCDRow 2

int ptr;
const char a[] = "disp char array";
const char b = 'Q';
int c = 3456;
String d = "I'm a string";
float pi = 3.1415926535;
double lg10;

void setup() {
    /*----------for text LCD adapter and graphic LCD adapter ------------*/
    mydisp.clearScreen(); //CLear screen
    //mydisp.displayConfig(1);    //set config display ON, 0=off
    //mydisp.setI2CAddress(0x29);  //this function only working when you connect using I2C, from 1 to 127
    //mydisp.setLCDColRow(16,2);  //set LCD Col and Row, only time set up is OK
    mydisp.disableCursor(); //disable cursor, enable cursore use: enableCursor();
    mydisp.drawStr(4, 0, "Demo now"); //display string at: x=4, y=0

    //Test print function
    mydisp.setPrintPos(0, 1);
    mydisp.print(a); // display a char array
    mydisp.print("display a char:");
    mydisp.print(b); //display a char
    mydisp.print("int as DEC:");
    mydisp.print(c); //display 3456 in Dec
    mydisp.print("as HEX:");
    mydisp.print(c, HEX); //display 3456 in Hex
    mydisp.print("as OCT:");
    mydisp.print(c, OCT); //display 3456 in Oct
    mydisp.print(c, BIN); //display 3456 in Bin
    mydisp.print(d); //display String object
    mydisp.print("float pi=");
    mydisp.print(pi); //display float of PI
    mydisp.print(pi, 6); //display PI in 6 Accuracy
    mydisp.print(pi * 3, 6); //display PI time 3 in 6 Accuracy
    mydisp.print(log(5), 8); //display log(5) in 8 Accuracy
    for (uint8_t j = 0; j < 4; j++) //making "Hello" string moving
        for (uint8_t i = 0; i < 10; i++) //move string to right
            mydisp.setPrintPos(i, 1);
            mydisp.print(" Hello ");
            delay(100); //delay 100ms
        for (uint8_t i = 0; i < 10; i++) //move string to left
            mydisp.setPrintPos(9 - i, 1);
            mydisp.print(" Hello ");
    mydisp.print("Enjoy it!");
    mydisp.enableCursor(); //enable cursor

void resetpos(void) //for demo use, reset display position and clean the demo line
    mydisp.setPrintPos(0, 1);
    delay(2000); //delay 2 seconds
    mydisp.println("                "); //display space, use to clear the demo line
    mydisp.setPrintPos(0, 1);
void loop() {

  • We will send payment cleared orders out of our facility within 2 working days to HongKong/ShangHai Post Office, the post office needs 1 to 3 working days to sort and process international parcels,
  • We ship to your Paypal address only!!, please verify your Paypal address before sending payment,
  • Estimate Delivery time, except public holiday in China and your country
    If you can't wait the described time, please don't buy it from us):
    Ship to Estimated weeks
    Ship to Estimated weeks


    USA 1 to 3 Asia HK, Japan
    1 to 3
    Canada 2 to 5
    Others 2 to 5
    Europe Germany 1 to 3 Australia 2 to 4
    UK 1 to 4

    Other Country
    in the World

    2 to 6
    Others 2 to 5

 Return to top

Return/Warranty Policy
  • Return with no reason:
    • Item must be sent out in original condition within 7 days since item received,
    • Buyer can return item to our Service Department in Canada or China by buyer's convenience,
    • Buyer pay the return shipment fee,
    • Same way money refund as you paid.
  • Return/exchange if defective or wrong item buyer received:
    • Buyer must contact with us using ebay message system within 4 days since item received,
    • WE pay the return shipment fee,
    • Replacement or money refund are available upon buyer request.
  • Please contact us using ebay message system in advance before leaving feedback if there were any problem with your items.
  • E-care service: Click here to report problems/return items and more
Return to top
  • We accept Paypal, and almost all other credit cards
Return to top
About us
  • This is Canadian operating company, the quality of all products and service are comply with American Standard,
  • We try our best to help buyers to pick out the QUALIFIED products from dazzling market with reasonable price,
  • Our goal is to be one of the best seller on ebay, buyer's satisfaction is our #1 concern
Return to top


Copyright Digole Digital Solutions, 2008-2022. All rights reserved.
Powered by Digole