Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

what is GPIO_ResetBits ?

Status
Not open for further replies.

aliyesami

Full Member level 6
Full Member level 6
Joined
Jan 7, 2010
Messages
369
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,296
Location
USA
Visit site
Activity points
4,190
I am trying to use the ILI9340 TFT display by Newhavendisplay and its giving an example code for this display as follows :
Iam trying to write an AVR code for this LCD so if anyone can help me out .
thanks

Code:
//---------------------------------------------------------
/*
2.4in_TFT.c
Program snippets for writing to Newhaven Display 2.4" TFT with ILI9340 controller

(c)2010 Curt Lagerstam - 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.
*/
//-------------------------------------------------------
/*******************************************************************************
* Function Name  : TFT_24S_Write_Command
* Description    : writes a 1 byte command to 2.4" TFT.
* Input          : command = one byte command (register address)
* Output         : None
* Return         : None
*******************************************************************************/
void TFT_24S_Write_Command(unsigned int command)
{
GPIO_ResetBits(GPIOC, CS1);
GPIO_ResetBits(GPIOC, RS);
GPIO_SetBits(GPIOC, nRD);
GPIO_ResetBits(GPIOC, nWR);
GPIO_Write(GPIOB, command);
GPIO_SetBits(GPIOC, nWR);
TFT_delay(10);
}

/*******************************************************************************
* Function Name  : TFT_24S_Write_Data
* Description    : writes 1 byte of data to 2.4" TFT.
* Input          : data1 = one byte of display data or command parameter
* Output         : None
* Return         : None
*******************************************************************************/
void TFT_24S_Write_Data(unsigned int data1)
{
GPIO_Write(GPIOB, data1);
GPIO_SetBits(GPIOC, RS);
GPIO_ResetBits(GPIOC, nWR);
GPIO_SetBits(GPIOC, nWR);
}


/*******************************************************************************
* Function Name  : TFT_24_9340_demo
* Description    : Loads bmp from SD card and writes to NHD-2.4-240320SF-CTXI#-1.
* Input          : None
* Output         : None
* Return         : 1-end of function reached
*******************************************************************************/
int TFT_24_9340_demo(void)
{
char filename[18] = "2_4_240320SF_";
char filetype[4] = ".bmp";
char filenumber[1] = "0";
int i,n,result;
char image = 0x30;
unsigned short RGB16[25600];
unsigned char red,green,blue;
UINT blen;
GPIO_ResetBits(GPIOC, IM0);		//16-bit mode
memset(RGB16,0x0000,sizeof(RGB16));
TFT_delay(100);
TFT_24_9340_Init();
TFT_delay(100);

filename[13]='\0';
filenumber[0] = image;
strncat(filename,filenumber,1);
strncat(filename,filetype,4);

while(1){
TFT_24_9340_Init();

UILCD_SetCursor(0,0);UILCD_DisplayString("Reading SD Card ");UILCD_SetCursor(1,0);UILCD_DisplayString("                ");
UILCD_SetCursor(1,0);UILCD_DisplayString(filename);

if(openSD(filename)==0x30)
	{while(1);}
seekSD(54);

TFT_24S_Write_Command(0x002C);				//Memory write

for (n=0;n<3;n++){
	memset(RGB16,0x0000,sizeof(RGB16));
	for (i=0;i<25600;i++)				//for each 24-bit pixel...
	{
		f_read(&File1, &blue, 1, &blen);	//read the blue 8-bits
		f_read(&File1, &green, 1, &blen);	//read the green 8-bits
		f_read(&File1, &red, 1, &blen);		//read the red 8-bits
		red=red>>3;				//shift down to 5-bits
		green=green>>2;				//shift down to 6-bits
		blue=blue>>3;				//shift down to 5-bits
		RGB16[i]= (RGB16[i] | red);		//put red 5-bits into int
		RGB16[i]= (RGB16[i] << 6);		//move red bits over, make room for green
		RGB16[i]= (RGB16[i] | green);		//put green 6-bits into int
		RGB16[i]= (RGB16[i] << 5);		//move red and green bits over, make room for blue
		RGB16[i]= (RGB16[i] | blue);		//put blue 5-bits into int
	}
	GPIO_SetBits(GPIOC, RS);
	for(i=0;i<25600;i++){	
			GPIO_Write(GPIOB, (RGB16[i]));
			GPIO_ResetBits(GPIOC, nWR);
			GPIO_SetBits(GPIOC, nWR);
	}				
}
TFT_24S_Write_Command(0x0029);				//display ON

result = f_close(&File1);				// close file
	if (result != FR_OK) {
		UILCD_SetCursor(0,0);UILCD_DisplayString("File not Closed ");while(1);
		return result;}

UILCD_SetCursor(0,0);UILCD_DisplayString("Press SEL button");UILCD_SetCursor(1,0);UILCD_DisplayString("for next file.  ");
while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2)!=0){;}

image++;
if(image==0x3A){image=0x41;}
filename[13]='\0';
filenumber[0] = image;
strncat(filename,filenumber,1);
strncat(filename,filetype,4);

if(openSD(filename)==0x30)
	{image=0x30;}

filename[13]='\0';
filenumber[0] = image;
strncat(filename,filenumber,1);
strncat(filename,filetype,4);
}
return 1;
}

/*******************************************************************************
* Function Name  : TFT_24_9340_Init
* Description    : Initializes LCD with built-in ILI9340 controller.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void TFT_24_9340_Init(void)
{
GPIO_ResetBits(GPIOC, CS1);
GPIO_SetBits(GPIOC, nRD);
GPIO_ResetBits(GPIOC, nWR);
GPIO_WriteBit(GPIOC, RES, Bit_RESET);
TFT_delay(100);
GPIO_WriteBit(GPIOC, RES, Bit_SET);
TFT_delay(100);
TFT_24S_Write_Command(0x0028);//display OFF
TFT_24S_Write_Command(0x0011);TFT_24S_Write_Data(0x0000);				//exit SLEEP mode
TFT_24S_Write_Command(0x00C0);TFT_24S_Write_Data(0x0026);TFT_24S_Write_Data(0x0004);	//power control 1
TFT_24S_Write_Command(0x00C1);TFT_24S_Write_Data(0x0004);				//power control 2
TFT_24S_Write_Command(0x00C5);TFT_24S_Write_Data(0x0034);TFT_24S_Write_Data(0x0040);	//VCOM control 1
TFT_24S_Write_Command(0x0036);TFT_24S_Write_Data(0x0088);				//memory access control = BGR
TFT_24S_Write_Command(0x00B1);TFT_24S_Write_Data(0x0000);TFT_24S_Write_Data(0x0018);	//frame rate control
TFT_24S_Write_Command(0x00B6);TFT_24S_Write_Data(0x000A);TFT_24S_Write_Data(0x00A2);	//display function control
TFT_24S_Write_Command(0x00C7);TFT_24S_Write_Data(0x00C0);				//VCOM control 2
TFT_24S_Write_Command(0x003A);TFT_24S_Write_Data(0x0055);				//pixel format = 16 bit per pixel
TFT_24S_Write_Command(0x00E0);TFT_24S_Write_Data(0x001F);				//positive gamma correction
				TFT_24S_Write_Data(0x001B);
				TFT_24S_Write_Data(0x0018);
				TFT_24S_Write_Data(0x000B);
				TFT_24S_Write_Data(0x000F);
				TFT_24S_Write_Data(0x0009);
				TFT_24S_Write_Data(0x0046);
				TFT_24S_Write_Data(0x00B5);
				TFT_24S_Write_Data(0x0037);
				TFT_24S_Write_Data(0x000A);
				TFT_24S_Write_Data(0x000C);
				TFT_24S_Write_Data(0x0007);
				TFT_24S_Write_Data(0x0007);
				TFT_24S_Write_Data(0x0005);
				TFT_24S_Write_Data(0x0000);
TFT_24S_Write_Command(0x00E1);TFT_24S_Write_Data(0x0000);				//negative gamma correction
				TFT_24S_Write_Data(0x0024);
				TFT_24S_Write_Data(0x0027);
				TFT_24S_Write_Data(0x0004);
				TFT_24S_Write_Data(0x0010);
				TFT_24S_Write_Data(0x0006);
				TFT_24S_Write_Data(0x0039);
				TFT_24S_Write_Data(0x0074);
				TFT_24S_Write_Data(0x0048);
				TFT_24S_Write_Data(0x0005);
				TFT_24S_Write_Data(0x0013);
				TFT_24S_Write_Data(0x0038);
				TFT_24S_Write_Data(0x0038);
				TFT_24S_Write_Data(0x003A);
				TFT_24S_Write_Data(0x001F);
TFT_24S_Write_Command(0x002A);TFT_24S_Write_Data(0x0000);				//column address set
               			TFT_24S_Write_Data(0x0000);				//start 0x0000
				TFT_24S_Write_Data(0x0000);
				TFT_24S_Write_Data(0x00EF);				//end 0x00EF
TFT_24S_Write_Command(0x002B);TFT_24S_Write_Data(0x0000);				//page address set
               			TFT_24S_Write_Data(0x0000);				//start 0x0000
				TFT_24S_Write_Data(0x0001);
				TFT_24S_Write_Data(0x003F);				//end 0x013F
}
/*-------------------------------------------------------*/
 

The example code you have posted is incomplete and presented as a small series of routines.

Most likely the code was initially written for a microcontroller architecture which utilizes a set of registers to define direction, clear and set various port pins.

GPIO_ResetBits(PORT, PIN) - clears the GPIO PIN of PORT

GPIO_SetBits(PORT, PIN) - sets the GPIO PIN of PORT

etc..

Simply develop similar routines for manipulating GPIO pins for the AVR architecture.

BigDog
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top