Low contrast on NHD-C12864WC-FSW-FBW-3V3-M
Hello,
I am testing the display NHD-C12864WC-FSW-FBW-3V3-M and I am facing some issues with the contrasting.
The display works and I can show the text "Hello World!" but the contast is very low and it's difficult to read.
I am using this driver: https://github.com/andygock/glcd to interface a PIC microcontroller.
We have developed our own adapter board similar to this one: https://www.digikey.es/en/products/detail/newhaven-display-intl/NHD-FFC30/2165895?lang=en&s=N4IgTCBcDaIHYAsAmBaAZmgxgZgAwgF0BfIA&site=us&x=0&y=0
I can see that the contrast command (0x81) works because if I set the contrast to 1 I cannot see anything but if I set the contrast to the maximum possible value (63) then I can see the text but even with this value it's very difficult to read:
We have followed the schemes of the data sheet:
Pin description:
Wiring:
The only difference with these schemes is that we have used 10uF capacitors instead of the 1.0-2.2uF indicated in the document because we don't have them.
Could these capacitors be the reason of the problem? Could you suggest anything else to check?
Thank you.
-
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 -
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 -
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 -
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 -
We just checked the voltages:
v0 (23): 0,88V
v1 (24): 1,97V
v2 (25): 6,93V
v3 (26): 7,94V
v4 (27): 8,93VAre these values correct?
0 -
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 ONBest Regards,
Ted
0 -
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.
Comments
7 comments