4 LCD displays on 1 Arduino
I’m planning an Arduino based project where I would like to use two of the 16x2 character based LCD displays, but at the same time, don’t want to use all the I/O pins, I need some for data input also.
Therefor, I decided to do a test, and see if it’s possible for multiple displays to share some of the pins. The displays have an enable pin, so in theory it should be possible, and after a few tests, I can confirm that it works very well. I’m using the LiquidCrystal library that comes with Arduino 0018. That library is object oriented, and you set each pin for the display in the constructor, making it very easy to set separate pins for the enable pin for each display, and use a bus for the 4 data lines and RS. I’m not reading from the displays, to I simply tied R/W to GND, indicating write only.
This setup uses a total of 5 shared pins on the Arduino (Data and RS), and then one pin (Enable) for each display.
Below is my modified version of the HelloWorld example from the LiquidCrystal library, that initializes 4 displays and outputs individual content to each display.
My test setup is all powered via USB, and the contrast is controlled using a single trim pot, feeding all the displays with the same voltage for the contrast pin (V0).
I’m using pin 7, 8, 9 and 10 on the Arduino for the data lines, pin 12 for RS and pin 2, 3, 4 and 5 for the enable signal for display 1, 2, 3 and 4 respectively, but that’s easy to change if you use some of them for other tasks.
Downloads
I have made a PDF file with the connection diagram for the breadboard setup. I have tried to draw the wires so that they can be traced, but if something is unclear, feel free to ask and I’ll do my best to clarify.