Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Michael_L

Pages: 1 ... 17 18 [19] 20 21 ... 24
271
TFTs / Re: NHD-7.0-800480EF-ATXL#-CTP dead?
« on: June 04, 2014, 03:18:29 PM »
Yes, the pinout and timing is the same between the two displays.  I don't know if that setting you changed on the controller is effectively changing the pixel clock to falling edge triggered or not, but that is the only "difference" there is.    They use the same driver ICs.  Even so, the "polarity" of the pixel clock edge triggering should still allow for the display to operate, just may have colors/images that are undesirable if not set correctly.

It seems like the display is not getting initialized.  Either your MCU/controller is not communicating with it correctly, or maybe your initial hardware reset is not properly taking place.
It's also possible there is something wrong with the connection.   Lastly, if you have accidentally shorted certain pins on the display it is possible it may be dead.

If you are certain your controller is configured correctly, and all connections are correct and secure, you may email us at nhtech@newhavendisplay.com to set-up an RMA so you can return the display to us for analysis.

272
TFTs / Re: New 7" TFT LCD with capacitive touch
« on: June 03, 2014, 04:42:24 PM »
The resolution is 800 x 480 pixels. The RGB in the middle simply refers to the fact that each pixel is made up of 3 sub-pixels.  One each for red, green, and blue.

273
TFTs / Re: NHD-7.0-800480EF-ATXL#-CTP dead?
« on: June 03, 2014, 04:39:12 PM »
Are you using our controller board with the SSD1963 controller?  If so, try changing the first parameter after the hex B0 command from hex 0C to hex 08.
If not using our controller, try finding the command in whatever controller you are using that controls whether the pixel data is latched at the rising or falling edge of the pixel clock and changing it.  Let me know if this works for you!

274
TFTs / Re: TFT Mounting Options
« on: June 03, 2014, 01:00:48 PM »
We actually don't offer any standard bezels/enclosures for mounting these displays, however, you may take a look at www.elwoodcontrols.com to see if they have something that can work for your application.  They offer standard and customized bezels for some of our products.

275
Hi Shane,

Did you receive my response to your email yesterday regarding this?  I will copy it and post it below just in case you did not:

That Arduino library is written for Hitachi HD44780 controller, whereas our display uses the Sitronix ST7066U.  There are some minor timing differences between the two controllers, which can be seen in their respective datasheets. However, I have used this library with our displays before, but I believe it was using an 8-bit interface.  The problem here is not our display but in fact the library you are using.  If it’s possible, try using an 8-bit interface with that library, otherwise you may refer to the attached 4-bit interface Arduino code I have for our 4x20 character displays.

Note:  in the code you will see it mentions “character OLED” display, but the code works for our LCDs as well (I just tested it again to be sure).

Code: [Select]
//---------------------------------------------------------
/*
NHD_0420DZW_mega.ino
Program for writing to Newhaven Display 4 x 20 Character OLED (4-bit, 6800 mode)

(c)2014 Michael D. LaVine - Newhaven Display International, LLC.

        This program is free software; you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        the Free Software Foundation; either version 2 of the License, or
        (at your option) any later version.

        This program is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        GNU General Public License for more details.
*/
//---------------------------------------------------------

// The 4 bit data bus is connected to PORTD[3..0] of the Arduino Uno

int RS =  9;     // RS signal connected to digital pin 9
int RW =  10;    // R/W signal connected to digital pin 10
int  E =  11;    // E signal connected to digital pin 11

const char text1[] = {"  Newhaven Display  "};
const char text2[] = {"   Character OLED   "};
const char text3[] = {"  4 Line x 20 Char  "};
const char text4[] = {"0123456789!@#$%^&*()"};

void toggle()
{
   digitalWrite(E, HIGH);
   delay(1);
   digitalWrite(E, LOW);
}

void command(char c)

   PORTD = (c>>4);
   digitalWrite(RS, LOW);
   toggle();
   PORTD = c;
   toggle();
}

void data(char d)
{
   PORTD = (d>>4);
   digitalWrite(RS, HIGH);
   toggle();
   PORTD = d;
   toggle();
}

void disp()
{
   int i;
   delay(50);
   command(0x02);  //Home Command  [Set DDRAM address to Line 1 position 1]
   delay(5);
   for (i=0;i<20;i++)
   {
      data(text1[i]);
   }
   command(0xC0);  //Second Line  [Set DDRAM address to Line 2 position 1]
   for (i=0;i<20;i++)
   {
      data(text2[i]);
   }
   command(0x94);  //Third Line  [Set DDRAM address to Line 3 position 1]
   for (i=0;i<20;i++)
   {
      data(text3[i]);
   }
   command(0xD4);  //Fourth Line  [Set DDRAM address to Line 4 position 1]
   for (i=0;i<20;i++)
   {
      data(text4[i]);
   }
}

void setup()
{
   DDRD = 0xFF;    //set PORTD (data bus) as output
   PORTD = 0x00;   //initialize PORTD to 0x00
   DDRB = 0xFF;    //set PORTB (control lines) as output
   PORTB = 0x00;   //initialize PORTB to 0x00
   delay(5);
   toggle();
   delay(5);
   PORTD = 0x2;
   toggle();
   command(0x28);
   PORTD = 0x0;
   toggle();
   PORTD = 0x8;
   toggle();
   PORTD = 0x0;
   toggle();
   PORTD = 0x1;
   toggle();
   delay(5);
   PORTD = 0x0;
   toggle();
   PORTD = 0x6;
   toggle();
   PORTD = 0x0;
   toggle();
   PORTD = 0x2;
   toggle();
   PORTD = 0x0;
   toggle();
   PORTD = 0xC;
   toggle();
   delay(10);
}

void loop()

  disp();
  delay(3000);
}

276
OLEDs / Re: NHD-2.8-25664UMB3 SPI INTERFACE HELP
« on: May 29, 2014, 11:47:59 AM »
We have plenty of example code available to get you started with your software development.  One document you can refer to is on our example program code webpage for that display, here: http://www.newhavendisplay.com/app_notes/OLED_25664.txt.  Some more example code I have for the Arduino Mega is included below:

Code: [Select]
//---------------------------------------------------------
/*
NHD_2_8_25664_mega.ino
Program for writing to Newhaven Display 256x64 graphic OLED with SSD1322 controller (serial mode)

(c)2014 Mike LaVine - Newhaven Display International, LLC.

        This program is free software; you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        the Free Software Foundation; either version 2 of the License, or
        (at your option) any later version.

        This program is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        GNU General Public License for more details.
*/
//---------------------------------------------------------


int RS = 30;      // RS (D/C) signal connected to Arduino digital pin 30 (can be tied low for 3-wire SPI)
int RW = 31;      // /WR (R/W) signal connected to Arduino digital pin 31 (can be tied low)
int E = 32;      // /RD (E) signal connected to Arduino digital pin 32  (can be tied low)
int RES = 33;     // /RES signal connected to Arduino digital pin 33 
int CS = 34;     // /CS signal conencted to Arduino digital pin 34
int SCLK = 22;   // SCLK signal connected to Arduino digital pin 22
int SDIN = 23;   // SDIN signal connected to Arduino digital pin 23

void comm_out(unsigned char c)
{
  unsigned char i;
  digitalWrite(CS, LOW);
  digitalWrite(SDIN, LOW);
  digitalWrite(SCLK, LOW);
  digitalWrite(SCLK, HIGH);
  for(i=0;i<8;i++)
  {
    digitalWrite(SCLK, LOW);
    if((c&0x80)>>7==1)
    {
      digitalWrite(SDIN, HIGH);
    }
    else
    {
      digitalWrite(SDIN, LOW);
    }
    c = c << 1;
    digitalWrite(SCLK, HIGH);
  }
  digitalWrite(CS, HIGH);
}

void data_out(unsigned char d)
{
  unsigned char i;
  digitalWrite(CS, LOW);
  digitalWrite(SDIN, HIGH);
  digitalWrite(SCLK, LOW);
  digitalWrite(SCLK, HIGH);
  for(i=0;i<8;i++)
  {
    digitalWrite(SCLK, LOW);
    if((d&0x80)>>7==1)
    {
      digitalWrite(SDIN, HIGH);
    }
    else
    {
      digitalWrite(SDIN, LOW);
    }
    d = d << 1;
    digitalWrite(SCLK, HIGH);
  }
  digitalWrite(CS, HIGH);
}

void Checkerboard_25664()
{
        unsigned int i, j;

Set_Column_Address_25664(0x00,0x77);
Set_Row_Address_25664(0x00,0x7F);
Set_Write_RAM_25664();

for(i=0;i<64;i++)
{
for(j=0;j<120;j++)
{
data_out(0xF0);
data_out(0xF0);
}
for(j=0;j<120;j++)
{
data_out(0x0F);
data_out(0x0F);
}
}
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------

void Set_Column_Address_25664(unsigned char a, unsigned char b)
{
comm_out(0x15); // Set Column Address
data_out(a); //   Default => 0x00
data_out(b); //   Default => 0x77
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------

void Set_Row_Address_25664(unsigned char a, unsigned char b)
{
comm_out(0x75); // Set Row Address
data_out(a); //   Default => 0x00
data_out(b); //   Default => 0x7F
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------

void Set_Write_RAM_25664()
{
comm_out(0x5C); // Enable MCU to Write into RAM
}
//--------------------------------------------------------------------------
//--------------------------------------------------------------------------

void setup()
{
  DDRC = 0xFF;         //set PORTC of Arduino (control signals) as output
  DDRA = 0xFF;         //set PORTA of Arduino (data signals) as output
  PORTA = 0x03;        //set DB7-DB2 to LOW, and DB1-DB0 to HIGH
  digitalWrite(RS, LOW);
  digitalWrite(RW, LOW);
  digitalWrite(E, LOW);
  digitalWrite(RES, HIGH);
  delay(1000);
 
  comm_out(0xFD);
  data_out(0x12);
 
  comm_out(0xB3);
  data_out(0xD0);
  comm_out(0xCA);
  data_out(0x3F);
  comm_out(0xA2);
  data_out(0x00);
  comm_out(0xA1);
  data_out(0x00);
  comm_out(0xA0);
  data_out(0x14);
  data_out(0x11);
  comm_out(0xB5);
  data_out(0x00);
  comm_out(0xAB);
  data_out(0x01);
  comm_out(0xB4);
  data_out(0xA0);
  data_out(0xB5);
  comm_out(0xC1);
  data_out(0x7F);
  comm_out(0xC7);
  data_out(0x0F);
  comm_out(0xB9);
  comm_out(0xB1);
  data_out(0xE2);
  comm_out(0xD1);
  data_out(0xA2);
  data_out(0x20);
  comm_out(0xBB);
  data_out(0x1F);
  comm_out(0xB6);
  data_out(0x08);
  comm_out(0xBE);
  data_out(0x07);
  comm_out(0xA6);
  comm_out(0xA9);
  comm_out(0xAF);
  delay(10);
}

void loop()
{
  Checkerboard_25664();
  delay(1000);
}

277
OLEDs / Re: NHD-0216KZW-AG5 Font Tables in 4-bit Mode
« on: May 29, 2014, 11:41:57 AM »
I have successfully modified my code to select that font table you are trying to use in 4-bit mode and have shared it below:

Code: [Select]
//---------------------------------------------------------
/*
NHD_0216KZW_uno4bit.ino
Program for writing to Newhaven Display 2 x 16 Character OLED (4-bit, 6800 mode)

(c)2014 Mike LaVine - Newhaven Display International, LLC.

        This program is free software; you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        the Free Software Foundation; either version 2 of the License, or
        (at your option) any later version.

        This program is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        GNU General Public License for more details.
*/
//---------------------------------------------------------

// The 4 bit data bus is connected to PORTD[3..0] of the Arduino Uno

int RS =  9;    // RS signal connected to digital pin 9 of Arduino Uno
int RW =  10;    // R/W signal connected to digital pin 10 of Arduino Uno
int  E =  11;    // E signal connected to digital pin 11 of Arduino Uno

const char text1[] = {"Newhaven Display"};
const char text2[] = {" 2x16 Char OLED "};

void toggle()
{
   digitalWrite(E, HIGH);
   delay(1);
   digitalWrite(E, LOW);
}

void command(char c)

   PORTD = (c>>4);
   digitalWrite(RS, LOW);
   toggle();
   PORTD = c;
   toggle();
}

void data(char d)
{
   PORTD = (d>>4);
   digitalWrite(RS, HIGH);
   toggle();
   PORTD = d;
   toggle();
}

void disp()
{
   int i;
   delay(50);
   command(0x02);  //Home Command  [Set DDRAM address to Line 1 position 1]
   delay(5);
   for (i=0;i<20;i++)
   {
      data(text1[i]);
   }
   command(0xC0);  //Second Line  [Set DDRAM address to Line 2 position 1]
   for (i=0;i<20;i++)
   {
      //data(text2[i]);
      data(0xF0+i);  //to prove western european table 2 is selected
   }
}

void writeCGRAM()
{
   command(0x40);    //first CGRAM position
   data(0x00);
   data(0x00);
   data(0x0F);
   data(0x14);
   data(0x14);
   data(0x14);
   data(0x14);
   data(0x0F);
}

void setup()         //runs first at power on
{
   DDRD = 0xFF;    //set PORTD (data bus) as output
   PORTD = 0x00;   //initialize PORTD to 0x00
   DDRB = 0xFF;    //set PORTB (control lines) as output
   PORTB = 0x00;   //initialize PORTB to 0x00
   
   /////////////////////Initialization Start///////////////////////
   PORTD = 0x2;        //extra leading nibble for 4-bit mode
   toggle();
   command(0x2B);      //4-bit mode, western european table 2
   command(0x08);      //display OFF
   command(0x01);      //clear display
   delay(5);
   command(0x06);      //entry mode set
   command(0x02);      //return home
   command(0x0C);      //display ON
   delay(10);
   //////////////////////Initialization End////////////////////////
}

void loop()         //main loop

  disp();
  delay(2000);    //2 seconds delay
  command(0x01);  //clear display
  delay(5);       //5 milliseconds delay
  writeCGRAM();   //write custom character to CGRAM (sideways 'A')
  command(0x02);  //Home Command  [Set DDRAM address to Line 1 position 1]
  data(0x00);     //display custom char at CGRAM location 0x00 (sideways 'A')
  delay(3000);    //3 seconds delay
}

I've also successfully wrote a custom sideways 'A' to the CGRAM's first location 0x00.

Please also take special note of the extra leading nibble in the initialization, as you will see undesirable results on the display if this is not present.

278
OLEDs / Re: OLED Blue lens exposure
« on: May 29, 2014, 11:00:30 AM »
Is it something that is seen when the display is powered on only?  A picture showing exactly what you are referring to would be of great help.  It can be tricky to post an image on the forums (it needs to be hosted online), so you may either post an image here or by emailing us directly at nhtech@newhavendisplay.com.  Also, please include the full part number of the display you are referring to.

279
Character LCDs / Re: NHD-0420D3Z-NSW-BBW-V3 how to interface
« on: May 28, 2014, 11:13:00 AM »
Yes, to use the SPI or I2C interface you would short the appropriate jumper as indicated on page 4 of the datasheet.

280
Character LCDs / Re: NHD-0420D3Z-NSW-BBW-V3 how to interface
« on: May 28, 2014, 08:13:21 AM »
Those register assignments are for the micro being used to drive the display, not the PIC16F690.  Those lines of code are properly setting up the RS232 on that particular micro.  For your MCU, this will be different.

Please make sure of the following:

1) R1 and R2 are open.
2) Your RS232 signal is TTL (0V, 5V).
3) Communication format is 8-bit data, 1 stop bit, no parity, no hand shaking.
4) You are allowing for the execution times for each command (certain commands such as cursor home and clear screen have longer execution times).

281
OLEDs / Re: NHD-0420DZW-AG5 parallel interface
« on: May 23, 2014, 08:28:54 AM »
I actually have some code I can share with you.  It is written for an Arduino Uno and uses the parallel interface.  See below:

Code: [Select]
//---------------------------------------------------------
/*
NHD_0420DZW_uno.ino
Program for writing to Newhaven Display 4 x 20 Character OLED (6800 mode)

(c)2014 Mike LaVine - Newhaven Display International, LLC.

        This program is free software; you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        the Free Software Foundation; either version 2 of the License, or
        (at your option) any later version.

        This program is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        GNU General Public License for more details.
*/
//---------------------------------------------------------

// The 8 bit data bus is connected to PORTD of the Arduino Uno R3

int RS =  8;    // RS signal connected to digital pin 8 of Arduino Uno R3
int RW =  9;    // R/W signal connected to digital pin 9 of Arduino Uno R3
int  E = 10;    // E signal connected to digital pin 10 of Arduino Uno R3

const char text1[] = {"  Newhaven Display  "};
const char text2[] = {"   Character OLED   "};
const char text3[] = {"  4 Line x 20 Char  "};
const char text4[] = {"0123456789!@#$%^&*()"};

const char text5[] = {"Line 1"};
const char text6[] = {"Line 2"};
const char text7[] = {"Line 3"};
const char text8[] = {"Line 4"};

void command(char c)

   digitalWrite(RS, LOW);
   PORTD = c;
   digitalWrite(E, HIGH);
   digitalWrite(E, LOW);
}

void data(char d)
{
   digitalWrite(RS, HIGH);
   PORTD = d;
   digitalWrite(E, HIGH);
   digitalWrite(E, LOW);
}

void disp1()
{
   int i;
   command(0x02);  //Home Command  [Set DDRAM address to Line 1 position 1]
   delay(5);
   for (i=0;i<20;i++)
   {
      data(text1[i]);
   }
   command(0xC0);  //Second Line  [Set DDRAM address to Line 2 position 1]
   for (i=0;i<20;i++)
   {
      data(text2[i]);
   }
   command(0x94);  //Third Line  [Set DDRAM address to Line 3 position 1]
   for (i=0;i<20;i++)
   {
      data(text3[i]);
   }
   command(0xD4);  //Fourth Line  [Set DDRAM address to Line 4 position 1]
   for (i=0;i<20;i++)
   {
      data(text4[i]);
   }
}

void disp2()
{
   int i;
   command(0x02);  //Home Command  [Set DDRAM address to Line 1 position 1]
   delay(5);
   for (i=0;i<6;i++)
   {
      data(text5[i]);
   }
   delay(250);
   for (i=0;i<14;i++)
   {
      command(0x1C);
      delay(40);
   }
   command(0x01);  //Display Clear
   delay(2);
   command(0x02);  //Home Command  [Set DDRAM address to Line 1 position 1]
   command(0xC0);  //Second Line  [Set DDRAM address to Line 2 position 1]
   for (i=0;i<6;i++)
   {
      data(text6[i]);
   }
   delay(250);
   for (i=0;i<14;i++)
   {
      command(0x1C);
      delay(40);
   }
   command(0x01);  //Display Clear
   delay(2);
   command(0x02);  //Home Command  [Set DDRAM address to Line 1 position 1]
   command(0x94);  //Third Line  [Set DDRAM address to Line 3 position 1]
   for (i=0;i<6;i++)
   {
      data(text7[i]);
   }
   delay(250);
   for (i=0;i<14;i++)
   {
      command(0x1C);
      delay(40);
   }
   command(0x01);  //Display Clear
   delay(2);
   command(0x02);  //Home Command  [Set DDRAM address to Line 1 position 1]
   command(0xD4);  //Fourth Line  [Set DDRAM address to Line 4 position 1]
   for (i=0;i<6;i++)
   {
      data(text8[i]);
   }
   delay(250);
   for (i=0;i<14;i++)
   {
      command(0x1C);
      delay(40);
   }
   command(0x01);  //Display Clear
   delay(2);
   command(0x02);  //Home Command  [Set DDRAM address to Line 1 position 1]
}

void setup()
{
   DDRD = 0xFF;    //set PORTD as output
   PORTD = 0x00;   //initialize PORTD to 0x00
   pinMode(RS, OUTPUT);
   pinMode(RW, OUTPUT);
   pinMode(E, OUTPUT);
   digitalWrite(RW, LOW);
   digitalWrite(E, HIGH);
   command(0x38);  //Function Set  [8-bit mode, Font Table: English/Japanese (FT[1:0] = 00)]
   command(0x08);  //Display OFF
   command(0x01);  //Display Clear
   command(0x06);  //Entry Mode Set  [Auto increment address when a character is written]
   command(0x02);  //Home Command  [Set DDRAM address to Line 1 position 1]
   command(0x0C);  //Display ON
}

void loop()

  disp1();
  delay(3500);
  command(0x01);  //Display Clear
  disp2();
  delay(50);
}


282
The display's available memory that can be used to define custom characters only allows up to 8 characters to be created and stored.  If you would like us to supply you with the same display with a different font table, please refer to this link for our available character LCD font tables: http://www.newhavendisplay.com/char_fonts.html

If a font table listed under the Character LCD section is of interest to you, please email us at nhtech@newhavendisplay.com to discuss this further.

283
Character LCDs / Re: Controlling 1x16 character display NHD-0116GZ.
« on: May 21, 2014, 03:31:37 PM »
My apologies Ike, there was an oversight on my behalf.  You are correct, it seems that the BASIC example code does in fact have an error in the write routines.  It should be resetting the RW pin first, then setting it, not the other way around.  We will need to update this ASAP.

I know you did mention that you have the RW pin grounded, is this still the case?  As I mentioned previously in my example code I too have the RW pin grounded, and this method is perfectly fine if only writing to the display.

Also, for this display, please make sure you are sending HEX 38 for the function set command as shown in the example.

284
Character LCDs / Re: Static discharge killing LCD
« on: May 20, 2014, 04:59:08 PM »
That particular display actually does not have a protection diode on it.  The non-RGB models of this display do however.
I apologize for the confusion, as it does say in the RGB model's spec that it has protection diodes.
We will update this error in the spec right away.

The display's bezel is not connected to signal ground on the board.

285
Character LCDs / Re: Static discharge killing LCD
« on: May 20, 2014, 01:35:17 PM »
I'm not sure which display you are referring to, but below is a couple of typical things that can be done to reduce ESD exposure:

- Add an ESD protection diode between VDD and Ground
- Ground the bezel of the display

Pages: 1 ... 17 18 [19] 20 21 ... 24