Serial UART 16x2 LCD

From LinkSprite Playgound
Jump to: navigation, search


The serial UART 16x2 LCD allows you to control a parallel based LCD over a single-wire serial interface. The serial LCD takes care of all the HD44780 commands allowing seamless integration with any micro that can communicate over a wide range of TTL serial baud rates. The

Communication with Serial 16x2 LCD requires 5V TTL serial at a default baud rate of 9600bps (8-N-1). You can adjust the baud to any standard rate between 2400 and 38400bps. The power, ground and RX pins are all broken out to a 4-pin 2.54mm pitch header.

Serial 16x2 LCD has the ability to dim the backlight to conserve power if needed. There is also a potentiometer on the backpack to adjust the contrast.

1114 LCD.jpg

1114 LCD-9.jpg

1114 LCD-10.jpg

1114 LCD-12.jpg

1114 LCD-15.jpg

1114 LCD-16.jpg


  • Embedded PIC 16F88 utilizes onboard UART for greater communication accuracy
  • Baud rates of 9600
  • Greater processing speed at 10MHz
  • Incoming buffer stores up to 80 characters
  • Backlight transistor can handle up to 1A
  • Pulse width modulation of backlight allows direct control of backlight brightness and current consumption
  • All surface mount design allows a backpack that is half the size of the original
  • Faster boot-up time
  • Boot-up display can be turned on/off via firmware

Application Ideas




Item Min Typical Max Unit
Voltage 4.3 4.6 5.0 V
Current 53 84 128 mA
Dimension 80.0×36.0×22.7 mm
Net Weight 39 g

Pin definition and Rating

Mechanic Dimensions


Hardware Installation

  • Connect the 5V of Serial LCD to 5V on Arduino.
  • Connect GND of Serial LCD to GND of Arduino.
  • Connect RX of Serial LCD to digital 3 of Arduino.

SerLCD hardware 1.jpg

SerLCD hardware 2.jpg


The following is the sample code assuming that the RX of serial LCD is connected to digital 2 of Arduino. The following code has been tested on Arduino IDE 1.0.1.

<syntaxhighlight lang="c">

  1. include <SoftwareSerial.h>
  1. define txPin 2

SoftwareSerial LCD = SoftwareSerial(0, txPin); // since the LCD does not send data back to the Arduino, we should only define the txPin const int LCDdelay=10; // conservative, 2 actually works

// wbp: goto with row & column void lcdPosition(int row, int col) {

 LCD.write(0xFE);   //command flag
 LCD.write((col + row*64 + 128));    //position 

} void clearLCD(){

 LCD.write(0xFE);   //command flag
 LCD.write(0x01);   //clear command.

} void backlightOn() { //turns on the backlight

 LCD.write(0x7C);   //command flag for backlight stuff
 LCD.write(157);    //light level.

} void backlightOff(){ //turns off the backlight

 LCD.write(0x7C);   //command flag for backlight stuff
 LCD.write(128);     //light level for off.

} void serCommand(){ //a general function to call the command flag for issuing all other commands



void setup() {

 pinMode(txPin, OUTPUT);
 backlightOn() ;
 LCD.print("Hello world from LinkSprite!");


void loop() { }



Please list your question here:


If you have questions or other better design ideas, you can go to our forum to discuss or creat a ticket for your issue at linksprite support.


How to buy

See Also

Other related products and resources.


This documentation is licensed under the Creative Commons Attribution-ShareAlike License 3.0 Source code and libraries are licensed under GPL/LGPL, see source code files for details.