[SOLVED] Help for multi display PCF8814 nokia 1100 lcd 3 wire spi

Hello...
Im have a problem.
I build project that want use two nokia 1100 lcd (PCF8814) as output my info.
I try many library from github dev.

I try one by one that library on 5 types nokia 1100/1110/1116/2115 (use pcf8814 controller) that i got, and it works for displaying info.
Only need little modification on initialization sendByte lcd data if some lib wont display on some lcd

My problem is when i try to set diferent output to dual display... its not work

Only lib was made by Igorox that i see include SPI code , but i cannot use this as well.
The lib is use SoftwareSPI and HardwareSPI in the code, when i use Soft SPI setting, and assignment the display pin that i chose, it works great and no problem

But when i set to HWSPI...
using pin 13 as SCLK, pin 11 as MISO, and pin 10 as SS in default code, pin 9 as RST,
And try to add second display with use pin 8 as SS and other pins are shared to first display, i only got output in first display.
The second display is always blank

Anybody can help me to explain for use that lib to multi display please.

Sory for my bad english. I come from indonesia and my english is not so good.

Tanks before

MY PROBLEM FINALY SOLVED :slight_smile:

The main problem when using LCD NOKIA series with PCF8814 driver for dual-display or more,
is on the initialization instruction command sequence.

After trying several times combination, I finally found the perfect combination for use in the multi display.
Especially if the screen is used, use of different manufacturers' serial number

In my case, I use the LCD with the following serial numbers:

  • nokia 4850899
  • nokia 4851030
  • nokia 4850104

COMPATIBILITY TYPE

1100, 1101, 2300 has 9-pad connector:

NOKIA-1202, 1203, 1280 has 12-pad connector:

1110, 1110i, 1112, 1116, 1200, 2660ext, 2760ext, 6085ext has 10-pin connector:

I use a library was created by catzallin and combined with those made by igorox, with slight modifications, especially at the beginning of the initialization process of the LCD, and a command for writing the image, which uses "PROGMEM" to reduce the size of the firmware.

But still there is a little problem at the speed of image rendering.
was still very slow for the image data writing
I do not understand to this, what parts of the code that must be changed, so the rendering speed can be increased in the multi display.

For code that I change, can be checked at my github or in the attachment bellow:

Please input and suggestions for improvement nokia 1100 (PCF8814) driver

THANKS.

PCF8814-master.zip (15.1 KB)

1 Like

Here the common part initialization code sequence that most compatible for many PCF8814 NOKIA DISPLAY (96X65) .
was tested in my 5 diferent nokia 1110 lcd that i got, and works perfect in single or multi display with this driver.

        digitalWrite(this->pin_reset, HIGH);       // must be set HIGH for initialization.
	digitalWrite(this->pin_sce,   HIGH);
	digitalWrite(this->pin_sclk,   LOW);

      send_command (command_data,  0xE2);   //  internal software reset
      send_command (command_data,  0x3A);   //  internal OSC enable
      send_command (command_data,  0xEC);   //  80Hz frame frequency
      send_command (command_data,  0xD0);   //  set partial display to 1:65
      send_command (command_data,  0x2F);   //  charge pump ON enable

               // This for set contrast default, change "contrast" with 0x01 to 0x1F max
      send_command (command_data,  0x24);                      //  lcd VOB MSB
      send_command (command_data,  0x80 | (contrast & 0x1F);   //  lcd VOB LSB

              // This for set display orientation/rotate default option
              // Some model number is not support change X mirroring by default.
      send_command (command_data,  0xC0);   //  Y mirror / vertical mirroring
      send_command (command_data,  0xA1);   //  X mirror / horizontal mirroring

                    // or use this combination
              send_command (command_data,  0xC8);   //  Y mirror / vertical mirroring
              send_command (command_data,  0xA0);   //  X mirror / horizontal mirroring

              // This for enable display and pixel option
      send_command (command_data,  0xAF);   //  display ON / enable display
      send_command (command_data,  0xA4);   //  all pixel in OFF position
      send_command (command_data,  0xA6);   //  pixel inverting OFF/disable

      delay(200);
      clear();