NHD-5.7-320240WFB-ETXI #-T-1
Hi:
Need code example to drive the TFT display NHD-5.7-320240WFB-ETXI #-T-1 using the SSD1963 controller board.
I am using a STM32F2 microcontroller using FSMC 16-bit interface.
Can you help?
Thanks,
0
-
Below is some example code for that display+controller written for the Arduino Mega:
//---------------------------------------------------------
/*
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.
0
Please sign in to leave a comment.
Comments
1 comment