Low contrast on NHD-C12864WC-FSW-FBW-3V3-M

Comments

7 comments

  • Engineering Support
    Community moderator

    Hi Daniel,

    Unfortunately the 10uf caps will not produce the same output voltage required for the LCD contrast to be in the proper range.  We typically use 1uf ceramic surface mount capacitors to step the voltage high enough to drive the correct Vlcd of 10.3V to set the baseline contrast.

    We also have some example code to use as a reference including the proper initialization routine to setup the display's parameters.  https://support.newhavendisplay.com/hc/en-us/articles/4415233845655-NHD-C12864WC-with-Arduino 

    Regards,

    Ted Mellenthin

     

    0
  • Daniel

    Hi Ted,

    Thanks for the quick response.

    Could you please provide a link from Farnell or Mousser to get those capacitors? Just to be sure we get the right ones.

    Is the layout critical? I mean if the distance of the cables is important for the proper functioning. This is how it looks the complete set of components we're using at the moment, notice that the capacitors are placed in a prototype board and then linked to the adapter board:

    Regarding the Vlcd of 10.3V to set the baseline contrast, where can we measure that voltage to ensure we have proper values?

     

    0
  • Engineering Support
    Community moderator

    Hi Daniel,

    We have used these 1uf capacitors from Digikey: https://www.digikey.com/en/products/detail/kemet/C0805C105Z4VAC7800/2211782?s=N4IgTCBcDaIMwE4EFoAcAGAjJ5ZkDsATEAXQF8g 

    To reduce the cable and wiring length, we offer the NHD-FFC30 breakout PCB where the surface mount capacitors for the voltage boost circuit can be soldered onto directly.

    https://newhavendisplay.com/30-pin-0-5mm-pitch-ffc-connector-breakout-board/ 

     

    The contrast voltage can be measured across the capacitor connected at Vout from the display.

    Voltage step levels from pins 23 to 27 are determined based on Vss, and must maintain the relative magnitudes shown below.

    V0 ≧V1 ≧V2 ≧V3 ≧V4 ≧Vss

     

    Best Regards,

    Ted

    0
  • Daniel

    Hi Ted,

    We will try go get these products. Unfortunately that "NHD-FFC30" is out of stock in all European distributors, let's see if we can modify our own adapter board to include those capacitors.

    Thanks for your help.

    0
  • Daniel

    We just checked the voltages:

    v0 (23): 0,88V
    v1 (24): 1,97V
    v2 (25): 6,93V
    v3 (26): 7,94V
    v4 (27): 8,93V

    Are these values correct?

     

    0
  • Engineering Support
    Community moderator

    The voltage levels look to be close, however I will need to make some measurements here to confirm if they are high enough.

    Please check the starting value for the Electronic Volume register as it is should be close to a more visible contrast range. The best viewable contrast level will only be in a short range of values so it is necessary to increment the Electronic Volume Register in small steps to capture the best range. 

    See our example initialization string from the datasheet for our starting values:

    A = &HA2 '1/9 BIAS
    Call Writecom
    A = &HA0 'ADC SELECT , NORMAL
    Call Writecom
    A = &HC8 'COM OUTPUT REVERSE
    Call Writecom
    A = &HA4 'DISPLAY ALL POINTS NORMAL
    Call Writecom
    A = &H40 'DISPLAY START LINE SET
    Call Writecom
    A = &H25 'INTERNAL RESISTOR RATIO
    Call Writecom
    A = &H81 'ELECTRONIC VOLUME MODE SET
    Call Writecom
    A = &H10 'ELECTRONIC VOLUME
    Call Writecom
    A = &H2F 'POWER CONTROLLER SET
    Call Writecom
    A = &HAF 'DISPLAY ON

    Best Regards,

    Ted

    0
  • Daniel

    Hello,

    That is the same initialization code I am using (parallel communication at the moment):

        glcd_command(ST7565R_RESET); /* Internal reset. ST7565R_RESET=0xE2 */
        glcd_command(0xa2); /* 1/9 bias */
        glcd_command(0xa0); /* ADC select, normal */
        glcd_command(0xc8); /* Com output reverse */
        glcd_command(0xa4); /* Display all points normal */
        glcd_command(0x40); /* Display start line set */
        glcd_command(0x25); /* Internal resistor ratio */
      glcd_set_contrast(50); /* Set contrast value, experimentally determined, value 0 to 63 */
        glcd_command(0x2f); /* Power controller set */
      glcd_command(0xaf); /* Display on */

     

    void glcd_set_contrast(uint8_t val) {
        /* Can set a 6-bit value (0 to 63)  */

        /* Must send this command byte before setting the contrast */
        glcd_command(0x81);
        
        /* Set the contrat value ("electronic volumne register") */
        if (val > 63) {
            glcd_command(63);
        } else {
            glcd_command(val);
        }
        return;
    }

    void glcd_command(uint8_t c)
    {
        GLCD_A0_LOW();
    #if defined(GLCD_USE_PARALLEL)
        glcd_parallel_write(c);
    #else
            glcd_spi_write(c);    
    #endif
    }

    I have tested different contrast values, please check images below from value 20 to 60 in steps of 10 (below 20 the text is not visible at all):

    0

Please sign in to leave a comment.