multiple graphical LCD displays on a single arduino

Hi,
I'm quite new to Arduino, electronics, and this forum. But willing to learn !

I have a project where I would like to have several (about 8 ) small graphical LCD (or OLED) displays, to display small pictures of people, not moving (set up at launch and fixed). The displays resolution should be something like 64x64, and, although not the ideal, grey levels could be okay instead of color displays.

I have read stuff about LCD displays, and I can see three main issues about this that I don't really know how to resolve.

1/ each display seems to use at least 3 pins on the arduino, so connecting 8 displays would need a lot more pins than available, so I guess I would have to use some multiplexing; would you have any clue about how to do this ?

2/ the Arduino has a very small amount of RAM (on the UNO, even a black & white 64x64 image doesn't fit) so I would probably have to load a part of the image, send it to the display, load another part, send it, ...). Is it possible ?

3/ As I don't keep images in memory, will the displays be able to keep it displayed ?

Thanks

--
pierre

There are displays available with different types of serial interfaces. If you can find SPI interface displays, they all share the Clock, Data In, and Data out lines, you just need 8 unique Slave Select lines - these can direct from pins, or be from an external register - also driven by SPI. In that case, you just have the 3 SPI lines and 1 slave select line.
Browse around here

You can install an external large memory, pull images from there to send to the displays - also accessed via SPI, or I2C.

SPI displays usually require an additional addressline (command vs data). But very often you do not need a data in.
Also i would prefer a simple demultiplexer for the chip select lines (e.g. HC138)
This will be 7 (clock, data, address, 3x demultiplexer, 1x chipselect) lines to connect 8 displays.

Bitmaps can be stored in flash memory (PROGMEM) and transfered directly to the display.
A 64x64 bw picture uses 512 Bytes, 8 picture would occupy 4 KB out of 32K flash.

The picture usually stays in the internal RAM of the display until it gets overwritten.

SPI displays are also available from EA (www.lcd-module.de). See for example DOGS102.

"But very often you do not need a data in."
If you are using the hardware SPI tho, the pin is committed, and cannot be used for other functions.

From the '328 Summary Data Sheet 8271D–AVR–05/11:
"When the SPI is enabled, the data direction of the MOSI, MISO, SCK, and SS pins is overridden
according to Table 19-1 on page 170."

"But very often you do not need a data in."
If you are using the hardware SPI tho, the pin is committed, and cannot be used for other functions.

Indeed, unfortunately this is true for hardware SPI. One could use software SPI instead.

Thanks guys, so to summarize, I could "chain" the SPI displays.

Then, when loading images, it would be

  • selecting 1st display by its "slave select" pin
  • sending data on the data pin
  • selecting 2d display by "slave select" pin
  • (...)

and the images would stay on the display until I set new ones or unplug all the stuff.

Great ! Do you think power supply will be an issue ? I can't find information about how much power is needed for a "typical" LCD display ?

--
pierre

Power consumption will depend on three elements

  • backlight (depends on number of LEDs and type of arragement, somewhere between 20mA and 100mA)
  • display controller (Standby current usually < 1 mA)
  • LCD itself (no idea..., but much less than backlight)

Oliver