# 16×2 LCD Arduino, Introduction, Pinout, datasheet,and Proteus simulation

(Last Updated On: June 27, 2020) ## 16×2 LCD Description:

This Tutorial “Arduino 16×2 LCD” is based on the famous 16×2 LCD interfacing and programming. LCD modules are commonly used in most embedded projects, the reason being its cheap price, availability and programmer-friendly. Most of us would have come across these displays in our day to day life, either at PCO’s or calculators. In this tutorial, you will learn

1. 16×2 LCD introduction
2. Features of the 16×2 LCD module
3. 16×2 LCD Pinout or pin Description
4. Soldering
5. 16×2 LCD interfacing with Arduino and
6. 16×2 LCD programming.

DISCLAIMER:

### 16×2 LCD: LCD stands for Liquid crystal display. 16×2 LCD is named so because; it has 16 Columns and 2 Rows. There are a lot of combinations available like 8×1, 8×2, 10×2, 16×1, etc. but the most used one is the 16×2 LCD. So, it will have 16×2 = 32 characters in total and each character will be made of 5×8 Pixel Dots.

#### Features of the 16×2 LCD module

• Operating Voltage of the 16X2 LCD  is 4.7V to 5.3V
• Current consumption is 1mA without backlight
• This is an Alphanumeric LCD display module, which means you  can display alphabets and numbers
• Consists of two rows and each row can print 16 characters.
• Each character is built by a 5×8 pixel box
• Can work on both 8-bit and 4-bit mode. “we will be using this LCD  in 4-bit mode”.
• It can also display any custom generated characters. I will explain this in my upcoming tutorial.
• Available in Green and Blue Backlight

#### 16×2 LCD Pinout: 16×2 LCD has a total of 16 pins.

Pin number1 is the Ground and will be connected with the Arduino’s Ground.

Pin number 2 is the VDD and will be connected with the Arduino’s 5 volts.

Pin number 3 the contrast pin, this pin will be connected with the potentiometer. The LCD contrast can be then controlled using a potentiometer……

Pin number 4 is the RS which stands for register select. It can be set to 0 or 1.

0 is equal to an instruction input

1 is equal to data input

Pin number 5 is the read or write pin of the LCD. It can be set to 0 or 1.

0 means Write to an LCD module and
1 means Read from the LCD module

Most commonly we use 0, as we print text and sensors values on the LCD. For this, we simply connect this pin with the ground, as ground means 0.

Pin number 6 is the enable pin.

Pin number 7 to 14 are the data pins which are also represented by D0 TO D7. SO

Pin number 7 = D0

Pin number 8 = D1

Pin number 9 = D2

And so on up to pin number 14 which is D7

To reduce the wiring we will be using this LCD in a 4-bit configuration, so out of these 8 pins, we will be using only 4 pins D4 to D7.

Pin number 16 will be connected with Arduino’s 5 volts and finally

Pin number 16 will be connected with the Arduino’s Ground.

### 16×2 LCD interfacing with Arduino, Circuit Diagram:

This is the complete circuit diagram explaining how 16×2 LCD is connected with the Arduino. This schematic is designed in cadsoft eagle 9.1.0 version. If you want to learn how to make schematics and PCB’s, then watch the following video.

As you can see in the circuit diagram above, the ground is connected with pin number 1, 5 and pin number 16…5v from Arduino is connected with pin number 2 and pin number 15…the middle pin of the variable resistor or potentiometer is connected with pin number 3 of the LCD…while the other two pins are connected with the ground and 5v. Pin’s 4 to 7 of the Arduino are connected with pins D7 to D4 of the LCD.

Pin number 8 of the Arduino is connected with the enable pin of the LCD….pin number 9 of the Arduino is connected with the RS pin of LCD…

### 16×2 LCD Proteus Simulation: ### 16×2 LCD Arduino Programming:

16×2 LCD programming is really easy. The difficult part has already been done. We have a library for this which consists of all the functions, with the help of these functions you can select any column, you can select any of the two rows and so on.

# means that this is a preprocessor directive and .h means that this is a header file.  Then we define some pins, rs is connected with pin number 9 of the Arduino, en is connected with pin 8, d4 with pin7, d5 with pin 6, d6 with pin 5 and d7 with pin4.

setcursor is a function and it takes two arguments as the input, the column number and the row number.  0 means first column and 1 means 2nd row.