How Arduino communicates to LCD

Hi all,

I'm a newbie looking to better my understanding for how Arduino is sending signals to an LCD. For a serial LCD, what is the purpose of having a 2 wire connection? Is this just to increase the bit transfer rate?

Also, I have looked online but not found information on how Arduino is communicating with the LiquidCrystal display. Is each LCD pixel controlled by one bit? How fast is Arduino sending bytes to the LCD display?

Thank you.

2 wires? Sounds like I2C to me. Do a search for LiquidCrystal_I2C and see what you get.

Hi JFS-Chatt,

the point of having two wires to arduino is that you have more I/O pins for use for other purposes,
the two wire's actually go to an I/O Expander chip some have them already soldered on the PCB board of the lcd, and well others don't.
But its not hard to do it by yourself since I/O Expander chips are easily to find.

so the arduino communicates to the I/O Expander chip by two wires, while the I/O expander communicates with the LCD cause the LCD always needs way more than 2 wired connections.

Arduino communicates with the lcd trough a Driver IC that driver sends the data too the LCD.
i have no info how fast it is but i have found a datasheet for you of the used LCD driver ic:

so actually the connection in this case goes:
Arduino -> I/O Expander -> LCD Driver -> LCD Screen

Hitachi HD44780 LCD Driver Datasheet

i hope i gave you enough information.

Best regards,
Phazox

The LCD controller itself uses a parallel interface, either 4-bit or 8-bit. Since there are control signals involved as well you normally need to use at least 6 I/O lines to deal with it.

The Arduino (or any other microcontroller) sends control signals to set up the LCD followed by ASCII codes representing the characters that are to be displayed. The LCD controller uses the ASCII codes to activate the appropriate pixels to display readable characters.

If you want to use fewer I/O lines then you have to add another device into the picture. This device is typically on an adapter board that attaches to the back of the LCD module. The Arduino sends serial information to the adapter and the adapter converts this information into parallel and sends it on to the LCD controller.

It really doesn't matter how fast the Arduino sends information to the LCD (or the adapter) since the LCD controller itself is the 'weak link' in terms of speed. A typical LCD driver is chock full of delays that are required to give the LCD controller time to do it's work. Remember, the LCD controller has been around for decades, and may may very have been designed when your grandfather was running around in diapers.

Don

floresta:
The LCD controller itself uses a parallel interface, either 4-bit or 8-bit. Since there are control signals involved as well you normally need to use at least 6 I/O lines to deal with it.

The Arduino (or any other microcontroller) sends control signals to set up the LCD followed by ASCII codes representing the characters that are to be displayed. The LCD controller uses the ASCII codes to activate the appropriate pixels to display readable characters.

If you want to use fewer I/O lines then you have to add another device into the picture. This device is typically on an adapter board that attaches to the back of the LCD module. The Arduino sends serial information to the adapter and the adapter converts this information into parallel and sends it on to the LCD controller.

It really doesn't matter how fast the Arduino sends information to the LCD (or the adapter) since the LCD controller itself is the 'weak link' in terms of speed. A typical LCD driver is chock full of delays that are required to give the LCD controller time to do it's work. Remember, the LCD controller has been around for decades, and may may very have been designed when your grandfather was running around in diapers.

Don

Ah i forgot to mention that serial was also an option besides the I/O expander version.

Great info about the ASCII part never did looked for that information.

Ah i forgot to mention that serial was also an option besides the I/O expander version.

The I/O expander is a serial device.

Don

Ehh oke a while ago i have read somwhere that it wasnt serial :disappointed_relieved:

What you say does make sense thanks voor mentioning this