NHD-12864AZ-FL-YBW goes blank after a few seconds

Comments

1 comment

  • Alee_S

    Hello there!

    I have reviewed the controller datasheets for both displays, and they are extremely similar in their commands, timing characteristics, DC electrical characteristics, pin connections, etc. which leads me to believe it is not a controller compatibility issue.

    I have provided a sample code for you below, and have confirmed that it works for the model you are using. I would advise to please try and run this code in the meantime with the schematic and pinout diagram you have. This program is meant to run using an Arduino Uno.

     

    /*
     *  Program written for NHD-12864AZ Graphic Display
     *  Code written for Arduino Uno.
    */


    /*************************************
        Image
    **************************************/

    const unsigned char A[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
    0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xC0,
    0xC0, 0x80, 0x08, 0x18, 0x18, 0x3C, 0x7C, 0x7C, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xFC,
    0xFC, 0xFC, 0xFC, 0xFC, 0xE0, 0x80, 0x00, 0x00, 0x30, 0xF0, 0xE0, 0xC0, 0xC0, 0x80, 0x80, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xF8, 0x7C, 0x7E, 0x3E,
    0x1F, 0x1F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
    0x03, 0x03, 0x07, 0x07, 0x07, 0x0F, 0x0F, 0x1F, 0x1F, 0x3E, 0x3E, 0x7C, 0xF8, 0xF8, 0xF0, 0xE0,
    0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
    0x7F, 0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7C, 0x3C, 0x38, 0x30, 0x31, 0x03, 0x03, 0x07, 0x07, 0x0F,
    0x0F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F, 0xFC, 0xF0, 0xC0, 0x01, 0x07, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFE, 0xFC, 0xFC, 0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0xC0, 0xF0, 0xFC, 0xFE, 0x7F, 0x1F, 0x0F, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F,
    0x1F, 0x7F, 0xFF, 0xFC, 0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
    0xE0, 0xE0, 0xE3, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF1, 0xF8, 0xF8, 0x78, 0x18, 0x08, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x02, 0x00, 0x00, 0x01, 0x0F, 0x3F, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
    0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
    0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x01, 0x0F, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
    0x03, 0x0F, 0x1F, 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0xFC, 0xFC, 0xF8, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF0, 0xE0,
    0x80, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
    0xFF, 0x7F, 0x3F, 0x0F, 0x03, 0xC1, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x80, 0xE0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x03, 0x1F, 0x3F, 0xFF, 0xFE, 0xF8, 0xE0, 0x80, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
    0x01, 0x60, 0xF8, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF0, 0xC0, 0xC0, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC6, 0xC7,
    0xC7, 0xC7, 0xE7, 0xE3, 0xE3, 0xE3, 0xE3, 0x23, 0x23, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F,
    0x0F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
    0xF0, 0xE0, 0x80, 0x06, 0x1E, 0x7C, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
    0xF8, 0xF0, 0xF0, 0xE0, 0xE2, 0xC3, 0xC7, 0xCF, 0x8F, 0x8F, 0x1F, 0x1F, 0x3F, 0x3F, 0x7F, 0x7F,
    0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
    0x03, 0x07, 0x07, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
    0x1F, 0x0F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x07, 0x07, 0x0F, 0x0F,
    0x1F, 0x1F, 0x3F, 0x3E, 0x38, 0x20, 0x01, 0x07, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
    0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F, 0x0F, 0x07, 0x06, 0x02, 0x02, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    };

    /**************************************************************
     * DEFINITIONS
     ***************************************************************/

    #define     CS1   12        //Chip Selection IC1 (1 0) Left side
    #define     CS2   13         //Chip Selection IC2 (0 1) Right side
    #define     RST   11          //Active Low Reset
    #define     RW    9            //Low Write Signal
    #define     RS    8             //Reg Select 1- Data 0-instruction
    #define     E     10             //Operation Enable Falling Edge

    /*******************************************
    *       Basic Functions          *
    *******************************************/

    void  comleft(char c){
      PORTD = c;                           
      digitalWrite(CS1, HIGH);
      digitalWrite(RW , LOW );
      digitalWrite(RS , LOW );
      digitalWrite(E  , HIGH);
      delay(1);
      digitalWrite(E , LOW );
      digitalWrite(CS1, LOW);
    }

    void  comright(char c){
      PORTD = c;
      digitalWrite(CS2, HIGH);
      digitalWrite(RW , LOW );
      digitalWrite(RS , LOW );
      digitalWrite(E  , HIGH);
      delay(1);
      digitalWrite(E , LOW );
      digitalWrite(CS2, LOW); 
    }

    void  writeleft(char d){ 
      PORTD = d;
      digitalWrite(CS1, HIGH);
      digitalWrite(RW , LOW );
      digitalWrite(RS , HIGH);
      digitalWrite(E  , HIGH);
      delay(1);
      digitalWrite(E , LOW );
      digitalWrite(CS1, LOW);
    }

    void  writeright(char d){
      PORTD = d;
      digitalWrite(CS2, HIGH);
      digitalWrite(RW , LOW );
      digitalWrite(RS , HIGH);
      digitalWrite(E  , HIGH);
      delay(1);
      digitalWrite(E , LOW );
      digitalWrite(CS2, LOW);
    }

    /******************************************
    *            Initialize                   *
    ******************************************/
    void init1(){
      digitalWrite(RST, LOW);
      delay(1);
      digitalWrite(RST, HIGH);
      digitalWrite(E, LOW);
      digitalWrite(RS, LOW);
      digitalWrite(RW, LOW);
      digitalWrite(CS1, LOW);
      digitalWrite(CS2, LOW);
      comleft(0x3F);        //Display On
      comright(0x3F);       //Display On
    }
    /*****************************************
    *               Display                  *
    *****************************************/
    //
    void disp(const unsigned char *pic)
    {
        int page;
        page = 0xB8;
     
      for(int page = 0xB8; page < ((0xB8) + 8) ; page++){
        comleft(page);
        comright(page);
        comleft(0x40);
        comright(0x40);
       
        for(int i = 0; i < 64; i++){
          writeleft(*pic);
          pic++;
        }
        for(int i = 0; i < 64; i++){
          writeright(*pic);
          pic++;
        }
      }
    }

    void setup() {

      DDRD = 0xFF;
      pinMode(CS1, OUTPUT);
      pinMode(CS2, OUTPUT);
      pinMode(RST, OUTPUT);
      pinMode(RW , OUTPUT);
      pinMode(RS , OUTPUT);
      pinMode(E  , OUTPUT);
      init1();

    }

    void loop() {
      disp(A);
      delay(3000);
    }

    If this code still doesn’t work, can you upload image(s) related to your pinout diagram and/or schematic for connecting to the NHD-12864AZ display?

    Also, if you have multiple samples of our displays, are you experiencing the same issues when trying to connect with all of them?

    0

Please sign in to leave a comment.