Using Serial UART 16 × 2 LCD on Arduino




The serial UART 16×2 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 16×2 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 16×2 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.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Step 1: Parts List

  1. 1 arduino uno
  2. 1 Serial UART 16 × 2 LCD
  3. Several DuPont wires

Step 2: Step 2: Wiring Diagram

  1. Serial UART 16×2 LCD GND -> Arduino GND
  2. Serial UART 16×2 LCD 5V -> Arduino +5V
  3. Serial UART 16×2 LCD Rx -> Arduino D3

Step 3: Step 3: Test Code

#include <SoftwareSerial.h>
#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 delay(LCDdelay);


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 LCD.write(0xFE);


void setup() {

pinMode(txPin, OUTPUT);


backlightOn() ;



LCD.print("Hello world from LinkSprite!");


void loop() {


Step 4: Step 4:

Serial UART 16×2 LCD display successfully:Hello World from LinkSprite.

Be the First to Share


    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest

    2 Discussions


    4 years ago

    I want to drive 10 Nos 16x2 displays using Arduino. What do I need ? These are for displaying contents of a rack where different spares are kept.


    4 years ago on Introduction

    Hi, Thanks for the instructables! I'm using this kind of lcd display together with a wave shield and I would like text to scroll at the same time as an audio file is playing. How wold you make it autoscroll? Thanks!