Esempio n. 1
0
//6*12大小
//在指定位置显示一个字符
//x:0~234
//y:0~308
//num:要显示的字符:" "--->"~"
void TFT_ShowChar(u8 x,u16 y,u8 num)
{   
    
#define MAX_CHAR_POSX 232
#define MAX_CHAR_POSY 304
    
    u8 temp;
    u8 pos,t; 

    if(x>MAX_CHAR_POSX||y>MAX_CHAR_POSY)return;
    //设定一个字符所占的大小 
    //开辟空间
    
	LCD_WR_CMD(0x0050, x);    // Horizontal GRAM Start Address
	LCD_WR_CMD(0x0051, x+5);  // Horizontal GRAM End Address
	LCD_WR_CMD(0x0052, y);    // Vertical GRAM Start Address
	LCD_WR_CMD(0x0053, y+11); // Vertical GRAM Start Address	 
	LCD_WR_CMD(32, x);
    LCD_WR_CMD(33, y);
	LCD_WR_REG(34); 
	
	num=num-' ';
	for(pos=0;pos<12;pos++)
	{
	    temp=asc2_1206[num][pos];
	    for(t=0;t<6;t++)
	    {                 
	        if(temp&0x01)LCD_WR_Data(POINT_COLOR);
	        else LCD_WR_Data(BACK_COLOR);   
	        temp>>=1; 
	    }
	}	
}  	 
Esempio n. 2
0
//演示程序
void LCD_Test(unsigned char a)
{
	unsigned long n;

		n=0;
		//初始化屏幕起始坐标
		LCD_Control(100, 149, 100, 149, 'U');
		while(n < 700)
		{
			LCD_WR_Data(a);
			n++;
	 	}
}
/*       320
 * -------------------
 *|                   |
 *|                   |
 *|                   |  240
 *|                   |
 *|                   |
 * -------------------
 */
void ImagDisp(void)
{
	uint16_t i, j;
	uint16_t Camera_Data;
	for(i = 0; i < 240; i++)
	{
		for(j = 0; j < 320; j++)
		{
			READ_FIFO_PIXEL(Camera_Data);		/* 从FIFO读出一个rgb565像素到Camera_Data变量 */
			LCD_WR_Data(Camera_Data);
		}
	}
}
Esempio n. 4
0
//画点
//x:0~239
//y:0~319
//POINT_COLOR:此点的颜色
void TFT_DrawPoint(u8 x,u16 y)
{

    LCD_WR_CMD(0x0050, x); // Horizontal GRAM Start Address
	LCD_WR_CMD(0x0051, 0x00EF); // Horizontal GRAM End Address
	LCD_WR_CMD(0x0052, y); // Vertical GRAM Start Address
	LCD_WR_CMD(0x0053, 0x013F); // Vertical GRAM Start Address
	LCD_WR_CMD(32, x); // Horizontal GRAM Start Address		
	LCD_WR_CMD(33, y); // Vertical GRAM Start Address
	LCD_WR_REG(34);


	LCD_WR_Data(POINT_COLOR);
 
} 
Esempio n. 5
0
void TFT_Clear(u8 x,u16 y,u8 len,u16 wid)
{           
    u32 n,temp;	

	LCD_WR_CMD(0x0050, x); // Horizontal GRAM Start Address
	LCD_WR_CMD(0x0051, x+len-1); // Horizontal GRAM End Address
	LCD_WR_CMD(0x0052, y); // Vertical GRAM Start Address
	LCD_WR_CMD(0x0053, y+wid-1); // Vertical GRAM Start Address
	LCD_WR_REG(34);

	temp=(u32)len*wid;    
	for(n=0;n<temp;n++) 
	  LCD_WR_Data(BACK_COLOR);

}   
Esempio n. 6
0
/*** 说    明:图片取模格式为水平扫描,16位颜色模式,取模软件img2LCD ***/
static void LCD_DrawPicture(uint16_t StartX, uint16_t StartY, uint8_t Dir, uint8_t *Pic)
{
	uint16_t temp;
	uint16_t x = 0, y = 0;
	uint32_t i = 8, len = 0;
	
	x = ((uint16_t)(Pic[2] << 8) + Pic[3]) - 1;		//从图像数组里取出图像的宽度
	y = ((uint16_t)(Pic[4] << 8) + Pic[5]) - 1;		//从图像数组里取出图像的高度
	
	if (Dir == 0)
	{
		LCD_WR_CMD(0x0003, 0x1030);			//图像显示方向为左上起,行递增,列增加
		LCD_WR_CMD(0x0210, StartX);			//水平显示区起始地址 0
		LCD_WR_CMD(0x0211, StartX + x);		//水平显示区结束地址 239
		LCD_WR_CMD(0x0212, StartY);			//垂直显示区起始地址 0
		LCD_WR_CMD(0x0213, StartY + y);		//垂直显示区结束地址 399

		LCD_WR_CMD(0x0200, StartX);			//水平显示区地址 0
  	LCD_WR_CMD(0x0201, StartY);			//垂直显示区地址 0
	}
	else if (Dir == 1)
	{
		LCD_WR_CMD(0x0003, 0x1018);   				//图像显示方向为左下起,行递增,列递减
	    LCD_WR_CMD(0x0210, StartY); 				//水平显示区起始地址 0
	  	LCD_WR_CMD(0x0211, StartY + y);           	//水平显示区结束地址 239
	  	LCD_WR_CMD(0x0212, StartX);     			//垂直显示区起始地址 0
	  	LCD_WR_CMD(0x0213, StartX + x);         	//垂直显示区结束地址 239
	  
	  	LCD_WR_CMD(0x0200, StartY);		          	//水平显示区地址
	  	LCD_WR_CMD(0x0201, StartX + x);		    	//垂直显示区地址
	}
	
	LCD_WR_REG(0x0202);				//写数据到显示区

	len = 2 * (x + 1) * (y + 1);	//计算出图像所占的字节数
	while (i < (len + 8))			//从图像数组的第9位开始递增
	{
		temp = (uint16_t)((Pic[i] << 8) + Pic[i+1]);	//16位总线,需要一次发送2个字节的数据
		LCD_WR_Data(temp);								//将取出的16位像素数据送入显示区
		i += 2;											//取模位置加2,以为获取下一个像素数据
	}	
}
Esempio n. 7
0
//初始化函数
void LCD_Init(void)
{
    unsigned long  colori=0;
    LCD_GPIO_Init();
    FSMC_LCD_Init();
	LCD_Rst();	 

	LCD_WR_CMD(0x00E3, 0x3008); // Set internal timing
	LCD_WR_CMD(0x00E7, 0x0012); // Set internal timing
	LCD_WR_CMD(0x00EF, 0x1231); // Set internal timing
	LCD_WR_CMD(0x0000, 0x0001); // Start Oscillation
	LCD_WR_CMD(0x0001, 0x0100); // set SS and SM bit
	LCD_WR_CMD(0x0002, 0x0700); // set 1 line inversion

	LCD_WR_CMD(0x0003, 0x1030); // set GRAM write direction and BGR=0,262K colors,1 transfers/pixel.
	LCD_WR_CMD(0x0004, 0x0000); // Resize register
	LCD_WR_CMD(0x0008, 0x0202); // set the back porch and front porch
	LCD_WR_CMD(0x0009, 0x0000); // set non-display area refresh cycle ISC[3:0]
	LCD_WR_CMD(0x000A, 0x0000); // FMARK function
	LCD_WR_CMD(0x000C, 0x0000); // RGB interface setting
	LCD_WR_CMD(0x000D, 0x0000); // Frame marker Position
	LCD_WR_CMD(0x000F, 0x0000); // RGB interface polarity
    //Power On sequence 
	LCD_WR_CMD(0x0010, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
	LCD_WR_CMD(0x0011, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0]
	LCD_WR_CMD(0x0012, 0x0000); // VREG1OUT voltage
	LCD_WR_CMD(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude
	Lcd_Delay(200); // Dis-charge capacitor power voltage
	LCD_WR_CMD(0x0010, 0x1690); // SAP, BT[3:0], AP, DSTB, SLP, STB
	LCD_WR_CMD(0x0011, 0x0227); // R11h=0x0221 at VCI=3.3V, DC1[2:0], DC0[2:0], VC[2:0]
	Lcd_Delay(50); // Delay 50ms
	LCD_WR_CMD(0x0012, 0x001C); // External reference voltage= Vci;
	Lcd_Delay(50); // Delay 50ms
	LCD_WR_CMD(0x0013, 0x1800); // R13=1200 when R12=009D;VDV[4:0] for VCOM amplitude
	LCD_WR_CMD(0x0029, 0x001C); // R29=000C when R12=009D;VCM[5:0] for VCOMH
	LCD_WR_CMD(0x002B, 0x000D); // Frame Rate = 91Hz
	Lcd_Delay(50); // Delay 50ms
	LCD_WR_CMD(0x0020, 0x0000); // GRAM horizontal Address
	LCD_WR_CMD(0x0021, 0x0000); // GRAM Vertical Address
    // ----------- Adjust the Gamma Curve ----------//
	LCD_WR_CMD(0x0030, 0x0007);
	LCD_WR_CMD(0x0031, 0x0302);
	LCD_WR_CMD(0x0032, 0x0105);
	LCD_WR_CMD(0x0035, 0x0206);
	LCD_WR_CMD(0x0036, 0x0808);
	LCD_WR_CMD(0x0037, 0x0206);
	LCD_WR_CMD(0x0038, 0x0504);
	LCD_WR_CMD(0x0039, 0x0007);
	LCD_WR_CMD(0x003C, 0x0105);
	LCD_WR_CMD(0x003D, 0x0808);
    //------------------ Set GRAM area ---------------//
	LCD_WR_CMD(0x0050, 0x0000); // Horizontal GRAM Start Address
	LCD_WR_CMD(0x0051, 0x00EF); // Horizontal GRAM End Address
	LCD_WR_CMD(0x0052, 0x0000); // Vertical GRAM Start Address
	LCD_WR_CMD(0x0053, 0x013F); // Vertical GRAM Start Address
	LCD_WR_CMD(0x0060, 0xA700); // Gate Scan Line
	LCD_WR_CMD(0x0061, 0x0001); // NDL,VLE, REV
	LCD_WR_CMD(0x006A, 0x0000); // set scrolling line
    //-------------- Partial Display Control ---------//
	LCD_WR_CMD(0x0080, 0x0000);
	LCD_WR_CMD(0x0081, 0x0000);
	LCD_WR_CMD(0x0082, 0x0000);
	LCD_WR_CMD(0x0083, 0x0000);
	LCD_WR_CMD(0x0084, 0x0000);
	LCD_WR_CMD(0x0085, 0x0000);
    //-------------- Panel Control -------------------//
	LCD_WR_CMD(0x0090, 0x0010);
	LCD_WR_CMD(0x0092, 0x0000);
	LCD_WR_CMD(0x0093, 0x0003);
	LCD_WR_CMD(0x0095, 0x0110);
	LCD_WR_CMD(0x0097, 0x0000);
	LCD_WR_CMD(0x0098, 0x0000);
	LCD_WR_CMD(0x0007, 0x0133); // 262K color and display ON
  	


    LCD_WR_CMD(32, 0);
    LCD_WR_CMD(33, 0x013F);
	*(__IO uint16_t *) (Bank1_LCD_C)= 34;
	for(colori=0;colori<76800;colori++)
	{
	  LCD_WR_Data(BACK_COLOR);
	}
			
}
Esempio n. 8
0
static inline void LCD_WR_CMD(unsigned int index,unsigned int val) {
  LCD_WR_REG(index);
  LCD_WR_Data(val);
}
Esempio n. 9
0
void lcdSetPixel_FSMC(JsGraphics *gfx, short x, short y, unsigned int col) {
  if (x<0 || y<0 || x>=gfx->data.width || y>=gfx->data.height) return;
  lcdSetCursor(gfx,x,y);
  LCD_WR_REG(34);
  LCD_WR_Data(col);
}
Esempio n. 10
0
/*       320
 * -------------------
 *|                   |
 *|                   |
 *|                   |  240
 *|                   |
 *|                   |
 * -------------------
 */
void ImagDisp(void)
{
	
	uint16_t i,j,m=0;
	uint16_t Camera_Data;
	for(i = 0; i < 240; i++){
		for(j = 0; j < 320; j++){
			READ_FIFO_PIXEL(Camera_Data);		/* 从FIFO读出一个rgb565像素到Camera_Data变量 */
			if((i == Mid[4].y) && (j > Mid[4].x) && (j <= Mid[4].x + pointNum))
				ColorData4[0][j-Mid[4].x] = Camera_Data;
			if((i == Mid[4].y) && (j < Mid[4].x) && (j >= Mid[4].x - pointNum))
				ColorData4[1][Mid[4].x-j] = Camera_Data;
			if((j == Mid[4].x) && (i >= Mid[4].y - pointNum) && (i < Mid[4].y))
				ColorData4[2][Mid[4].y-i] = Camera_Data;
			if((j == Mid[4].x) && (i > Mid[4].y) && ( i <= Mid[4].y + pointNum))
				ColorData4[3][i-Mid[4].y] = Camera_Data;
			
			if((i == Mid[2].y) && (j > Mid[2].x) && (j <= Mid[2].x + pointNum))
				ColorData4[0][j-Mid[2].x] = Camera_Data;
			if((i == Mid[2].y) && (j < Mid[2].x) && (j >= Mid[2].x - pointNum))
				ColorData4[1][Mid[2].x-j] = Camera_Data;
			if((j == Mid[2].x) && (i >= Mid[2].y - pointNum) && (i < Mid[2].y))
				ColorData4[2][Mid[2].y-i] = Camera_Data;
			if((j == Mid[2].x) && (i > Mid[2].y) && ( i <= Mid[2].y + pointNum))
				ColorData4[3][i-Mid[2].y] = Camera_Data;
//			
//			if(i==Mid[6].y&&j>Mid[6].x&&j<=Mid[6].x+pointNum)
//				ColorData6[0][j-Mid[6].x]=Camera_Data;
//			if(i==Mid[6].y&&j<Mid[6].x&&j>=Mid[6].x-pointNum)
//				ColorData6[1][Mid[6].x-j]=Camera_Data;
//			if(j==Mid[6].x&&i>=Mid[6].y-pointNum&&i<Mid[6].y)
//				ColorData6[2][Mid[6].y-i]=Camera_Data;
//			if(j==Mid[6].x&&i>Mid[6].y&&i<=Mid[6].y+pointNum)
//				ColorData6[3][i-Mid[6].y]=Camera_Data;
			
			if(i==65&&j==135)
			{
				MidColorData[0][0]=Camera_Data;
				Camera_Data=0;
			}
			if(i==65&&j==170)
			{
				MidColorData[0][1]=Camera_Data;
				Camera_Data=0;
			}
			if(i==65&&j==202)
			{ 	
				MidColorData[0][2]=Camera_Data;
				Camera_Data=0;
			}
			
			if(i==100&&j==135)
			{
				MidColorData[1][0]=Camera_Data;
				Camera_Data=0;
			}
			if(i==100&&j==170)
			{
				MidColorData[1][1]=Camera_Data;
				Camera_Data=0;
			}
			if(i==100&&j==202)
			{
				MidColorData[1][2]=Camera_Data;
				Camera_Data=0;
			}
			
			if(i==135&&j==135)
			{
				MidColorData[2][0]=Camera_Data;
				Camera_Data=0;
			}
			if(i==135&&j==170)
			{
				MidColorData[2][1]=Camera_Data;
				Camera_Data=0;
			}
			if(i==135&&j==202)
			{
				MidColorData[2][2]=Camera_Data;
				Camera_Data=0;
			}
			LCD_WR_Data(Camera_Data);
		}
	}
	for(i=0;i<3;i++){
		for(j=0;j<3;j++){
			RGBtoHSL(MidColorData[i][j],hsl_l+m);
			outcolor(hsl_l+m);
			m++;
		}
	}
	if(ColorDataCompare(ColorData4))
	{
//		if(ColorDataCompare(ColorData2))
			Judgerubik=1;
//		else
//			Judgerubik=0;
	}
	else
		Judgerubik=0;
}
Esempio n. 11
0
/*** 3寸TFT(R61509)初始化函数 ***/
void LCD_Init(void)
{
	uint16_t i = 0;

	GPIO_ResetBits(GPIOE, GPIO_Pin_1);
	Delay(0x1AFFF);
	GPIO_SetBits(GPIOE, GPIO_Pin_1);
	Delay(0x1AFFF);
	
	LCD_WR_CMD(0x0000, 0x00000);
	LCD_WR_CMD(0x0000, 0x00000);
	LCD_WR_CMD(0x0000, 0x00000);
	LCD_WR_CMD(0x0000, 0x00000);
	
	LCD_WR_CMD(0x0400, 0x06200);
	LCD_WR_CMD(0x0008, 0x00808);
	LCD_WR_CMD(0x0300, 0x00C00);	//gamma
	LCD_WR_CMD(0x0301, 0x05A0B);
	LCD_WR_CMD(0x0302, 0x00906);
	LCD_WR_CMD(0x0303, 0x01017);
	LCD_WR_CMD(0x0304, 0x02300);
	LCD_WR_CMD(0x0305, 0x01700);
	LCD_WR_CMD(0x0306, 0x06309);
	LCD_WR_CMD(0x0307, 0x00C09);
	LCD_WR_CMD(0x0308, 0x0100C);
	LCD_WR_CMD(0x0309, 0x02232);
	LCD_WR_CMD(0x0010, 0x00016);	//69.5Hz
	LCD_WR_CMD(0x0011, 0x00101);
	LCD_WR_CMD(0x0012, 0x00000);
	LCD_WR_CMD(0x0013, 0x00001);
	LCD_WR_CMD(0x0100, 0x00330);	//BT,AP
	LCD_WR_CMD(0x0101, 0x00237);	//DC0,DC1,VC
	LCD_WR_CMD(0x0103, 0x00F00);	//VDV
	LCD_WR_CMD(0x0280, 0x06100);	//VCM
	LCD_WR_CMD(0x0102, 0x0C1B0);	//VRH,VCMR,PSON,PON

	LCD_WR_CMD(0x0001, 0x00100);
	LCD_WR_CMD(0x0002, 0x00100);
	LCD_WR_CMD(0x0003, 0x01030);
	LCD_WR_CMD(0x0009, 0x00001);
	LCD_WR_CMD(0x000C, 0x00000);
	LCD_WR_CMD(0x0090, 0x08000);
	LCD_WR_CMD(0x000F, 0x00000);
	LCD_WR_CMD(0x0210, 0x00000);
	LCD_WR_CMD(0x0211, 0x000EF);
	LCD_WR_CMD(0x0212, 0x00000);
	LCD_WR_CMD(0x0213, 0x0018F);	//432=1AF, 400=18F
	LCD_WR_CMD(0x0500, 0x00000);
	LCD_WR_CMD(0x0501, 0x00000);
	LCD_WR_CMD(0x0502, 0x0005F);
	LCD_WR_CMD(0x0401, 0x00001);
	LCD_WR_CMD(0x0404, 0x00000);

	LCD_WR_CMD(0x0007, 0x00100);	//BASEE

	LCD_WR_CMD(0x0200, 0x00000);
	LCD_WR_CMD(0x0201, 0x00000);
    LCD_WR_CMD(0x0200, 0x00000);
    LCD_WR_CMD(0x0201, 0x00000);
	
	Bank1_LCD_C = 0X0202;			//准备写数据显示区
	for (i=0; i<9600; i++)
	{
		LCD_WR_Data(0xFFFF);		//用黑色清屏
	}			
}
Esempio n. 12
0
/*
 * 显示bmp图片, 24位真彩色
 * 图片宽度和高度根据图片大小而定
 */
void Lcd_show_bmp(unsigned short int x, unsigned short int y,unsigned char *pic_name)
{
	int i, j, k;
	int width, height, l_width;

	BYTE red,green,blue;
	BITMAPFILEHEADER bitHead;
	BITMAPINFOHEADER bitInfoHead;
	WORD fileType;

	unsigned int read_num;
	unsigned char tmp_name[20];
	sprintf((char*)tmp_name,"0:%s",pic_name);

	f_mount(0, &bmpfs[0]);
	BMP_DEBUG_PRINTF("file mount ok \r\n");    
	bmpres = f_open( &bmpfsrc , (char *)tmp_name, FA_OPEN_EXISTING | FA_READ);
/*-------------------------------------------------------------------------------------------------------*/
	if(bmpres == FR_OK)
	{
		BMP_DEBUG_PRINTF("Open file success\r\n");

		/* 读取文件头信息  两个字节*/         
		f_read(&bmpfsrc,&fileType,sizeof(WORD),&read_num);     

		/* 判断是不是bmp文件 "BM"*/
		if(fileType != 0x4d42)
		{
			BMP_DEBUG_PRINTF("file is not .bmp file!\r\n");
			return;
		}
		else
		{
			BMP_DEBUG_PRINTF("Ok this is .bmp file\r\n");	
		}        

		/* 读取BMP文件头信息*/
		f_read(&bmpfsrc,&bitHead,sizeof(tagBITMAPFILEHEADER),&read_num);        
		showBmpHead(&bitHead);

		/* 读取位图信息头信息 */
		f_read(&bmpfsrc,&bitInfoHead,sizeof(BITMAPINFOHEADER),&read_num);
		showBmpInforHead(&bitInfoHead);
	}
	else
	{
		BMP_DEBUG_PRINTF("open file failed!\r\n");
		return;
	}    
/*-------------------------------------------------------------------------------------------------------*/
	width = bitInfoHead.biWidth;
	height = bitInfoHead.biHeight;

	/* 计算位图的实际宽度并确保它为32的倍数	*/
	l_width = WIDTHBYTES(width* bitInfoHead.biBitCount);	

	if(l_width > 960)
	{
		BMP_DEBUG_PRINTF("\n SORRY, PIC IS TOO BIG (<=320)\n");
		return;
	}
	
	/* 设置Lcd Gram 扫描方向为: 右下角->左上角 */
	Lcd_GramScan( 3 );
	
	/* 开一个图片大小的窗口*/
	LCD_OpenWindow(x, y, width, height);

	
	/* 判断是否是24bit真彩色图 */
	if(bitInfoHead.biBitCount >= 24)
	{
		for(i=0;i< height; i++)
		{	  
			/* 读取一行bmp的数据到数组pColorData里面 */
			#if 0
				for(j=0; j< l_width; j++)	 													
				{                
					f_read(&bmpfsrc,pColorData+j,1,&read_num);
				}            
			#elif 1				
				f_read(&bmpfsrc,pColorData,l_width/2,&read_num);
				f_read(&bmpfsrc,pColorData+l_width/2,l_width/2,&read_num);
			#else
				f_read(&bmpfsrc,pColorData,l_width,&read_num);
			#endif

			for(j=0; j<width; j++) 											   //一行有效信息
			{
				k = j*3;																	 //一行中第K个像素的起点
				red = pColorData[k+2];
				green = pColorData[k+1];
				blue = 	pColorData[k];
				LCD_WR_Data(RGB24TORGB16(red,green,blue)); //写入LCD-GRAM
			}            
		}        	 																					     
	}    
	else 
	{        
		BMP_DEBUG_PRINTF("SORRY, THIS PIC IS NOT A 24BITS REAL COLOR");
		return ;
	}
	f_close(&bmpfsrc);    
}
Esempio n. 13
0
void LCD_Clear(u16 Color)
{
	u32 i;
  	for(i=0;i<76800;i++)		 		   
    LCD_WR_Data(Color);			     
}
Esempio n. 14
0
void MyLCD_Init(void)
{ 
   	LCD_LineConf();
  	LCD_FSMCConf();
  	delay_ms(5); 
  	lcdid=LCD_ReadReg(0x00);  
		lcdid = 0x9341;
		if(lcdid == 0x9341)
		{
		LCD_WR_REG(0xEF);
		LCD_WR_Data (0x03);
		LCD_WR_Data(0x80);
		LCD_WR_Data (0X02);

		LCD_WR_REG(0xCF);
		LCD_WR_Data (0x00);
		LCD_WR_Data (0xBA);
		LCD_WR_Data (0XB0);

		LCD_WR_REG(0xED);
		LCD_WR_Data (0x67);
		LCD_WR_Data(0x03);
		LCD_WR_Data(0X12);
		LCD_WR_Data (0X81);

		LCD_WR_REG(0xE8);
		LCD_WR_Data (0x85);
		LCD_WR_Data (0x11);
		LCD_WR_Data (0x79);

		LCD_WR_REG(0xCB);
		LCD_WR_Data (0x39);
		LCD_WR_Data (0x2C);
		LCD_WR_Data (0x00);
		LCD_WR_Data (0x34);
		LCD_WR_Data (0x06);

		LCD_WR_REG(0xF7);
		LCD_WR_Data (0x20);

		LCD_WR_REG(0xEA);
		LCD_WR_Data (0x00);
		LCD_WR_Data (0x00);

		LCD_WR_REG(0xC0); //Power control
		LCD_WR_Data (0x1D); //VRH[5:0]

		LCD_WR_REG(0xC1); //Power control
		LCD_WR_Data (0x12); //SAP[2:0];BT[3:0]

		LCD_WR_REG(0xC5); //VCM control
		LCD_WR_Data (0x44);
		LCD_WR_Data(0x3c);

		LCD_WR_REG(0xC7); //VCM control
		LCD_WR_Data (0x9E);

		LCD_WR_REG(0x3A); // Memory Access Control
		LCD_WR_Data (0x55);

		LCD_WR_REG(0x36); // Memory Access Control
		LCD_WR_Data (0x48);

		LCD_WR_REG(0xB1);
		LCD_WR_Data (0x00);
		LCD_WR_Data (0x17);

		LCD_WR_REG(0xB6); // Display Function Control
		LCD_WR_Data (0x0A);
		LCD_WR_Data(0x82);//A2	

		LCD_WR_REG(0xF2); // 3Gamma Function Disable
		LCD_WR_Data (0x00);

		LCD_WR_REG(0x26); //Gamma curve selected
		LCD_WR_Data (0x01);

		LCD_WR_REG(0xE0); //Set Gamma
		LCD_WR_Data (0x0F);
		LCD_WR_Data (0x22);
		LCD_WR_Data(0x1C);
		LCD_WR_Data (0x1B);
		LCD_WR_Data(0x08);
		LCD_WR_Data(0x0F);
		LCD_WR_Data (0x48);
		LCD_WR_Data(0xB8);
		LCD_WR_Data (0x34);
		LCD_WR_Data(0x05);
		LCD_WR_Data (0x0C);
		LCD_WR_Data(0x09);
		LCD_WR_Data(0x0F);
		LCD_WR_Data (0x07);
		LCD_WR_Data(0x00);

		LCD_WR_REG(0XE1); //Set Gamma
		LCD_WR_Data (0x00);
		LCD_WR_Data (0x23);
		LCD_WR_Data (0x24);
		LCD_WR_Data (0x07);
		LCD_WR_Data (0x10);
		LCD_WR_Data (0x07);
		LCD_WR_Data (0x38);
		LCD_WR_Data (0x47);
		LCD_WR_Data (0x4B);
		LCD_WR_Data (0x0A);
		LCD_WR_Data (0x13);
		LCD_WR_Data (0x06);
		LCD_WR_Data (0x30);
		LCD_WR_Data (0x38);
		LCD_WR_Data (0x0F);
		LCD_WR_REG(0x11); //Exit Sleep
		delay_ms(500);
		LCD_WR_REG(0x29); //Display on
		LCD_Mode(0);	
		LCD_WR_REG(0x2c);
		}					 
}