LCM1602C LCD + Arduino Uno R3

Hi there,

My Arduino Uno came with a kit. the kit contains a LCM1602C LCD display. I was trying to do the “hello world” tutorial example but I see nothing on the display, the pot works fine changing the contrast but no “hello world” on display:(

The tutorial mentions something about display being compatible with a Hitachi HD44780 driver. how do i find out if my display is compatible or not. thanks in advance.

attach is the data sheet of the LCD

LCM1602C.pdf (67.6 KB)

There's no reason to think that it is not compatible so you are probably doing something wrong, most likely a bad connection. How about posting a picture that clearly and unambiguously shows all of the connections between your LCD module and your Arduino.

What value series resistor did you use with your backlight? Your 'data sheet' seems to lack any information about this topic.


LOL…thank you soo much. IF you hadn’t asked me to post up the picture i would’ve still been thinking that i did everything right and something is wrong with the LCD. So i decided to organize the wires each with a different color so u can see better in the pic…and there it was staring me in the face i had skipped over the R/W(5) to ground…so it works fine now!!!..since i did it y not show it off (pic attached:))…thanks so much. next is to connect a LM35 to it:)

Love Life Live Life

Recommend this potentiometer:

You can plug it into the breadboard holes. Easier than the big pot you have.

I assume you have the lcd working by now. How did you resolve the problem. I had the same problem.
I got it working by grounding the V0 pin.(display very dark though)
I have tried looking for an english data sheet but could only find the attached.
It seems to indicate the V0 pin(lcd power) needs to be a negative supply.
I dont intend using this display for future projects.


lcd datasheet.pdf (1.05 MB)

You really should have started a new thread since this one is more than two years old.

Typically when you vary the pot so that the VO voltage is higher than ideal the display will be very light (invisible) and when the voltage is lower than ideal the display will be very dark (maybe even just two rows of solid blocks).

If the display actually requires a negative VO then the display will still be too light with 0 volts applied (with the pin grounded) so I don’t think that is your problem.

My guess is that your potentiometer was defective or incorrectly connected.


I don't think a new thread is necessary. I bought my kit in October 2014. I'm having the exact same issue and I have the sam LCD, LCM1602C..

Hi Tim!

I had the same issue, I solved it connecting the Vo to PWM pin 8 and starting to try diffent values. With value 0 it works great, aprox by 130 it disappears.

Hi Tim!

I had the same issue, I solved it connecting the Vo to PWM pin 9 and starting to try diffent values. With value 0 it works great, aprox by 130 it disappears.

mmmhhh just realized that I had the Vo connected to pin 8 without PWM, now I connected to pin 9 with PWM, it works fine, as you increase the value however, it starts to flicker, if you want to avoid that, you will have to use a capacitor. I tried a 100uF and it looks almost OK, ideal would be 220.

Here is some code (an Arduino sketch) to display a counter on the LCM1602C.
It includes comments and variable names with pin assignment to capture the spec info.
For example:
int lcd6E = 9, // Arduino Pin 9. LCD H/L Enable.
This is for the lcd pin 6 (Enable) to be connected to pin 9 on the Arduino.
Change the Arduino Pin to whatever suits you and use"
LiquidCrystal lcd(lcd4RS, lcd6E, lcd11D4, lcd12D5, lcd13D6, lcd14D7);

Here is the complete code:
/* LED Hello (Notepad).txt
Display Library is here: LiquidCrystal Arduino Library, using small character LCD modules with Teensy

Most LCDs run on 5 volts, but are able to receive
3.3 volt signals from Teensy 3.0 or Teensy 2.0 modified
for 3.3 volts.
LiquidCrystal lcd(RS, Enable, D4, D5, D6, D7)
Create the LiquidCrystal object and specify the 6 pins where the LCD is connected. You can connect more than one display (each to its own pins) and create a separate LiquidCrystal objects for each.

lcd.begin(width, height);
Initialize the display and set the size.

Print a number or text. This works the same as Serial.print(), but prints to the LCD.

lcd.setCursor(x, y);
Move the cursor to position (x, y). These are zero-based coordinates.
// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
// LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// LiquidCrystal lcd( RS, E, D4, D5, D6, D7);
int lcd4RS = 10, // Arduino Pin 10. LCD pin 4 is RS.
lcd6E = 9, // Arduino Pin 9. LCD H/L Enable.
lcd11D4 = 5, // Arduino Pin 5.
lcd12D5 = 4, // Arduino Pin 4.
lcd13D6 = 3, // Arduino Pin 3.
lcd14D7 = 2; // Arduino Pin 2.
LiquidCrystal lcd(lcd4RS, lcd6E, lcd11D4, lcd12D5, lcd13D6, lcd14D7);
int potOut;
void setup() {
// set up the LCD’s number of rows and columns:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.setCursor(0, 0);
lcd.print(“hello, world!”);
Serial.println(“Welcome to Lesson 19: LED Proof.”);

void loop() {
potOut = analogRead(A5); // Values of 0-1023.
Serial.print(" Pot Output = "); Serial.println(potOut);

// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:

My display is LCD LCM1602C.
I hope this help you with the display and with coding techniques to make it readable.

Here is the hardware setup for the previously shown code:

Display Pin followed by its connection:
2 5 v
3 Pot output (or GND may work).
4 To assigned code Arduino Pin (Pin 10 in sample code).
6 To assigned code Arduino Pin (Pin 9 in sample code).
(7-10 are not connected)
11 To assigned code Arduino Pin (Pin 5 in sample code).
12 To assigned code Arduino Pin (Pin 4 in sample code).
13 To assigned code Arduino Pin (Pin 3 in sample code).
14 To assigned code Arduino Pin (Pin 2 in sample code).
15 5 v via 220 Ohm Resistor (directly to 5 v also appears to work)
16 GND

There is also a connection from the pot output to A5 for watching on Serial Monitor. This is critical since if the pot is not functioning the way that is expected, the display will not work well if at all.

Again, I hope this helps you, as it took some time for me to work all this out.

One other note: I decoupled the breadboard from the Arduino board by putting pin 1 of the Display into the breadboard hole 1 (etc.). Then, I ran jumpers from that side of the breadboard to the other with the number for the number for the Arduino pin it was going to be connected (or to ground/ 5v / pot out). Then, I could disconnect this breadboard from the Arduino and use another breadboard for another project, keeping this breadboard for modifications of this project. Reconnecting this breadboard is easy using the breadboard number to Arduino pin numbers (and to A5 for pot monitoring).


I had exactly the same problem. It turned out that the resistor connected to pin LCD 15 wasn't seated properly in the breadboard. Pressed in properly and voila! Works a treat.

malcolm, thanks for the additional code & notes.