[Solved] Character LCD (with HD44780 controller) stays blank

I have 24x4 character LCD (HDM24416L-1-L30P, datasheet), it uses HD44780. I'm trying to connect it to Arduino Mega 2560. I'm doing it exactly as suggested in "LiquidCrystal Library - Hello World" example:

  • LCD RS pin to digital pin 12
  • LCD Enable pin to digital pin 11
  • LCD D4 pin to digital pin 5
  • LCD D5 pin to digital pin 4
  • LCD D6 pin to digital pin 3
  • LCD D7 pin to digital pin 2
  • LCD R/W pin to ground
  • 10K resistor:
  • ends to +5V and ground
  • wiper to LCD VO pin (pin 3)

The LCD does not have VO pin, but it has VL pin, so I connected it to the pot. Everything else is connected as suggested in the example. I slightly corrected the code for my 24x4 LCD:

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(24, 4);
  lcd.print("hello, world!");
}

void loop() {
  lcd.setCursor(0, 1);
  lcd.print(millis()/1000);
}

I compiled and uploaded the sketch but the screen stays blank. It's backlight works, and I tried to adjust the pot, no effect at all.

I then disconnected everything except 5V, GND and VL, the screen remained blank. I pulled GND wire out by accident and 4 rows of black ractangles appeared on the right half of the screen, then faded away. I can reproduce this sometimes, and so far this is the only way I found to get non-blank screen. So, I guess LCD itself works (sort of; not sure about its controller). I also know that my Arduino works.

Am I doing something wrong or is LCD' controller defective?

  1. The HD44780 controller can only handle 80 characters, that's 20x4. I'm not sure how a 24x4 configuration is possible with such a controller.
  2. Per-datasheet, the pot should be connected to +5v and Pin17 (Vout), the wiper goes to VL.
  3. Start by connecting just the power and contrast pins, without data. An uninitialized LCD should display 2 rows of black blocks.

The wiper was already connected to VL. But it seems I did small mistake by connecting one pot leg to GND instead of Pin17 of the LCD. Unfortunatelly, this did not change anything, the screen still blank.

I checked voltages directly at the LCD module pins:
1 (VSS): 0V
2 (VDD): 4.8V
3 (VL): I have tried adjusting the pot and voltage, as expected, changes between -4.5V~4.8V; but screen always stays completely blank (nothing but glowing backlight)
17 (Vout): -4.5V
All other pins are disconnected at the moment (except backlight).

I tried unplugging USB power supply and then plug it back in. Still blank. I of course tried to adjust the pot.

After getting no results, I tried again randomly unplugging VSS (GND) pin like I did before to get at least something on the screen, but this time screen alwayes stayed blank. I guess this is because pot is connected to Vout now (not GND like before); if I plug VL directly to GND, then I can get some garbage on the screen sometimes after unplugging VSS. I have no idea if this is useful information or not.

Is there anything else I can try? Or my LCD module is defective?

  • ends to +5V and ground

That appears to be an 'extended temperature' display. Connect the potentiometer between pin 17 and GND with the wiper on pin 3 and see what happens.

Don

I did like you suggested then connected power to pins 1 and 2, and slowly adjusted the pot from start to end but the LCD always stayed blank. I guess it's defective. Thanks anyway for trying to help me.

I just couldn't believe that it does not work, so decided to try again to connect LCD to Arduino, this time with pot connected correctly. And my LCD works after all! I just had to connect it to my Arduino and output some data to it.

This is why it stayed blank in all previous tries:

Connecting the pot incorrectly was my first mistake, this is why I couldn't see anything the first time. Correct way to connect the pot is like TheCoolest suggested: ("the pot should be connected to +5v and Pin17 (Vout), the wiper goes to VL").

TheCoolest:
3. Start by connecting just the power and contrast pins, without data. An uninitialized LCD should display 2 rows of black blocks.

This turned out to be not true. My uninitialized LCD displays 4 rows of blank blocks - that's it, stay blank. This is why I could not see anything even after correctly connecting the pot.

So, with this LCD usual ways of connecting the pot or testing do not work. By the way, at any reasonable angle of view it is not possible to make blank pixels visible by adjusting contrast. It is not possible to test this LCD without printing something on it. Hopefully my experience will be useful to somebody.

I'm glad that you got it working, but it is also very interesting to me. I kind of doubt it's an actual HD44780 or clone, as the HD44780 is supposed to have 80 bytes for display RAM, it can't display more than 80 characters, yours has 96 characters. It may be a different controller which uses HD44780 compatible commands, so it may not behave the same way as a real HD44780 does when you power it up.

JohanEkdahl from AVRfreaks says this is possible because 24x4 LCD have controller "...largely compatible with a 44780, but with a larger DDRAM.

Yeah, it's pretty much what I said in other words. The controller is probably not a real HD44780, but one with a compatible set of commands.