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 ... 6 7 [8] 9 10 ... 24
106
TFTs / Re: NHD-7.0-800480EF-20 Color Modes
« on: December 19, 2014, 12:13:50 PM »
The color mode for the SSD1963 is dictated by the interface you are using.  I've included an image below of a table from page 17 of the SSD1963 datasheet that shows the different available interfaces and their corresponding color depth/pixel arrangement.  On page 78 (second attached image) the spec gives an explanation of the set_pixel_data_interface command (0xF0).  This is the command you will use to select what interface/pixel format you want to use.  You will notice from these images, when using the 8-bit interface for the SSD1963, you must use 24bpp color depth (3 writes per pixel).  The NHD-7.0-800480EF-20 controller board only allows the user to use an 8-bit interface, while the NHD-7.0-800480EF-34 allows for up to an 18-bit interface (16-bit being the most common).  The two controller boards are identical except for the FFC connectors you would be connecting your MCU to (20-pin connector vs 34-pin connector).  The board has solder pads for either connector, allowing you to modify it if you have the means to.

[attachment deleted by admin]

107
TFTs / Re: NHD-7.0-800480EF-20 Pinout
« on: December 19, 2014, 11:53:06 AM »
You are very welcome, and thank you for your kind feedback!  :D

108
TFTs / Re: NHD-7.0-800480EF-20 Pinout
« on: December 18, 2014, 09:21:49 AM »
The TE signal is not available to the user, and is already handled.  The B/L enable is listed as power supply, but you are correct; it is an MPU connection.  You may use this to turn OFF/ON the backlight.  It can be left unconnected because there is a pull-up resistor on the board.  The MPU should only need to sink less than 1mA.  The same goes for the DISP signal, except this is used for blanking the display as you have mentioned.

109
TFTs / Re: Vertical colored lines
« on: December 18, 2014, 09:15:18 AM »
As long as you follow the sequence as provided in the example code it should work every time.  Take special note of the RESET line being toggled in the beginning and also the delays around it (in ms).

110
OLEDs / Re: Font for NHD-2.8-25664UCB2-ND
« on: December 15, 2014, 05:23:26 PM »
The NHD-2.8-25664UCB2 does not have a built-in font table.  You may use one in your software, or switch to the NHD-2.8-25664UMB3, which is the same display but with an IC containing fonts for various languages/sizes.

111
TFTs / Re: TFT LCD pixels sticking / burning
« on: December 15, 2014, 05:20:47 PM »
The only way to reduce burn in with any display would be to effectively reduce how long you are displaying the same image on the display by use of screen savers, turning off the display, changing the image, etc.  We do not offer any Industrial Grade Displays for Panel Monitoring with long life, but I have yet to hear any customers comment/complain about burn-in with our TFTs.  As for your last question about Monochrome LCD Touch Technology free of this bug/problem of pixel damage, I cannot say for certain but we have not heard any complaints with any of our monochrome LCDs regarding this issue.

112
My apologies, I thought you were just referring to them as examples.  From batch to batch of the same display part number, the Vih spec will not change.  The Vih spec can vary between different parts, but not between 2 displays of the same part number.

113
The BF would be the only way I know of to check the internal state of the controller.  What voltage are you applying to V0?  The reason I ask is because it may be possible you have characters on the screen but cannot see them due to improper contrast voltage.  Do you have any character LCD library functions you are using, or is your code from scratch?  Have you successfully used this setup to communicate to an LCD previously?

114
No pull-ups/pull-downs are required on any of the signals on this display (even in 4-bit mode).  You may view in the datasheet that the wiring diagram for the display shows only one resistor, and it is adjustable (potentiometer) to allow for contrast adjustment.

115
TFTs / Re: NHD‐2.4‐240320SF‐CTXL#‐FTN1 touch-screen problem
« on: December 10, 2014, 11:19:05 AM »
I haven't seen this issue, nor have I heard any customers asking about it as of yet.  The fact that you have multiple displays makes it very doubtful that it has to do with a defective display.  Also, since the "untouchable region" pattern shown on the display is the same from display to display, it makes it even more unlikely.  I'm guessing it is something with your software (I know it works everywhere else but that doesn't mean there is some anomaly or special case happening in those areas).  Do you have a resistive touch panel controller IC you could try using instead of handling it manually via software?

116
Can you provide a full part number of the display you are using?

117
Character LCDs / Re: Issue with reading busy flag in 4 bit mode.
« on: December 10, 2014, 08:39:58 AM »
The byte order should remain the same between compatible controllers.

118
TFTs / Re: NHD‐2.4‐240320SF‐CTXL#‐FTN1 touch-screen problem
« on: December 10, 2014, 08:36:41 AM »
Do you have another display to try?  I'm curious to see if this is also occurring on another display, and if the "untouchable region" remains the same or changes.
If you do, please try it and let me know.  If you do not have another to try, you may either try purchasing another one to test, or emailing quality@newhavendisplay.com to set up an RMA.

119
TFTs / Re: Vertical colored lines
« on: December 04, 2014, 03:28:02 PM »
Other than electrical issues, I'd say it is a result of improper initialization.  I've responded to your previous post with some example code; I've also included it below:

Code: [Select]
//---------------------------------------------------------
/*
NHD_5_7_320240WFB_mega.ino
Program for writing to Newhaven Display 5.7 TFT with NHD-5.7-320240WFB-20 Controller Board (SSD1963, 8-bit)

(c)2013 Michael LaVine - Newhaven Display International, Inc.

        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 PORTA of the Arduino Mega2560
// 5V voltage regulator on Arduino Mega has been replaced with a 3.3V regulator to provide 3.3V logic

int RS  = 30;    // RS signal connected to Arduino digital pin 30
int WR  = 31;    // /WR signal connected to Arduino digital pin 31
int RD  = 32;    // /RD signal connected to Arduino digital pin 32
int RES = 33;    // /RES signal connected to Arduino digital pin 33

// /CS signal tied to GND

//;******************************************************************************
void TFT_Write_Command(unsigned char command)
{
  digitalWrite(RS, LOW);
  PORTA = command;
  digitalWrite(WR, LOW);
  digitalWrite(WR, HIGH);
}
//;******************************************************************************
void TFT_Write_Data(unsigned char data)
{
  //digitalWrite(RS, HIGH);
  PORTA = data;
  digitalWrite(WR, LOW);
  digitalWrite(WR, HIGH);
}
//====================================================
void TFT_Command_Write(unsigned char REG,unsigned char VALUE)
{
        TFT_Write_Command(REG);
        digitalWrite(RS, HIGH);
        TFT_Write_Data(VALUE);
}
//======================================================
void WindowSet(unsigned int s_x,unsigned int e_x,unsigned int s_y,unsigned int e_y)
{
TFT_Write_Command(0x2a); //SET column address
digitalWrite(RS, HIGH);
TFT_Write_Data((s_x)>>8); //SET start column address
TFT_Write_Data(s_x);
TFT_Write_Data((e_x)>>8); //SET end column address
TFT_Write_Data(e_x);

TFT_Write_Command(0x2b); //SET page address
digitalWrite(RS, HIGH);
TFT_Write_Data((s_y)>>8); //SET start page address
TFT_Write_Data(s_y);
TFT_Write_Data((e_y)>>8); //SET end page address
TFT_Write_Data(e_y);
}
void disp()
{
unsigned int i, j;
        WindowSet(0,319,0,239);               //set start/end column/page address (full screen)
TFT_Write_Command(0x2C);              //command to begin writing to frame memory
        digitalWrite(RS, HIGH);
for(i=0;i<240;i++)         //fill screen with blue pixels
{
    for(j=0;j<320;j++)
            {
              TFT_Write_Data(0xFF);
              TFT_Write_Data(0x00);
              TFT_Write_Data(0x00);
            }
}
        WindowSet(0,319,0,239);               //set start/end column/page address (full screen)
TFT_Write_Command(0x2C);              //command to begin writing to frame memory
        digitalWrite(RS, HIGH);
        for(i=0;i<240;i++)         //fill screen with green pixels
{
    for(j=0;j<320;j++)
            {
              TFT_Write_Data(0x00);
              TFT_Write_Data(0xFF);
              TFT_Write_Data(0x00);
            }
}
        WindowSet(0,319,0,239);               //set start/end column/page address (full screen)
TFT_Write_Command(0x2C);              //command to begin writing to frame memory
        digitalWrite(RS, HIGH);
        for(i=0;i<240;i++)         //fill screen with red pixels
{
    for(j=0;j<320;j++)
            {
              TFT_Write_Data(0x00);
              TFT_Write_Data(0x00);
              TFT_Write_Data(0xFF);
            }
}
}
//======================================================
void setup()
{
  DDRA = 0xFF;
  PORTA = 0x00;
  DDRC = 0xFF;
  PORTC = 0x00;
  digitalWrite(RD, HIGH);
  digitalWrite(WR, LOW);
  digitalWrite(RES, LOW);
  delay(120);
  digitalWrite(RES, HIGH);
  delay(120);
  TFT_Write_Command(0x01);         //Software reset
  delay(120);
  TFT_Write_Command(0xe2);         //set multiplier and divider of PLL
  digitalWrite(RS, HIGH);
  TFT_Write_Data(0x1d);
  TFT_Write_Data(0x02);
  TFT_Write_Data(0x04);
  TFT_Command_Write(0xe0,0x01);    //Enable PLL
  delay(1);
  TFT_Command_Write(0xe0,0x03);    //Lock PLL
  TFT_Write_Command(0x01);         //Software reset
  delay(120);
  TFT_Write_Command(0xb0); //SET LCD MODE  SET TFT 18Bits MODE
  digitalWrite(RS, HIGH);
  TFT_Write_Data(0x0c); //SET TFT MODE & hsync+Vsync+DEN MODE
  TFT_Write_Data(0x80); //SET TFT MODE & hsync+Vsync+DEN MODE
  TFT_Write_Data(0x01); //SET horizontal size=320-1 HightByte
  TFT_Write_Data(0x3f);         //SET horizontal size=320-1 LowByte
  TFT_Write_Data(0x00); //SET vertical size=240-1 HightByte
  TFT_Write_Data(0xef); //SET vertical size=240-1 LowByte
  TFT_Write_Data(0x00); //SET even/odd line RGB seq.=RGB
  TFT_Command_Write(0xf0,0x00);         //SET pixel data I/F format=8bit
  TFT_Command_Write(0x36,0x09);         //SET address mode=flip vertical 
  TFT_Write_Command(0xe6);    //SET PCLK freq
  digitalWrite(RS, HIGH);
  TFT_Write_Data(0x00);
  TFT_Write_Data(0xe7);
  TFT_Write_Data(0x4f);
  TFT_Write_Command(0xb4); //SET HBP
  digitalWrite(RS, HIGH);
  TFT_Write_Data(0x01); //SET HSYNC Total=440
  TFT_Write_Data(0xb8);
  TFT_Write_Data(0x00); //SET HBP 68
  TFT_Write_Data(0x44);
  TFT_Write_Data(0x0f);  //SET HSYNC Pulse Width=128=127pixels+1
  TFT_Write_Data(0x00); //SET Hsync pulse start position
  TFT_Write_Data(0x00);
  TFT_Write_Data(0x00); //SET Hsync pulse subpixel start position
  TFT_Write_Command(0xb6); //SET VBP
  digitalWrite(RS, HIGH);
  TFT_Write_Data(0x01); //SET Vsync total
  TFT_Write_Data(0x08);
  TFT_Write_Data(0x00); //SET VBP=19
  TFT_Write_Data(0x13);
  TFT_Write_Data(0x07);  //SET VSYNC Pulse Width= 8=7lines+1
  TFT_Write_Data(0x00); //SET Vsync pulse start position
  TFT_Write_Data(0x00);
  TFT_Write_Command(0x13); //SET display on
  //TFT_Write_Command(0x38); //SET display on
  TFT_Write_Command(0x29); //SET display on
  delay(10);
}

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

You will notice it is for the 8-bit interface, however, the initialization/sequence/timing will be the same because even in 16-bit mode the commands are sent using only 8-bits.

120
TFTs / Re: NHD-5.7-320240WFB-ETXI #-T-1
« on: December 04, 2014, 03:24:37 PM »
Below is some example code for that display+controller written for the Arduino Mega:

Code: [Select]
//---------------------------------------------------------
/*
NHD_5_7_320240WFB_mega.ino
Program for writing to Newhaven Display 5.7 TFT with NHD-5.7-320240WFB-20 Controller Board (SSD1963, 8-bit)

(c)2013 Michael LaVine - Newhaven Display International, Inc.

        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 PORTA of the Arduino Mega2560
// 5V voltage regulator on Arduino Mega has been replaced with a 3.3V regulator to provide 3.3V logic

int RS  = 30;    // RS signal connected to Arduino digital pin 30
int WR  = 31;    // /WR signal connected to Arduino digital pin 31
int RD  = 32;    // /RD signal connected to Arduino digital pin 32
int RES = 33;    // /RES signal connected to Arduino digital pin 33

// /CS signal tied to GND

//;******************************************************************************
void TFT_Write_Command(unsigned char command)
{
  digitalWrite(RS, LOW);
  PORTA = command;
  digitalWrite(WR, LOW);
  digitalWrite(WR, HIGH);
}
//;******************************************************************************
void TFT_Write_Data(unsigned char data)
{
  //digitalWrite(RS, HIGH);
  PORTA = data;
  digitalWrite(WR, LOW);
  digitalWrite(WR, HIGH);
}
//====================================================
void TFT_Command_Write(unsigned char REG,unsigned char VALUE)
{
        TFT_Write_Command(REG);
        digitalWrite(RS, HIGH);
        TFT_Write_Data(VALUE);
}
//======================================================
void WindowSet(unsigned int s_x,unsigned int e_x,unsigned int s_y,unsigned int e_y)
{
TFT_Write_Command(0x2a); //SET column address
digitalWrite(RS, HIGH);
TFT_Write_Data((s_x)>>8); //SET start column address
TFT_Write_Data(s_x);
TFT_Write_Data((e_x)>>8); //SET end column address
TFT_Write_Data(e_x);

TFT_Write_Command(0x2b); //SET page address
digitalWrite(RS, HIGH);
TFT_Write_Data((s_y)>>8); //SET start page address
TFT_Write_Data(s_y);
TFT_Write_Data((e_y)>>8); //SET end page address
TFT_Write_Data(e_y);
}
void disp()
{
unsigned int i, j;
        WindowSet(0,319,0,239);               //set start/end column/page address (full screen)
TFT_Write_Command(0x2C);              //command to begin writing to frame memory
        digitalWrite(RS, HIGH);
for(i=0;i<240;i++)         //fill screen with blue pixels
{
    for(j=0;j<320;j++)
            {
              TFT_Write_Data(0xFF);
              TFT_Write_Data(0x00);
              TFT_Write_Data(0x00);
            }
}
        WindowSet(0,319,0,239);               //set start/end column/page address (full screen)
TFT_Write_Command(0x2C);              //command to begin writing to frame memory
        digitalWrite(RS, HIGH);
        for(i=0;i<240;i++)         //fill screen with green pixels
{
    for(j=0;j<320;j++)
            {
              TFT_Write_Data(0x00);
              TFT_Write_Data(0xFF);
              TFT_Write_Data(0x00);
            }
}
        WindowSet(0,319,0,239);               //set start/end column/page address (full screen)
TFT_Write_Command(0x2C);              //command to begin writing to frame memory
        digitalWrite(RS, HIGH);
        for(i=0;i<240;i++)         //fill screen with red pixels
{
    for(j=0;j<320;j++)
            {
              TFT_Write_Data(0x00);
              TFT_Write_Data(0x00);
              TFT_Write_Data(0xFF);
            }
}
}
//======================================================
void setup()
{
  DDRA = 0xFF;
  PORTA = 0x00;
  DDRC = 0xFF;
  PORTC = 0x00;
  digitalWrite(RD, HIGH);
  digitalWrite(WR, LOW);
  digitalWrite(RES, LOW);
  delay(120);
  digitalWrite(RES, HIGH);
  delay(120);
  TFT_Write_Command(0x01);         //Software reset
  delay(120);
  TFT_Write_Command(0xe2);         //set multiplier and divider of PLL
  digitalWrite(RS, HIGH);
  TFT_Write_Data(0x1d);
  TFT_Write_Data(0x02);
  TFT_Write_Data(0x04);
  TFT_Command_Write(0xe0,0x01);    //Enable PLL
  delay(1);
  TFT_Command_Write(0xe0,0x03);    //Lock PLL
  TFT_Write_Command(0x01);         //Software reset
  delay(120);
  TFT_Write_Command(0xb0); //SET LCD MODE  SET TFT 18Bits MODE
  digitalWrite(RS, HIGH);
  TFT_Write_Data(0x0c); //SET TFT MODE & hsync+Vsync+DEN MODE
  TFT_Write_Data(0x80); //SET TFT MODE & hsync+Vsync+DEN MODE
  TFT_Write_Data(0x01); //SET horizontal size=320-1 HightByte
  TFT_Write_Data(0x3f);         //SET horizontal size=320-1 LowByte
  TFT_Write_Data(0x00); //SET vertical size=240-1 HightByte
  TFT_Write_Data(0xef); //SET vertical size=240-1 LowByte
  TFT_Write_Data(0x00); //SET even/odd line RGB seq.=RGB
  TFT_Command_Write(0xf0,0x00);         //SET pixel data I/F format=8bit
  TFT_Command_Write(0x36,0x09);         //SET address mode=flip vertical 
  TFT_Write_Command(0xe6);    //SET PCLK freq
  digitalWrite(RS, HIGH);
  TFT_Write_Data(0x00);
  TFT_Write_Data(0xe7);
  TFT_Write_Data(0x4f);
  TFT_Write_Command(0xb4); //SET HBP
  digitalWrite(RS, HIGH);
  TFT_Write_Data(0x01); //SET HSYNC Total=440
  TFT_Write_Data(0xb8);
  TFT_Write_Data(0x00); //SET HBP 68
  TFT_Write_Data(0x44);
  TFT_Write_Data(0x0f);  //SET HSYNC Pulse Width=128=127pixels+1
  TFT_Write_Data(0x00); //SET Hsync pulse start position
  TFT_Write_Data(0x00);
  TFT_Write_Data(0x00); //SET Hsync pulse subpixel start position
  TFT_Write_Command(0xb6); //SET VBP
  digitalWrite(RS, HIGH);
  TFT_Write_Data(0x01); //SET Vsync total
  TFT_Write_Data(0x08);
  TFT_Write_Data(0x00); //SET VBP=19
  TFT_Write_Data(0x13);
  TFT_Write_Data(0x07);  //SET VSYNC Pulse Width= 8=7lines+1
  TFT_Write_Data(0x00); //SET Vsync pulse start position
  TFT_Write_Data(0x00);
  TFT_Write_Command(0x13); //SET display on
  //TFT_Write_Command(0x38); //SET display on
  TFT_Write_Command(0x29); //SET display on
  delay(10);
}

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

You will notice it is for the 8-bit interface, however, the initialization/sequence/timing will be the same because even in 16-bit mode the commands are sent using only 8-bits.

Pages: 1 ... 6 7 [8] 9 10 ... 24