Arduino LCD Display


I have been busy the last few days documenting how to use my displays with Arduino.

I created (2) prototypes using 16x2 LCD displays based on the commonly available and understood HD44780 driver.


20x4 IIC/I2C/TWI LCD Module


Then I had a really great 20x4 display and I2C interface combination created by SainSmart but Iooks like it might be originally from DFRobot. I tend to think DFRobot designed this as they had the best documentation. Mine however was labeled with SainSmart.

So whomever created the design made it unbelievably simple to add a 20x4 I2C-connected display.

Someone also adapted this display to the Raspberry PI see Raspberry Pi : using a 4×20 characters display

Anyway this display was so simple to add to Arduino you just need (4) jumper wires (F-M) and load the LiquidCrystal_I2C library. You can get that from GitHub Repo Arduino-LiquidCrystal-I2C-library I have saved a copy of that repo here. I guess using I2C eliminates a lot of spaghetti wires (see above images of 16x2 displays for an example of what I mean.

This is a 20x4 Arduino compatible LCD display module with high speed I2C interface. It is able to display 20x4 characters on two lines, white characters on blue background.

There is a great documentation page from DFRobot see I2C TWI LCD2004 Module (Arduino/Gadgeteer Compatible) (SKU:DFR0154) I have converted that page into a PDF file.


It is using I2C communication interface, With this I2C interface, only 2 lines (I2C) are required to display the information on any Arduino based projects. It will save at least 4 digital / analog pins on Arduino. All connector are standard XH2.54 (Breadboard type). You can connect it with jumper wire directly.

This 1602 LCD module has 8 I2C address in all, from 0x20 to 0x27. You can configure this in case of conflicts. This board is powered by 5V or 3.3V

I2C Address: 0x20-0x27(0x20 default)
Number of Characters: 20 characters x 4 Lines
Blue LED backlight with white char color
Adjustable contrast
Supply voltage: 5V(via Pin) 3.3V(via IDC10)
Interface: IIC/TWI x1,IDC10 x2
View direction: Wide viewing angle
Dot size: 0.55 x 0.55 mm(0.02x0.02")
Dot pitch: 0.60 x 0.60 mm(0.023x0.023")
Character size: 2.96 x 4.75 mm(0.11x0.19")
Character pitch: 3.55 x 5.35 mm(0.14x0.21")
Size: 98x60x24mm(3.86x2.36x0.94")

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 20 chars and 4 line display
LiquidCrystal_I2C lcd(0x27, 20, 4);

void setup()
    // initialize the LCD

    // Turn on the blacklight and print a message.

void loop()
      lcd.setCursor(0, 0);
      lcd.print("Hello, Terminus!");
       lcd.setCursor(0, 1);
        lcd.print(millis() / 1000);


Here is some sample code from DFRobot I2C_LCD2004_Sample.rar and I have archived it in case the original ever disappears See I2C_LCD2004_Sample.rar

The manual is archived here in case it ever disappears from the original location. If you read it you will see it isn't much of a manual but then again this display package is almost so simple. You just connect the pins from the I2C interface on the back of the display and then connect them to the corresponding pins on the Arduino and then install the libraries. Load the example sketches and go from there. It just works. This is a really great display to integrate into yournext project. I have had this one a couple years and finally got around to testing it.


Data Sheet for 2004A Display


Data Sheet for PCA8574