NHD-C12864B2Z-RN-FBW w/PIC16LF1939



  • Michael_L

    I'm assuming your RESET signal is tied to VDD.  Can you try using it to issue a hard reset to the LCD before initialization?  Similar to this:

    void initScreen()
      digitalWrite( RD_PIN, HIGH );      // aka E - set E to HIGH
      digitalWrite( WR_PIN, HIGH );      // aka RW - set RW to HIGH
      digitalWrite( RES_PIN, LOW );      // reset pin set LOW
      digitalWrite( RES_PIN, HIGH );     // reset pin set HIGH
      writeCom( 0xA2 );    // 1/9 bias
      writeCom( 0xA0 );    // ADC SELECT NORMAL
      writeCom( 0xC0 );    // COM OUTPUT NORMAL
      writeCom( 0x25 );    // INTERNAL RESISTOR RATIO
      writeCom( 0x81 );    // ELECTRONIC VOLUME MODE SET
      writeCom( 0x15 );    // ELECTRONIC VOLUME
      writeCom( 0x2F );    // POWER CONTROLLER SET
      writeCom( 0x40 );    // DISPLAY START LINE SET
      writeCom( 0xAF );    // DISPLAY ON
    Also, can you try using these initialization values and sequence?  Please also double check your FFC connection, and if possible, try using 1µF non-polarized caps for all capacitors needed.
  • Trubi

    Tried all the proposed solutions, sadly without success... the display doesn't shows anything.

    I took these pictures in hope that they will be useful to find a solution:

    Here we have the complete assembly. It might look messy but I've checked all the connections and everything is OK.

    In this picture you can see the 27-pin FFC strip attached to the 30-pin FFC board (with the retaining lever lifted up for the picture). Notice the three free pins (board pins 28~30) at the right side of the connector.

    For the last picture, I took a screenshot with the oscilloscope. This waveform was recorded when sending the "0xA5" instruction (from the "main"). The yellow channel is the /WR signal, and the blue, pink and green channels are the three most significant bits of the instruction (bit 7 ~ bit 5). As far as I can tell, the waveform - and its timing - seems to be OK.

    Finally, I've also noticed that when trying to read the "status" from the LCD, it returns ramdom values... seems that something inside the LCD chip is not working as expected.

    Hope all these information helps, thanks in advance!!


  • Michael_L

    Thanks for the picture.  I believe you have the FFC cable inserted the incorrect way into the FFC30 board.  The connector on the board is bottom contact, so you would need to flip the cable.

  • Trubi

    Indeed. I've changed the FFC board connection to match the reverse-connected display, and now it works.

    Many thanks for your help, I owe you one!




Please sign in to leave a comment.