How many LCD's could I get to work with one board?

Hello everyone.

With the mega board, in theory, how many 4-line text LCD's could i connect at the same time.

If i would want over 100 displays, what kind of setup would i need to accomplish this, and would the arduino board even be able to handle so many?

Thanks
Michael

Serial, or parallel?
4-bit or 8-bit?
How far from the Mega?
Same information to all displays?
How often are they updated?


Rob

If you mean a raw LCD like this:

my guess is that they can share all pins except "Enable". If that is the case you could probably address about 50 displays without additional hardware. You could go further by modifying the LiquidCrystal library to use a set of external registers for the "Enable" signals. If you do that you wouldn't need the Mega since you would only need about 12 data pins (4 for Data 0-3, 1 for Register Select, and 7 to select one of 128 Enable lines).

I would prefer them in serial, but it does not really matter.

Let me explain the setup i am thinking of:

What i actually want is 5 to 7 columns of 20 displays each. The information to each display is different and needs to be loaded once, and then displayed for several minutes, after that different information is displayed on them again for several minutes. I am thinking of a touch screen input to determine when to show the next batch of data. This input screen would also be used for modifying data on a certain display, but that happens only seldom. Depending on the size of the data to be displayed it might be necessary to scroll the information, so quick updates would be required.

The maximum distance would be about 1.5m from the mega.

Just some initial thoughts then.

Parallel will work but need 100-140 enable lines.

A serial approach would need local processors.

With 16x2 displays and serial at 115200bps you could update 100 displays in about 32mS.


Rob

You would need to use serial LCD's that are addressable. The typical serial LCD would require one serial port for each LCD!

Perhaps this OneWire interface would work. Each controller as a unique serial number so each can be addressed individually.

http://www.louisswart.co.za/1-Wire_Overview.html

Yep, with serial or 1-wire you'll probably have to roll your own controller. With serial you can get "backpacks" for LCD displays. These are often based on AVR processors so you could reprogram the chips.

Either way only a single port is needed.


Rob

Addressable serial LCD, that is a nice concept to know. I have just prototyped a backpack version of my serial LCD keypad panel. Now it has a small size that just sits behind a display.

OP, if you are interested in the concept of serial addressable LCDs, i.e. using one wire to connect 100+ displays, drop me a PM. I don't think the firmware is hard to modify at all, with my experience. It's probably fun time for me to program in yet another function. BTW, my serial backpack supports direct plug in matrix keypads or single buttons.

Here is a link to the original serial LCD keypad panel. The new backpack is not posted yet. I'll update this weekend.

BTW, I can also make a broadcast address so that when received every display will accept the input and simultaneously display the same message, such as "starting up" or display the time every minute. I'm excited to make this happen.

That's the sort of thing I'm talking about liudr.

If they are all multi-dropped then all that is needed on the master Arduino is a driver that can drive 100 inputs.

You would also need a mechanism for setting addresses.

Also, depending on the bit rate used you might get a get a ripple effect on the screen updates. The broadcast can be use to sync all the updates so you don't get this.


Rob

Graynomad:
That's the sort of thing I'm talking about liudr.

If they are all multi-dropped then all that is needed on the master Arduino is a driver that can drive 100 inputs.

You would also need a mechanism for setting addresses.

Also, depending on the bit rate used you might get a get a ripple effect on the screen updates. The broadcast can be use to sync all the updates so you don't get this.


Rob

My backpack has a connector to plug in a keypad and has interactive menus for settings so editing address on the back pack is a piece of cake :wink:

I think you meant to drive 100 outputs.

To get rid of ripple effect or enhance it (for visual effect), I can make a hold function to buffer inputs and wait for a broadcasted sync command. Again a piece of cake :slight_smile:

No inputs. The master is transmitting to 100 receivers using a single transmitter.

I'm assuming a display-only system with no reading from the displays.

Any other system needs a master/slave protocol designed.


Rob

Got it. Input is right. If I can implement open drain or emitter on the TX, then implement slave talk only when asserted, yes, doable, only if there needs to be buttons besides each display..

Tada!

there are i2c lcd's too in terms af adressability ... just need 2 wires ...

robtillaart:
there are i2c lcd's too in terms of adressability ... just need 2 wires ...

That model supports 5 addresses. To get 100 displays you'd need 20 I2C busses.

Using an 8-bit shift register or I/O expander you can easily drive three LCD modules and you can probably modify existing libraries to do so. In reply #5 of this forum thread (http://arduino.cc/forum/index.php/topic,61977.0.html) Korman has written a clear and concise description of what has to be done.

In that same thread (replies #3 and #8) I pointed out that if you use the Microchip MCP23017 I/O expander, which has two 8-bit ports, you can easily drive 8 LCDs from the one chip and with some fancier programming you can drive 11 LCDs.

Don

The MCP23017 has 3 address pins so it supports 8 different addresses. One I2C port will therefore handle 8 of these chips with the capability of controlling 88 LCD modules.

The reason I attempted the serial addressable LCDs is for simplicity in programming and hardware connection with minimal parts (zero parts or two parts if you want to do 200 displays). Simply connect up several LCDs and use Serial.print() to print to them. I was reminded by Graynomad about fan-out limits. I'll research into it for an answer. I am thinking that if the internal pull-up is enabled for each LCD back pack (running 328p on them), then I am looking at 100 of these resistors in parallel, 20-50 Kohm in resistance but unknown reactance. So with just DC, the 100 of them will be 200-500 ohm so the current will be too big for a single output pin. There will be a maximal of possible several dozen without having to use a small MOSFET as a driver.