Author Topic: NHD-0216K3Z-FL-GBW-V3 losing/dropping characters  (Read 163 times)

Eashwar

  • Newbie
  • *
  • Posts: 3
  • Karma: 0
    • View Profile
NHD-0216K3Z-FL-GBW-V3 losing/dropping characters
« on: December 07, 2019, 07:28:05 AM »
Dear Sir/Madam,

Using I2C, I am communicating to NHD-0216K3Z-FL-GBW-V3 with clock rate 40KHz.  But when I update the display with new characters, I find characters are misplaced and not showing on display. For microsecond delays in command, I have provided 1ms delay in my driver and for 1.5ms delays, I have provided 2ms delay.
I found similar post in the same forum, the problem was found to on the LCD firmware.

Kindly let me know is there any firmware updated LCD, where this issue is solved. Or suggest an alternate display.
We have completed our first prototype. It is required to address and solve the display issue ASAP. So that we can move to final product release stage.

Ted_M

  • Administrator
  • Full Member
  • *****
  • Posts: 139
  • Karma: 5
    • View Profile
Re: NHD-0216K3Z-FL-GBW-V3 losing/dropping characters
« Reply #1 on: December 11, 2019, 10:26:33 AM »
Hi Eashwar,

Please review the example I2C code below that is written for the Arduino Mega.  It uses much longer delays so it may be worth trying to increase your delay time a bit more to see if that resolves the issue.

Code: [Select]
/******************************************************
 * Using i2c on NHD 0216KZ3
 * ARDUINO MEGA
 */

#define SCLK 21
#define SDO 20



const char Slave    = 0x50;

const char t1[]=("Newhaven Display");
const char t2[]=("    LINE  2     ");

void I2C_out(unsigned char j){
  int n;
  unsigned char d;
  d=j;
  for(n = 0; n<8; n++){
    if((d&0x80) == 0x80)
      digitalWrite(SDO, HIGH);
    else
      digitalWrite(SDO, LOW);
    d = (d<<1);
    digitalWrite(SCLK, LOW);
    delay(10);
    digitalWrite(SCLK, HIGH);
    delay(5);
    digitalWrite(SCLK, LOW);
    delay(10);
  }
  digitalWrite(SCLK, HIGH);
  delay(1);
  while(SDO ==1){
   
    digitalWrite(SCLK, LOW);
    //delay(1);
    digitalWrite(SCLK, HIGH);
    //delay(1);
   
  }
  digitalWrite(SCLK, LOW);
}
void I2C_Start(){
  digitalWrite(SCLK, HIGH);
  digitalWrite(SDO, HIGH);
  digitalWrite(SDO, LOW);
  digitalWrite(SCLK, LOW);
}

void I2C_Stop(){
  digitalWrite(SDO, LOW);
  digitalWrite(SCLK, LOW);
  digitalWrite(SCLK, HIGH);
  digitalWrite(SDO, HIGH);
}
void disp(const char *text)
{
  int n;
  for(n=0;n<16;n++)
  {
    I2C_Start();
    delay(5);
    I2C_out(Slave);
    delay(5);
    I2C_out(*text);
    text++;
    I2C_Stop();
    delay(10);
  }
}

void setup() {
  // put your setup code here, to run once:
  pinMode(SDO, OUTPUT);
  pinMode(SCLK, OUTPUT);
  digitalWrite(SCLK, LOW);
  digitalWrite(SDO, LOW);
 
  I2C_Start();
  delay(1);
  I2C_out(0x50);
  delay(1);
 
  delay(10);
  I2C_out(0xFE);
  I2C_out(0x51);
  I2C_Stop();
  delay(100);
  I2C_Start();
  delay(5);
  I2C_out(Slave);
  delay(5);
  I2C_out(0xFE);
  I2C_out(0x46);
  delay(10);
  I2C_Stop();
  delay(100);
  I2C_Start();
  delay(5);
  I2C_out(Slave);
  delay(5);
  I2C_out(0xFE);
  I2C_out(0x47);
 

  delay(100);
  I2C_Stop();
  delay(10);
  I2C_Start();
    delay(5);
    I2C_out(Slave);
    delay(5);
    I2C_out(0xFE);
    I2C_out(0x52);
    delay(5);
    I2C_out(40);
    delay(5);
    I2C_Stop();
    delay(250);
 
 
}

void loop() {
  unsigned char x = 0x21;
  int i;
  I2C_Start();
  delay(5);
  I2C_out(Slave);
  delay(5);
  I2C_out(0xFE);
  I2C_out(0x51);
  I2C_Stop();
  double a;
  char buff[10];
  a = 2.523;

  sprintf(buff, "%g" , a);
  int n = 0;
  /*
    for (n = 0; n < 8 ; n ++){
      I2C_Start();
  delay(1);
  I2C_out(Slave);
  delay(1);
    I2C_out(buff[n]);
    delay(1);
    I2C_Stop();
    delay(1);
  }
 
  delay (2500);*/
  disp(t1);
  delay(100);

  delay(100);
  I2C_Start();
  delay(5);
  I2C_out(Slave);
  delay(5);
  I2C_out(0xFE);
  I2C_out(0x45);
  //delay(10);
  I2C_out(0x40);
  delay(10);
  I2C_Stop();
  delay(10);
  disp(t2);
  I2C_Stop();
  delay(1000);
  do{
   delay(10);
  for( i = 0 ; i < 50 ; i++){
    I2C_Start();
    delay(5);
    I2C_out(Slave);
    delay(5);
    I2C_out(0xFE);
    I2C_out(0x52);
    delay(5);
    I2C_out(i);
    delay(5);
    I2C_Stop();
    delay(5);
  }
  int b;
  for( i = 0 ; i < 51 ; i++){
    I2C_Start();
    delay(5);
    I2C_out(Slave);
    delay(5);
    I2C_out(0xFE);
    I2C_out(0x52);
    delay(5);
    b = 50 - i;
    I2C_out(b);
    delay(5);
    I2C_Stop();
    delay(25);
  }
  }while(1);
  /*for(i = 0; i < 57; i++){
    I2C_Start();
    delay(5);
    I2C_out(Slave);
    delay(5);
    I2C_out(x);
    x++;
    I2C_Stop();
    delay(10);
  }
// delay(5000);
 
  I2C_Start();
  delay(5);
  I2C_out(Slave);
  delay(5);
  I2C_out(0xFE);
 
  I2C_out(0x51);
  delay(10);

    I2C_out(0xFE);
  I2C_out(0x4B);
  delay(10);
  I2C_out(0xFE);
  I2C_out(0x46);
  delay(10);
  I2C_Stop();
  disp(t1);
  delay(1000);
  for( i = 0 ; i < 50 ; i++){
    I2C_Start();
    delay(5);
    I2C_out(Slave);
    delay(5);
    I2C_out(0xFE);
    I2C_out(0x52);
    delay(5);
    I2C_out(i);
    delay(5);
    I2C_Stop();
    delay(250);
  }
   I2C_Start();
    delay(5);
    I2C_out(Slave);
    delay(5);
    I2C_out(0xFE);
    I2C_out(0x52);
    delay(5);
    I2C_out(40);
    delay(5);
    I2C_Stop();
    delay(250);
 
  while(1);*/
 
}

 

Character LCD NHD‐0220D3Z‐NSW‐BBW‐V3 not receiving correct characters

Started by davekBoard Character LCDs

Replies: 1
Views: 6617
Last post March 25, 2016, 05:23:05 PM
by Saurabh_B
NHD‐240128WG‐BTFH‐VZ - custom characters

Started by saubaerBoard Graphic LCDs

Replies: 1
Views: 5740
Last post November 11, 2016, 12:09:42 PM
by Saurabh_B
NHD-2.7-12864UCY3 yellow columns occur under ascii characters

Started by bsoyerBoard OLEDs

Replies: 7
Views: 9968
Last post August 26, 2015, 11:02:25 AM
by tracyb
NHD-C0220BiZ-FSW-FBW-3V3M NAKs all odd numberd ASCII characters

Started by majorninthBoard Character LCDs

Replies: 7
Views: 9232
Last post May 28, 2015, 04:51:31 PM
by Michael_L
Generating characters of size more than 8x8 pixels on NHD-320240WG-BoTFH-VZ#

Started by harshal6905Board Graphic LCDs

Replies: 1
Views: 2138
Last post October 07, 2018, 05:52:10 PM
by 0x0ff0