Solution found: LCD 20X4 Display Problem - Only top two lines display characters

This is my first post to this site and any advice would be appreciated.

I bought a new 20X4 J204A LCD and had it successfully up and running within minutes of attaching it to my Arduino Mega 2560. It ran perfectly for 3 hours.

After 3 hours of operating without error I noticed that that the contrast on the bottom two lines began to change in the following way. Dark boxes appeared randomly on either the left or right side of these lines and would obscure any characters written to these areas. The problem progressively got worse with time and now it is impossible to display any meaningful characters on the bottom lines. On the bottom two lines, all I can see are boxes that will only go away if I turn the Pot all the way down. As soon as I adjust the contrast back up to where I can see the top line characters the strange boxes appear on the bottom lines. I can not clear them through code by writing spaces over them or even turning off the display entirely. Adjusting the potentiometer works properly for the top two lines but does not correct the display issues on the bottom two lines. Again, the top two lines are working perfectly. Since the LCD was working perfectly and without change I assume it died slowly.

My questions are:

  1. Does this seem to be a partially failed LCD that needs to be replaced? Is it common for LCD’s to fail?
  2. Can the symptoms be corrected by some other means I am not familiar with (such as modifying the circuit with additional components that clean up the display/trying a different potentiometer, etc.).
  3. Does anyone know the proper way to create LCD protective circuitry beyond the standard LCD schematics found on this website? I worry that I may have somehow stressed the LCD even though it was only provided 5 volts per LCD datasheet to VDD, Backlight, and Potentiometer.

Sounds like it is "cactus".

It just might be possible to correct by adjusting the compression of the zebra strips (by the lugs that are folded under the board) - see what happens if you press the metal bezel on the lower edge.

Otherwise send it back for refund. Bad LCDs are not entirely uncommonly reported here.

It seems this lcd is available in 3.3V and 5V versions. Do you know which one you have ?

Thank you for your helpful responses. They were key in helping me to identify the problem. The comment on the "zebra strip compression" led me to the solution. The problem was caused by the LCD polarizing filter peeling up in one area from its base. (definitely a manufacturing problem) The filter needed to be glued back down flush to repair the LCD.

For anybody interested, here is the long answer with the steps that corrected the issue for me:

  1. Connect LCD to Arduino and upload a test script that displays characters in every location. These characters will help in the troubleshooting.
  2. I applied slight squeezing pressure to all sides of the metal bezel while the LCD was connected to the arduino and found that I could cause the problem to lessen or greater by pressing in certain spots. However the problem would not entirely go away and random unwanted boxes would still appear in some places while good characters would disappear in other places.
  3. Remove the LCD from the Arduino to allow for LCD disassemble.
  4. I removed the bezel all together with a pair of needle nose pliers. Gently twist the metal holders on the underside until they aline with 8 slots they go through. This may be different for other LCD models. I am using the 20x4 J204A.
  5. Gently and evenly lift the metal cover from the circuit board. Apply even pressure to the underside of the metal pegs to press the cover off from underneath.
  6. Once the metal cover is off, reconnect LCD to Arduino.
  7. Repeat step 2 by applying slight pressure to top and sides of lcd glass and zebra strips and take note of any changes to the LCD characters. I almost gave up here because the problem always seemed to reappear in the same place (lower right portion of the LCD screen) no matter what I tried. Since the LCD was destined for scrap anyway I continued and found the solution next.
  8. Disconnect the LCD from the Arduino and gently remove the LCD with the zebra strip pads from the circuit board. I was able to leave the zebra strips attached to the LCD glass and remove the pads from the circuit board.
  9. With the LCD removed you can now see the top polarizing filter (the white paper-like rectangle) . This is an extremely important component of the LCD. See the video at Building a liquid crystal display (LCD) - YouTube to learn more.
  10. PROBLEM LOCATED HERE* The top polarizing filter was lifting up in the lower portion which is exactly where I was noticing the problem. This polarizing filter must be firmly attached to the base for it to properly orient the light waves and display characters on the LCD.
  11. I needed to secure the LCD polarizing filter back in place to prevent it from lifting up. I used a small straight edge to press the polarizing filter back in place. With very tiny amounts of hobby glue (similar to Super Glue) I reattached the filter to base. It is important to ensure that the glue does not get underneath or on top of the polarizing filter because the glue can cause polarization interference. Instead, use small amounts of glue from the sides of the polarizing lens.
  12. With the glue dry, remove the straight edge and reattach the LCD to the circuit board. It may be a little tricky to realign the zebra pads and so it is useful to attach the circuit board back to the Arduino and ensure the characters are displayed correctly when pressing down in the right places. I glued small rubber pads to the sides of the circuit board that rested against the zebra pads when they were in the correct position. This helped me to realign the LCD if I jarred it out of place.
  13. Remove the LCD from the Arduino and carefully secure the metal cover to the circuit board and adjust how much downward pressure the metal plate applies to the LCD glass. . It took about 15 minutes of trial and error to get the pressure right with needle nose pliers. I had to reconnect the LCD to the Arduino several times during this process.
  14. Done. Now my LCD works perfectly again.

Full marks!

Great post. well worth noting.
Have a look at thees images.
Display screwed, or can it be reset?


Sorry for the duplicate image.

Faulty Zebra-strip.

// Per.

Hi Zapro.

"//Per." ??? Sorry don't understand this?

So can this be fixed with regards to the above posts?

Or just "file it", IE, Trash?

Have tried to contact the supplier, but purchased 2/3 months ago from China via Aliexpress. I had asked the supplier "in an online chat", If it was with the I2C backpack, answer was "yes", although no record of this. When arrived, no backpack, complained and got nowhere, so don't fancy my chances there.

If the item is screwed, and i get nowhere with the supplier, i will publish the offender on the forum, for others to avoid.



Per? Your name?


Zapro -my Handle/Nickname. - my website.
Per Jensen - my name :slight_smile:

With that aside, try to bend the tabs (that hold the frame in place) straight - carefully remove the LCD glass and two zebra-strips. Keep note of the orientation of the glass! It can be somewhat stuck, so pull slightly on them.
Clean all parts in isopropyl alcohol. Do not get finger grease on any of the parts!

Re-assemble, remeber to press down firmly on the metal frame, before bending in the tabs again.

If this doesn't work, you have a dud display.

// Per.

Hi Zapro.

Thanks for the update.
Interesting website. Never come across it before, very useful information.

Just about to play with the LCD, as explained above.
Would i be correct to say, that the zebra strips are 1 for + and 1 for -? Thus it doesn’t matter to much if it is slightly to the left or right on the glass?

Would the same procedure be needed for the other LCD, photos attached, as it would seem to have a dead pixel in the bottom right character?

Thank you for your advise and precise directions. :slight_smile:


Great post !
Congratulations. (great feeling to fix something isn't it ?)
Very helpful for those with determination and patience..