White Boxes Issue on LCD 1602

Hello everyone, I have searched through the depths of arduino forums and have not stumbled across one that directly addresses my issue. I am new to Arduino and am trying to set up a standard 1602 LCD on my board. I have set up all the wiring correctly and have a back light but for some reason my LCD only shows white boxes in the top row. I have ran every code imaginable and can only get the same white boxes. I read somewhere else that this is a sign that the LCD module is a dud. Is this true? I just purchased this an hooked it up so its unlikely that i did anything to fry/ damage the LCD in any way.

Thanks for any help.

I have attached a picture of the white boxes on my display.


You need to solder the header to the LCD pads before you can expect the LCD to work. As is, there is no solid contacts from the Arduino to the LCD.

How to post an image so that we don't have to download it.

You need to solder the header to the LCD pads before you can expect the LCD to work.

Ah yes, that old furphy!

Why does it not work? Because you did not actually connect it! :astonished:

Makes sense. Any tips for soldering the pins? I am pretty good at soldering electronics but have never soldered a header to a board.


Plug the male header into a female header (or breadboard*) before you try to solder it. The female header will stabilize the pins on the male header and keep them in line while soldering.

  • I don't like using a breadboard for this as it can damage the breadboard, but if that is what you have, just be careful with the heat.

Ok, great. I’ll update once I have it done.

Ok, so I soldered the header onto the pins. Its a little ugly but they’re all connected fully aren’t touching each other. I now have the full screen covered in boxes. My code is the generic Hello world code which i have listed below:

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print("hello, world!");

void loop() {
  // Turn off the blinking cursor:
  // Turn on the blinking cursor:

I have also attached a picture of my wiring. Don’t laugh at my soldering skills :smiley:

here is a better photo of the wiring…



i realized that after i posted the photo. I have since fixed the pins and the issue persists. i am going to take a multimeter and check the current between each of the pins on the board and see if there is anything odd.

I just checked all the pins on the LCD board and here is what I found:

rs = 0v
e = 0v
d4 = 5v
d5 = 5v
d6 = 5v
d7 = 0v

With the bad solder joints, I don't think that the voltages are that useful unless you can measure the voltage that the LCD actually sees. It is the continuity between the pins and LCD pads that is suspect.

Ok, I just re-soldered the header to the lcd board making sure there is a full, complete solder joint between each pin hole and header pin. I now have the original one white boxes row and no words from my code.

Now adjust the contrast and see if anything appears. The contrast may be so "high" that the text is blanked out. What happens?

I wired a 1602 LCD to my Uno and uploaded the code from reply#7. I get "hello, world!" and a blinking box cursor on the top line. So the code and wiring per the code works.

I adjusted the potentiometer and the boxes slowly faded out to a blank screen. It's really odd because it is lighting up like it works but the code which you just confirmed works is not showing up. Is there a chance that I have a dud LCD? Is that even possible?

Out of, probably, 30 LCDs that I have purchased, 1 was bad (DOA). And it actually had visible damage. So it is possible.

To be honest, if it were me, I would buy an LCD with a I2C backpack already installed (all of the soldering is already done). I seldom use "bare" LCDs any more. I2C LCDs use only 2 pins. Since I2C is a bus other I2C devices can use those same 2 pins. Then install the HD44780 library for I2C LCDs and from there it is pretty much plug and play.

Ok, I am going to look into that. Thanks