# Electronic components: the 1602 LCD Display

> Learn how to wire and program the 1602 LCD display with Arduino, using the LiquidCrystal library to print Hello, World across its two 16-character lines.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2021-03-16 | Topics: [Arduino](https://flaviocopes.com/tags/electronics/) | Canonical: https://flaviocopes.com/electronics-components-1602-lcd-display/

The **1602 LCD** display is an alphanumeric display with 2 lines each containing 16 characters.

![Front and back view of 1602 LCD display module showing blue screen and green circuit board with pin connectors](https://flaviocopes.com/images/electronics-components-1602-lcd-display/IMG_3666.jpg)

![1602 LCD display disassembled showing separate front screen module and back circuit board with pin headers](https://flaviocopes.com/images/electronics-components-1602-lcd-display/IMG_3667.jpg)

It finds application in a large number of scenarios, from vending machines to train stations.

This LCD display model is commonly included in Arduino kits, but those instructions work with _any_ LCD display that has a 16 pins interface compatible with the Hitachi HD44780 LCD controller.

This controller is emulated via software by the [`LiquidCrystal` Arduino library](https://www.arduino.cc/en/Reference/LiquidCrystal).

In this post I will show the simplest possible usage of the display to print a `Hello, World!`.

The LCD display has 16 input pins. From left to right:

- `VSS` the `-` connection
- `VDD` the `+` connection
- `VO` adjusts the contrast (we connect that to a potentiometer in our project)
- `RS` is connected to pin 7 of the Arduino
- `R/W` is connected to `-` to set the LCD in "write mode"
- `E` is connected to pin 8 of the Arduino
- `D0-D7` are data pins. We'll just use `D4`, `D5`, `D6` and `D7` in this example.
- `A` and `K` control the LED backlight. Connect `A` to `+` via a 220Ω resistor, `K` to `-`.

To print the `Hello, World!` line I built this simple program and uploaded it to the Arduino:

```c
#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup() {
  lcd.begin(16, 2);
  lcd.print("Hello,");
  lcd.setCursor(0, 1);
  lcd.print("World!");
}

void loop() {

}
```

There's an initial configuration of the `lcd` object, passing the pins of `RS`, `R/W`, `E`, then `D4`, `D5`, `D6` and `D7` (see more details [here](https://www.arduino.cc/en/Reference/LiquidCrystalConstructor)).

Then we call the `lcd.begin()` method, and we pass the key characteristics of the LCD display, number of columns and number of rows.

The `lcd.print()` method prints the string, starting at the position `(0, 0)`.

We can move the cursor using `lcd.setCursor()`, passing the index of the column and the index of the row we want to move to.

The circuit is built as follows:

![Circuit diagram showing Arduino connected to 1602 LCD display and potentiometer on breadboard with Hello World displayed](https://flaviocopes.com/images/electronics-components-1602-lcd-display/Fantabulous_Jofo.png)

And here's the real-world implementation:

![Physical breadboard setup with 1602 LCD display connected to Arduino showing Hello World text on blue screen](https://flaviocopes.com/images/electronics-components-1602-lcd-display/IMG_3674.jpg)

You can trim the potentiometer to apply a different contrast. Once you determine your perfect setting you can change that with a resistance.
