Topway LCD LMB162ABC not display Hello World

I am new to Arduino.
I have connected Topway LCD to my arduino(actually an Eleven) and Nothing displays except black boxes on top line. Fiddleing with contrast makes the black boxes go away and results in a blank screen.
If I connect a lcd from Jaycar( SD1602G2) it works. The Jaycar Pinout is different to normal(15-16 then 1 to 14. Pin 14 is at the corner end), but it still works fine.
Does this mean that the topway LCD is a Dud or is it not compatible with the Library(Liquid Crystal Library ,Standard issue from Arduino ?

I have included Pics of Topway, Jaycar and Code I have uploaded.
Any help appreciated

HelloWorldArduino.txt (1.6 KB)

Does this mean that the topway LCD is a Dud or is it not compatible with the Library(Liquid Crystal Library ,Standard issue from Arduino ?

There's no reason that it should not be compatible with the library and, since you can display the row of boxes, it is not likely to be a dud.

Your photograph is not quite in focus so I can't really check out the soldering job on that display, but that is a possibility. I assume the wire connecting pin 5 to GND is there as well since it shows up in the other picture.


  LiquidCrystal Library - Hello World

 Demonstrates the use a 16x2 LCD display.  The LiquidCrystal
 library works with all LCD displays that are compatible with the
 Hitachi HD44780 driver. There are many of them out there, and you
 can usually tell them by the 16-pin interface.

 This sketch prints "Hello World!" to the LCD
 and shows the time.

  The circuit:
 * 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
 * LCD VSS pin to ground
 * LCD VCC pin to 5V
 * 10K resistor:
 * ends to +5V and ground
 * wiper to LCD VO pin (pin 3)

 Library originally added 18 Apr 2008
 by David A. Mellis
 library modified 5 Jul 2009
 by Limor Fried (
 example added 9 Jul 2009
 by Tom Igoe
 modified 22 Nov 2010
 by Tom Igoe

 This example code is in the public domain.

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
 LiquidCrystal lcd(9, 8, 7, 6, 5, 4);

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

void loop() {
  // 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:
  lcd.print(millis() / 1000);

Topway LCD.jpg

Jaycar LCD.jpg

Must be a connection problem. I would double-check your soldering of the pins, and that they are properly inserted, and that you have properly grounded RS.

Showing the black characters in this case indicates a reasonably correct setting of the contrast. You do not want them to go away!

Interesting that the Topway datasheet illustrates the correct wiring of the contrast preset. It also specifies that a series resistor is not required for the backlight as this is included and the voltage specified as 5 V.

And Jaycar repudiates the SD1602G2.

Yes, the connection from pin 5 to ground is there for both displays. I will double check my soldering

Have checked the soldering. All looks good. I have now soldered pins on underside of LCD board as well (to be sure to be sure). The problem still persists. I am convinced this LCD has something wrong with it.
I did note that the LCD does not need a current limiting resistor. I felt this restriction might push more current to Pin 2 , just in case it needed a bit more. I have powered from USB and also using a 9V 350ma plug pack.

I have same problem, already double check the cable. my solution just change the pin at line const int rs = 12, en = 11 To const int rs = 11, en = 8

And IT WORKs, (for me). Hope it work for you also.