Professional Documents
Culture Documents
Liquid Crystal Displays (LCD) With Arduino
Liquid Crystal Displays (LCD) With Arduino
Circuit
Find out how to wire an LCD to an Arduino, and how to use the LiquidCrystal library through a
Schematic
set of useful examples.
Hello World Example
Autoscroll Example
LAST REVISION: 09/03/2023 à 10:51
Blink Example
Cursor
This article was revised on 2021/11/18 by Karl Söderby.
Display Example
The LiquidCrystal library allows you to control LCD displays that are compatible with the
Scroll Example
Hitachi HD44780 driver. There are many of them out there, and you can usually tell them by
Serial to Display Example the 16-pin interface.
Custom Character
The LCDs have a parallel interface, meaning that the microcontroller has to manipulate several
interface pins at once to control the display. The interface consists of the following pins:
A register select (RS) pin that controls where in the LCD's memory you're writing data to.
You can select either the data register, which holds what goes on the screen, or an
instruction register, which is where the LCD's controller looks for instructions on what to
do next.
A Read/Write (R/W) pin that selects reading mode or writing mode
An Enable pin that enables writing to the registers
8 data pins (D0 -D7). The states of these pins (high or low) are the bits that you're writing
to a register when you write, or the values you're reading when you read.
There's also a display contrast pin (Vo), power supply pins (+5V and GND) and LED
Backlight (Bklt+ and BKlt-) pins that you can use to power the LCD, control the display
contrast, and turn on and off the LED backlight, respectively.
The process of controlling the display involves putting the data that form the image of what
you want to display into the data registers, then putting instructions in the instruction register.
The LiquidCrystal Library simplifies this for you so you don't need to know the low-level
instructions.
The Hitachi-compatible LCDs can be controlled in two modes: 4-bit or 8-bit. The 4-bit mode
requires seven I/O pins from the Arduino, while the 8-bit mode requires 11 pins. For displaying
text on the screen, you can do most everything in 4-bit mode, so example shows how to Aide
control a 16x2 LCD in 4-bit mode.
https://docs.arduino.cc/learn/electronics/lcd-displays 1/9
25/03/2023 Liquid Crystal Displays (LCD) with Arduino | Arduino Documentation | Arduino Documentation
A R D U I N O .C C STORE
Hardware Required Search documentation SIGN IN
Circuit
Note that this circuit was originally designed for the Arduino UNO. As the
Arduino is communicating with the display using SPI, pin 11 & 12 will change
depending on what board you are using. For example, on a MKR WiFi 1010, the SPI bus
is attached to pin 8 & 11.
Before wiring the LCD screen to your Arduino board we suggest to solder a pin header strip to
the 14 (or 16) pin count connector of the LCD screen, as you can see in the image further up.
To wire your LCD screen to your board, connect the following pins:
Additionally, wire a 10k potentiometer to +5V and GND, with it's wiper (output) to LCD screens
VO pin (pin3).
Schematic
https://docs.arduino.cc/learn/electronics/lcd-displays 2/9
25/03/2023 Liquid Crystal Displays (LCD) with Arduino | Arduino Documentation | Arduino Documentation
This example sketch prints Hello World! to the LCD and shows the time in seconds since
the Arduino was reset.
COPY
1 /*
2 LiquidCrystal Library - Hello World
3
4 Demonstrates the use a 16x2 LCD display. The LiquidCrystal
5 library works with all LCD displays that are compatible with the
6 Hitachi HD44780 driver. There are many of them out there, and you
7 can usually tell them by the 16-pin interface.
8
9 This sketch prints "Hello World!" to the LCD
10 and shows the time.
11
12 The circuit:
13 * LCD RS pin to digital pin 12
14 * LCD Enable pin to digital pin 11
15 * LCD D4 pin to digital pin 5
16 * LCD D5 pin to digital pin 4
17 * LCD D6 pin to digital pin 3
18 * LCD D7 pin to digital pin 2
19 * LCD R/W pin to ground
20 * LCD VSS pin to ground
21 * LCD VCC pin to 5V
22 * 10K resistor:
23 * ends to +5V and ground
24 * wiper to LCD VO pin (pin 3)
25
26 Library originally added 18 Apr 2008
27 by David A. Mellis
28 library modified 5 Jul 2009
29 by Limor Fried (http://www.ladyada.net)
30 example added 9 Jul 2009
31 by Tom Igoe
32 modified 22 Nov 2010
33 by Tom Igoe
Autoscroll Example
This example sketch shows how to use the autoscroll() and noAutoscroll() methods
to move all the text on the display left or right.
autoscroll() moves all the text one space to the left each time a letter is added
https://docs.arduino.cc/learn/electronics/lcd-displays 3/9
25/03/2023 Liquid Crystal Displays (LCD) with Arduino | Arduino Documentation | Arduino Documentation
A R D U I N O .C C STORE
noAutoscroll() turns scrolling off Search documentation SIGN IN
This sketch prints the characters 0 to 9 with autoscroll off, then moves the cursor to the
H A R D WA R E S O F T WA R E CLOUD PROGRAMMING TUTORIALS LEARN
bottom right, turns autoscroll on, and prints them again.
COPY
1 /*
2
3 LiquidCrystal Library - Autoscroll
4
5 Demonstrates the use a 16x2 LCD display. The LiquidCrystal
6
7 library works with all LCD displays that are compatible with the
8
9 Hitachi HD44780 driver. There are many of them out there, and you
10
11 can usually tell them by the 16-pin interface.
12
13 This sketch demonstrates the use of the autoscroll()
14
15 and noAutoscroll() functions to make new text scroll or not.
16
17 The circuit:
18
19 * LCD RS pin to digital pin 12
20
21 * LCD Enable pin to digital pin 11
22
23 * LCD D4 pin to digital pin 5
24
25 * LCD D5 pin to digital pin 4
26
27 * LCD D6 pin to digital pin 3
28
29 * LCD D7 pin to digital pin 2
30
31 * LCD R/W pin to ground
32
33 * 10K resistor:
Blink Example
This example sketch shows how to use the blink() and noBlink() methods to blink a
block-style cursor.
COPY
1 /*
2
3 LiquidCrystal Library - Blink
4
5 Demonstrates the use a 16x2 LCD display. The LiquidCrystal
6
7 library works with all LCD displays that are compatible with the
8
9 Hitachi HD44780 driver. There are many of them out there, and you
10
11 can usually tell them by the 16-pin interface.
12
13 This sketch prints "Hello World!" to the LCD and makes the
14
15 cursor block blink.
16
17 The circuit:
18
19 * LCD RS pin to digital pin 12
20
21 * LCD Enable pin to digital pin 11
22
23 * LCD D4 pin to digital pin 5
24
25 * LCD D5 pin to digital pin 4
26
27 * LCD D6 pin to digital pin 3
28
29 * LCD D7 pin to digital pin 2
30
31 * LCD R/W pin to ground
32
33 * 10K resistor:
https://docs.arduino.cc/learn/electronics/lcd-displays 4/9
25/03/2023 Liquid Crystal Displays (LCD) with Arduino | Arduino Documentation | Arduino Documentation
H A R D WA R E This
S O F example
T WA R E sketch
C L Oshows
UD how toR Ause
PROG M Mthe T U T O Rand
I N G cursor() I A L S noCursor()
LEARN methods to control
an underscore-style cursor.
COPY
1 /*
2
3 LiquidCrystal Library - Cursor
4
5 Demonstrates the use a 16x2 LCD display. The LiquidCrystal
6
7 library works with all LCD displays that are compatible with the
8
9 Hitachi HD44780 driver. There are many of them out there, and you
10
11 can usually tell them by the 16-pin interface.
12
13 This sketch prints "Hello World!" to the LCD and
14
15 uses the cursor() and noCursor() methods to turn
16
17 on and off the cursor.
18
19 The circuit:
20
21 * LCD RS pin to digital pin 12
22
23 * LCD Enable pin to digital pin 11
24
25 * LCD D4 pin to digital pin 5
26
27 * LCD D5 pin to digital pin 4
28
29 * LCD D6 pin to digital pin 3
30
31 * LCD D7 pin to digital pin 2
32
33 * LCD R/W pin to ground
Display Example
This example sketch shows how to use the display() and noDisplay() methods to turn
on and off the display. The text to be displayed will still be preserved when you use noDisplay()
so it's a quick way to blank the display without losing everything on it.
COPY
1 /*
2 LiquidCrystal Library - display() and noDisplay()
3
4 Demonstrates the use a 16x2 LCD display. The LiquidCrystal
5 library works with all LCD displays that are compatible with the
6 Hitachi HD44780 driver. There are many of them out there, and you
7 can usually tell them by the 16-pin interface.
8
9 This sketch prints "Hello World!" to the LCD and uses the
10 display() and noDisplay() functions to turn on and off
11 the display.
12
13 The circuit:
14 * LCD RS pin to digital pin 12
15 * LCD Enable pin to digital pin 11
16 * LCD D4 pin to digital pin 5
17 * LCD D5 pin to digital pin 4
18 * LCD D6 pin to digital pin 3
19 * LCD D7 pin to digital pin 2
20 * LCD R/W pin to ground
21 * 10K resistor:
22 * ends to +5V and ground
23 * wiper to LCD VO pin (pin 3)
24
25 Library originally added 18 Apr 2008
26 by David A. Mellis
27 library modified 5 Jul 2009
28 by Limor Fried (http://www.ladyada.net)
29 example added 9 Jul 2009
30 by Tom Igoe
31 modified 22 Nov 2010
32 by Tom Igoe
33 modified 7 Nov 2016
https://docs.arduino.cc/learn/electronics/lcd-displays 5/9
25/03/2023 Liquid Crystal Displays (LCD) with Arduino | Arduino Documentation | Arduino Documentation
Scroll Example
H A R D WA R E S O F T WA R E CLOUD PROGRAMMING TUTORIALS LEARN
This example sketch shows how to use the scrollDisplayLeft() and
scrollDisplayRight() methods to reverse the direction the text is flowing. It prints "Hello
World!", scrolls it offscreen to the left, then offscreen to the right, then back to home.
COPY
1 /*
2 LiquidCrystal Library - scrollDisplayLeft() and scrollDisplayRight
3
4 Demonstrates the use a 16x2 LCD display. The LiquidCrystal
5 library works with all LCD displays that are compatible with the
6 Hitachi HD44780 driver. There are many of them out there, and you
7 can usually tell them by the 16-pin interface.
8
9 This sketch prints "Hello World!" to the LCD and uses the
10 scrollDisplayLeft() and scrollDisplayRight() methods to scroll
11 the text.
12
13 The circuit:
14 * LCD RS pin to digital pin 12
15 * LCD Enable pin to digital pin 11
16 * LCD D4 pin to digital pin 5
17 * LCD D5 pin to digital pin 4
18 * LCD D6 pin to digital pin 3
19 * LCD D7 pin to digital pin 2
20 * LCD R/W pin to ground
21 * 10K resistor:
22 * ends to +5V and ground
23 * wiper to LCD VO pin (pin 3)
24
25 Library originally added 18 Apr 2008
26 by David A. Mellis
27 library modified 5 Jul 2009
28 by Limor Fried (http://www.ladyada.net)
29 example added 9 Jul 2009
30 by Tom Igoe
31 modified 22 Nov 2010
32 by Tom Igoe
33 modified 7 Nov 2016
This example sketch accepts serial input from a host computer and displays it on the LCD. To
use it, upload the sketch, then open the Serial Monitor and type some characters and click
Send. The text will appear on your LCD.
COPY
1 /*
2 LiquidCrystal Library - Serial Input
3
4 Demonstrates the use a 16x2 LCD display. The LiquidCrystal
5 library works with all LCD displays that are compatible with the
6 Hitachi HD44780 driver. There are many of them out there, and you
7 can usually tell them by the 16-pin interface.
8
9 This sketch displays text sent over the serial port
10 (e.g. from the Serial Monitor) on an attached LCD.
11
12 The circuit:
13 * LCD RS pin to digital pin 12
14 * LCD Enable pin to digital pin 11
15 * LCD D4 pin to digital pin 5
16 * LCD D5 pin to digital pin 4
17 * LCD D6 pin to digital pin 3
18 * LCD D7 pin to digital pin 2
19 * LCD R/W pin to ground
20 * 10K resistor:
21 * ends to +5V and ground
22 * wiper to LCD VO pin (pin 3)
23
24 Library originally added 18 Apr 2008
25 by David A. Mellis
26 library modified 5 Jul 2009
27 by Limor Fried (http://www.ladyada.net)
28 example added 9 Jul 2009
29 by Tom Igoe
30 modified 22 Nov 2010
https://docs.arduino.cc/learn/electronics/lcd-displays 6/9
25/03/2023 Liquid Crystal Displays (LCD) with Arduino | Arduino Documentation | Arduino Documentation
31 by Tom Igoe
A R D U I N O .C C STORE
32 modified 7 Nov 2016 Search documentation SIGN IN
33 b A t G d l i
H A R D WA R E S O F T WA R E CLOUD PROGRAMMING TUTORIALS LEARN
Set Cursor Example
This example sketch shows how to use the setCursor() method to reposition the cursor.
To move the cursor, just call setCursor() with a row and column position. For example, for
a 2x16 display:
COPY
1 lcd.setCursor(0, 0); // top left
2 lcd.setCursor(15, 0); // top right
3 lcd.setCursor(0, 1); // bottom left
4 lcd.setCursor(15, 1); // bottom right
COPY
1 /*
2
3 LiquidCrystal Library - setCursor
4
5 Demonstrates the use a 16x2 LCD display. The LiquidCrystal
6
7 library works with all LCD displays that are compatible with the
8
9 Hitachi HD44780 driver. There are many of them out there, and you
10
11 can usually tell them by the 16-pin interface.
12
13 This sketch prints to all the positions of the LCD using the
14
15 setCursor() method:
16
17 The circuit:
18
19 * LCD RS pin to digital pin 12
20
21 * LCD Enable pin to digital pin 11
22
23 * LCD D4 pin to digital pin 5
24
25 * LCD D5 pin to digital pin 4
26
27 * LCD D6 pin to digital pin 3
28
29 * LCD D7 pin to digital pin 2
30
31 * LCD R/W pin to ground
32
33 * 10K resistor:
This example sketch shows how to use the leftToRight() and rightToLeft()
methods. These methods control which way text flows from the cursor.
rightToLeft() causes text to flow to the left from the cursor, as if the display is right-
justified.
leftToRight() causes text to flow to the right from the cursor, as if the display is left-
justified.
This sketch prints a through l right to left, then m through r left to right, then s
through z right to left again.
COPY
1 /*
2
3 LiquidCrystal Library - TextDirection
4
5 Demonstrates the use a 16x2 LCD display. The LiquidCrystal
6
7 library works with all LCD displays that are compatible with the
8
https://docs.arduino.cc/learn/electronics/lcd-displays 7/9
25/03/2023 Liquid Crystal Displays (LCD) with Arduino | Arduino Documentation | Arduino Documentation
9 Hitachi HD44780 driver. There are many of them out there, and you
A R D U I N O .C C STORE
10 Search documentation SIGN IN
Custom Character
COPY
1 /*
2 LiquidCrystal Library - Custom Characters
3
4 Demonstrates how to add custom characters on an LCD display.
5 The LiquidCrystal library works with all LCD displays that are
6 compatible with the Hitachi HD44780 driver. There are many of
7 them out there, and you can usually tell them by the 16-pin interfa
8
9 This sketch prints "I <heart> Arduino!" and a little dancing man
10 to the LCD.
11
12 The circuit:
13 * LCD RS pin to digital pin 12
14 * LCD Enable pin to digital pin 11
15 * LCD D4 pin to digital pin 5
16 * LCD D5 pin to digital pin 4
17 * LCD D6 pin to digital pin 3
18 * LCD D7 pin to digital pin 2
19 * LCD R/W pin to ground
20 * 10K potentiometer:
21 * ends to +5V and ground
22 * wiper to LCD VO pin (pin 3)
23 * 10K poterntiometer on pin A0
24
25 created 21 Mar 2011
26 by Tom Igoe
27 modified 11 Nov 2013
28 by Scott Fitzgerald
29 modified 7 Nov 2016
30 by Arturo Guadalupi
31
32 Based on Adafruit's example at
33 https://github.com/adafruit/SPI VFD/blob/master/examples/createChar
https://docs.arduino.cc/learn/electronics/lcd-displays 8/9
25/03/2023 Liquid Crystal Displays (LCD) with Arduino | Arduino Documentation | Arduino Documentation
Contact Us
Enter your email to sign up SUBSCRIBE
Distributors
Careers
https://docs.arduino.cc/learn/electronics/lcd-displays 9/9