The LCD only displays a line of blocks

Please help my LCD only display blocks (connected with I2C module)
I'm pasting the I2CexpDiag of my LCD Display using hd44780 library.

No⸮
********************************************************************
Serial Initialized
--------------------------------------------------------------------
I2CexpDiag - i2c LCD i/o expander backpack diagnostic tool
--------------------------------------------------------------------
hd44780 lib version: 1.3.2
--------------------------------------------------------------------
Reported Arduino Revision: 1.8.20
CPU ARCH: AVR - F_CPU: 16000000
--------------------------------------------------------------------
SDA digital pin: 18 A4
SCL digital pin: 19 A5
--------------------------------------------------------------------
Checking for required external I2C pull-up on SDA - YES
Checking for required external I2C pull-up on SCL - YES
Checking for I2C pins shorted together - Not Shorted
--------------------------------------------------------------------
Scanning i2c bus for devices..
 i2c device found at address 0x27
Total I2C devices found: 1
--------------------------------------------------------------------
Scanning i2c bus for all lcd displays (4 max)
 LCD at address: 0x27 | config: P01245673H | R/W control: Yes
Total LCD devices found: 1
--------------------------------------------------------------------
LCD Display Memory Test
Display: 0
 Walking 1s data test:	
	Compare error: addr: 0 read 22 != wrote 1
	Compare error: addr: 0 read 22 != wrote 2
	Compare error: addr: 0 read 22 != wrote 4
	Compare error: addr: 0 read 22 != wrote 8
	Compare error: addr: 0 read 22 != wrote 10
	Compare error: addr: 0 read 22 != wrote 20
	Compare error: addr: 0 read 22 != wrote 40
	Compare error: addr: 0 read 22 != wrote 80

	Compare error: addr: 40 read 22 != wrote 1
	Compare error: addr: 40 read 22 != wrote 2
	Compare error: addr: 40 read 22 != wrote 4
	Compare error: addr: 40 read 22 != wrote 8
	Compare error: addr: 40 read 22 != wrote 10
	Compare error: addr: 40 read 22 != wrote 20
	Compare error: addr: 40 read 22 != wrote 40
	Compare error: addr: 40 read 22 != wrote 80

	Compare error: addr: 10 read 22 != wrote 1
	Compare error: addr: 10 read 22 != wrote 2
	Compare error: addr: 10 read 22 != wrote 4
	Compare error: addr: 10 read 22 != wrote 8
	Compare error: addr: 10 read 22 != wrote 10
	Compare error: addr: 10 read 22 != wrote 20
	Compare error: addr: 10 read 22 != wrote 40
	Compare error: addr: 10 read 22 != wrote 80

	Compare error: addr: 50 read 22 != wrote 1
	Compare error: addr: 50 read 22 != wrote 2
	Compare error: addr: 50 read 22 != wrote 4
	Compare error: addr: 50 read 22 != wrote 8
	Compare error: addr: 50 read 22 != wrote 10
	Compare error: addr: 50 read 22 != wrote 20
	Compare error: addr: 50 read 22 != wrote 40
	Compare error: addr: 50 read 22 != wrote 80
FAILED
 Address line test:	
	Compare error: addr: 0 read 22 != wrote 0
	Compare error: addr: 1 read 22 != wrote 1
	Compare error: addr: 2 read 22 != wrote 2
	Compare error: addr: 3 read 22 != wrote 3
	Compare error: addr: 4 read 22 != wrote 4
	Compare error: addr: 5 read 22 != wrote 5
	Compare error: addr: 6 read 22 != wrote 6
	Compare error: addr: 7 read 22 != wrote 7
	Compare error: addr: 8 read 22 != wrote 8
	Compare error: addr: 9 read 22 != wrote 9
	Compare error: addr: B read 22 != wrote B
	Compare error: addr: C read 22 != wrote C
	Compare error: addr: E read 22 != wrote E
	Compare error: addr: F read 22 != wrote F
	Compare error: addr: 10 read 22 != wrote 10
	Compare error: addr: 11 read 22 != wrote 11
	Compare error: addr: 12 read 22 != wrote 12
	Compare error: addr: 13 read 22 != wrote 13
	Compare error: addr: 14 read 22 != wrote 14
	Compare error: addr: 15 read 22 != wrote 15
	Compare error: addr: 16 read 22 != wrote 16
	Compare error: addr: 17 read 22 != wrote 17
	Compare error: addr: 18 read 22 != wrote 18
	Compare error: addr: 19 read 22 != wrote 19
	Compare error: addr: 1A read 22 != wrote 1A
	Compare error: addr: 1B read 22 != wrote 1B
	Compare error: addr: 1C read 22 != wrote 1C
	Compare error: addr: 1D read 22 != wrote 1D
	Compare error: addr: 1E read 22 != wrote 1E
	Compare error: addr: 1F read 22 != wrote 1F
	Compare error: addr: 20 read 22 != wrote 20
	Compare error: addr: 21 read 22 != wrote 21
	Compare error: addr: 23 read 22 != wrote 23
	Compare error: addr: 24 read 22 != wrote 24
	Compare error: addr: 25 read 22 != wrote 25
	Compare error: addr: 26 read 22 != wrote 26
	Compare error: addr: 27 read 22 != wrote 27

	Compare error: addr: 40 read 22 != wrote 40
	Compare error: addr: 41 read 22 != wrote 41
	Compare error: addr: 42 read 22 != wrote 42
	Compare error: addr: 43 read 22 != wrote 43
	Compare error: addr: 44 read 22 != wrote 44
	Compare error: addr: 45 read 22 != wrote 45
	Compare error: addr: 46 read 22 != wrote 46
	Compare error: addr: 47 read 22 != wrote 47
	Compare error: addr: 48 read 22 != wrote 48
	Compare error: addr: 49 read 22 != wrote 49
	Compare error: addr: 4A read 22 != wrote 4A
	Compare error: addr: 4B read 22 != wrote 4B
	Compare error: addr: 4C read 22 != wrote 4C
	Compare error: addr: 4D read 22 != wrote 4D
	Compare error: addr: 4E read 22 != wrote 4E
	Compare error: addr: 4F read 22 != wrote 4F
	Compare error: addr: 50 read 22 != wrote 50
	Compare error: addr: 51 read 22 != wrote 51
	Compare error: addr: 52 read 22 != wrote 52
	Compare error: addr: 53 read 22 != wrote 53
	Compare error: addr: 54 read 22 != wrote 54
	Compare error: addr: 55 read 22 != wrote 55
	Compare error: addr: 56 read 22 != wrote 56
	Compare error: addr: 57 read 22 != wrote 57
	Compare error: addr: 58 read 22 != wrote 58
	Compare error: addr: 59 read 22 != wrote 59
	Compare error: addr: 5A read 22 != wrote 5A
	Compare error: addr: 5B read 22 != wrote 5B
	Compare error: addr: 5C read 22 != wrote 5C
	Compare error: addr: 5D read 22 != wrote 5D
	Compare error: addr: 5E read 22 != wrote 5E
	Compare error: addr: 5F read 22 != wrote 5F
	Compare error: addr: 60 read 22 != wrote 60
	Compare error: addr: 61 read 22 != wrote 61
	Compare error: addr: 62 read 22 != wrote 62
	Compare error: addr: 63 read 22 != wrote 63
	Compare error: addr: 64 read 22 != wrote 64
	Compare error: addr: 65 read 22 != wrote 65
	Compare error: addr: 66 read 22 != wrote 66
	Compare error: addr: 67 read 22 != wrote 67
FAILED
Memory test failures are usually due to poor solder connections
Most common cause is poor solder joints on pins soldered to the LCD

--------------------------------------------------------------------
No working LCD devices  //

Hello smsujan19
Do you are using an I²C adapter?
If YES, than adjust the constrast using the pot on the I²C adapter.
OTHERWISE: I don´t know too.

Have a nice day and enjoy coding in C++.
Дайте миру шанс!

From the diagnostic report:

Is the backpack professionally soldered ?
Please post a photo if the soldering was done by you.

Adding to @ david_prentice... my BREADBOARD has caused me errors (LEDs not lighting, shift registers doing random, OLEDs not displaying... and more... so check your breadboard, too.

I soldered it myself

If you see black blocks on the display, it is powered up, but communications are not working.

Haven't used a breadboard, directly connected it to the arduino.

grafik

check and resolder all connection points

Apply your soldering iron to each terminal in turn. The solder will flow nicely and give you a shiny joint that wets the pin. Just like the professionals.

Everyone had to make their first soldering. Practice makes perfect !!

1 Like

Do these boards have vias to ensure one-side soldering becomes multi-layer continuity?

Typical 16x2 LCD have double sided pcb. There are hundreds of vias.
Typical backpacks have double sided pcb. You can see one or two vias.

The ordinary mortal buys an LCD with ready-soldered backpack.
The enthusiast buys separate items. And solders the terminal rows together with some male header strip.

David.

Hello xfpd
I guess the I²C PCB has a douple layer design and due to that a soldered connectity will work.

Have a nice day and enjoy coding in C++.
Дайте миру шанс!

p.s. david_prentice was faster

I think this (double layer, without a via connecting the layers) is a possible cause for lack of continuity, or the need to solder both top AND bottom layer to their respective solder pads. A via would only need soldering on the top OR bottom layer to complete continuity. This means, if a header is soldered to the obverse side of a board without vias, the pads on reverse side of the board will be covered by the plastic of the header, not allowing soldering on that side, resulting in open pins. Just a thought.

Oh dear.

Did the OP edit the title at some point?

The LCD only displays a line of blocks

... immediately proves that the contrast is adjusted sufficiently correctly to show whatever would be displayed but that the driver is clearly not initialised.

Indeed. Pin 5 is not connected and given that it is the Read/~Write pin, that is critical for proper operation, while pins 4 and 6 may or may not be connected as well.

Yes, lots of them. Could not be fabricated otherwise. Never in doubt.

Whatever the muse, simply muddling the issue. :dizzy_face:

You are wrong. Surface pads without vias are in many devices. I am happy to hear that these (subject) devices are using vias. Thank you.

Not so sure about that. :face_with_raised_eyebrow:

You are now saying that you do not actually know what an "I²C backpack" is whereas most of us here do since we are busy explaining how to use them, but you are nevertheless happy to pontificate on how it is constructed. :roll_eyes:

I don't see what the fuss is about. Chinese pcbs are well made and well assembled. I doubt if you will ever get problems with the pcb on either LCD or backpack.

The 16 "user" terminals are plated through.
This makes them mechanically strong and electrically reliable. The gold surface making them easy to solder.

The photo in #5 / #8 shows poor soldering. Just re-make the joints with a soldering iron.

Yes, you do get some pcbs with the occasional single sided gold test pad.
These are not intended for "users". Soldering wires to them is mechanically fragile.

You are right, and I should have only questions and answers concerning your topic. I am sorry.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.