The 255-255 Character on HD44780 compatible LCD?


I’m fresh out of the can with regard to Arduino - as an excuse for this post…

Can sombody tell me how to modify the “Hello World” LCD Sketch to turn all segments on (the “1111 1111” character) on all characters of a 16x4 HD44780 compatible display?

I’m doing some work for someone and there are occasional problems with some of the displays having missing segments (dots?) which, of course, only show up on certain characters!

It seemed to me that turning everything on would be the best way of testing them…


lcd.print(255, BYTE);

Ok... Thanks

That was probably so obvious to you, but to a newbie...


Well - it may not be that easy.

The HD44780 based LCD uses a character generator to define which segments to light for which ascii character. Each character is defined within a 7x5 matrix for a total of 35 segments. Accordingly there is no one-to-one relationship between the LCD character displayed (35 bits/segments) and the actual ascii character (8 bits). For ascii 255, the displayed character will simply map to 5 bytes in the LCD module's character ROM which will determine the state (on/off) for its 35 segments. You may want to check the LCD module's documentation to see if any character is defined as a solid block with all segments switched on, but this may not be the case.

The HD44780 however supports user defined characters (ascii 0 to 7). You can use this feature to write a small sketch to define a character that turns on all 35 segments and print this character in every cell (16x4) on your LCD. If you google for "Arduino HD44780 'user defined'" you should find a fair number of entries on user defined characters.

Hi Guys...

According to the info I have, the 'all on' character is with the upper and lower 4 bit lines to all hi (i.e. 255). This should, in theory at least, give the required character of the full 8x5 segment set. The bottom (8th) row is only used for this character and for lower-case characters with 'descenders' as far as I can see.

I'm not able to test it yet as my Arduino is yet to arrive...

I may well be seeing things too simplified but I grew up in an age of thermionic valves and life was simple then...


Well - it may not be that easy.

If the HD44780 has the A00 character ROM, then 0xFF, or decimal 255 is the code for the "all pixels on" character. Otherwise, then, yes, a custom character will have to be created.

What's really important here is that to send the proper code to the display, one must use the BYTE format.


That was the conclusion I had come to. Writing custom characters to the LCD is going to be a whole different ball game if it becomes necessary - so I'm hoping that it has the A00 rather than the A02...



I'm in the US, and I've never seen an example of the A02 character set. However, since the A02 set is referred to as European, perhaps some exist elsewhere.

Good luck with your testing.

If it does turn out to be A02 I'll be posting again under "programmable characters for HD44780" or similar - I got very lost in the data sheet...


Well, I'll be darn. Sure, start the thread, I think the new library handles custom characters for you.