⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gamma.c

📁 TFT LCD驱动芯片T100A+AU7" Source code
💻 C
字号:
#include <reg51.h>
#include "common.h"
#include "System.h"
#include "TW101Reg.h"
#include "TwoWire.h"
#include "Gamma.h"
#include "GammaDat.h"

#define GM_RGB_ALL_SAME


//********************************************************************
//Gamma Table
//********************************************************************
char code GAMMAData[]={
    0x50,39,
	  0x93,1,
		0x00,
	  0x94,34,0x00,
    0x00,0x10,0x28,0x38,0x40,0x48,0x50,0x58,
    0x60,0x68,0x70,0x78,0x80,0x84,0x88,0x8c,
    0x90,0x94,0x98,0x9c,0xA0,0xA8,0xB0,0xB8,
    0xC0,0xC8,0xD0,0xD8,0xE0,0xE8,0xF0,0xF8,0xFF,
    -1
};
char code FilterData[]={
//
0x50,92,
	0x70,1,
		0x81,
	0x71,84,0x00,
/*0x54,0x92,0x94,0x82,0xD4,0x72,0x15,0x6B,0x55,0x5B,0x96,0x53,0xB5,0x43,0xD5,0x3B,
0xF4,0x2B,0x14,0x24,0x34,0x1C,0x54,0x14,0x74,0x0C,0x94,0x04,0xB4,0xCC,0xB3,0xD4,
//H fitler coef data
0x15,0x60,0xB5,0x14,0x40,0xB5,0x13,0x20,0xB5,0x13,0x02,0xBD,0x13,0xC4,0xBC,0x34,0xA6,0xC4,
0x34,0x68,0xC4,0x34,0x2A,0xC4,0x54,0xEC,0xCB,0x55,0x90,0xCB,0x75,0x52,0xD3,0x96,0x14,0xD3,
0x96,0xB6,0xCA,0xB6,0x58,0xCA,0xD7,0xFA,0xC1,0xF7,0x9C,0xC1,
//V16/H_16
0x38,0xDF,0xDC,//*/

		//Vertical Filter Data output to register
		0x00,0x82,0x51,0x7A,0x71,0x72,0x91,0x6A,
		0xB1,0x62,0xD1,0x5A,0xF1,0x52,0x11,0x4B,
		0x31,0x43,0x51,0x3B,0x71,0x33,0x91,0x2B,
		0xB1,0x23,0xD1,0x1B,0xF1,0x13,0xE0,0x0B,
		//H fitler coef data
		0x00,0x00,0x04,0x00,0xE2,0x8B,0x11,0xC4,
		0x8B,0x11,0x86,0x8B,0x11,0x68,0x93,0x11,
		0x2A,0x93,0x32,0x0C,0x9B,0x32,0xCE,0x9A,
		0x32,0x90,0x9A,0x32,0x52,0x9A,0x52,0x14,
		0xA2,0x52,0xD6,0xA1,0x52,0x98,0xA1,0x72,
		0x58,0x99,0x93,0x1A,0x99,0x93,0xDC,0x98,
		//V16/H_16
		0x93,0x1E,0x04,//*/
	0x70,1,
		0xB0,
-1
};

/****************************************************************/
/*                                                              */
/*                                                              */
/*                                                              */
/****************************************************************/

void I2CWriteTbl(char *pString)
{
    uCHAR cAddr,cReg,cNum0,cNum1,cINC;
    while(*pString != -1)
    {
		    cAddr	=	*pString++;
		    cNum0	=	*pString++;
		    while(cNum0)
		    {
			      cReg	=	*pString++;
			      cNum1	=	*pString++;
			      cNum0 -=	(cNum1+2);
			      if(cNum1!=1)
			      {
				        cINC	=	*pString++;
				        cNum1  -=	1;
			      }
			      while(cNum1--)
			      {
				        I2CWriteByte(cAddr,cReg,*pString++);
			 	        cReg+=cINC;
			      }
		    }
    }
}


void LoadGammaTable(uCHAR cGammaModeID)
{
//    I2CWriteTbl(GAMMAData);
//		I2CWriteTbl(FilterData);
#if 1
  	uCHAR	i;
	uCHAR c;
	unsigned char code *p=pcGammaData[cGammaModeID];
	unsigned char code *pg=pcGammaData[cGammaModeID];
	unsigned char code *pb=pcGammaData[cGammaModeID];

#ifndef GM_RGB_ALL_SAME
	uCHAR j;
	uCHAR code **ppcGm;
	uCHAR code *pcGm=pcGammaData[cGammaModeID];
#endif // GM_RGB_ALL_SAME

//disable I2C Auto_Inc_Address
  	I2CWriteByte(TW101,TW_INTERFACE,I2CReadByte(TW101,TW_INTERFACE)&~AUTO_INC);
//
#if 1//def GM_RGB_ALL_SAME
  	I2CWriteByte(TW101,IMG_FUN_CTRL,(I2CReadByte(TW101,IMG_FUN_CTRL)&0x3f)|0xc0);
  	I2CWriteByte(TW101,GAMMA_ADDR,0x00);

  	for(i=0;i<GAMMA_TABLE_DATA_SIZE;i++) {
		c=*p++;
//		if(c)c=c-c/16;
		I2CWriteByte(TW101,GAMMA_DATA,(c));
	}
  	I2CWriteByte(TW101,IMG_FUN_CTRL,(I2CReadByte(TW101,IMG_FUN_CTRL)&0x3f)|0x80);
  	I2CWriteByte(TW101,GAMMA_ADDR,0x00);
  	for(i=0;i<GAMMA_TABLE_DATA_SIZE;i++) {
		c=*pg++;
		I2CWriteByte(TW101,GAMMA_DATA,c);
	}
  	I2CWriteByte(TW101,IMG_FUN_CTRL,(I2CReadByte(TW101,IMG_FUN_CTRL)&0x3f)|0x40);
  	I2CWriteByte(TW101,GAMMA_ADDR,0x00);
  	for(i=0;i<GAMMA_TABLE_DATA_SIZE;i++) {
		c=*pb++;
		I2CWriteByte(TW101,GAMMA_DATA,c);
	}
		//11.13 I2CWriteByte(TW101,GAMMA_DATA,pcGammaDataRGB[cGammaModeID][i]);
#endif // GM_RGB_ALL_SAME
#if 0 //def GM_RGB_ALL_SAME
  	I2CWriteByte(TW101,IMG_FUN_CTRL,I2CReadByte(TW101,IMG_FUN_CTRL)&GAMMA_RGB);
  	I2CWriteByte(TW101,GAMMA_ADDR,0x00);

  	for(i=0;i<GAMMA_TABLE_DATA_SIZE;i++) {
		c=*p++;
		I2CWriteByte(TW101,GAMMA_DATA,c);
	}
		//11.13 I2CWriteByte(TW101,GAMMA_DATA,pcGammaDataRGB[cGammaModeID][i]);
#endif // GM_RGB_ALL_SAME

#ifndef GM_RGB_ALL_SAME

	ppcGm = pcGammaData + cGammaModeID*GAMMA_PNUM;
	for(j=3;j<=1;j--){
		pcGm = *ppcGm++;
	  	I2CWriteByte(TW101,IMG_FUN_CTRL,(I2CReadByte(TW101,IMG_FUN_CTRL)& ~GAMMA_CTL_MSK)|(j<<6));
  		I2CWriteByte(TW101,GAMMA_ADDR,0x00);
  		for(i=0;i<33;i++)
			I2CWriteByte(TW101,GAMMA_DATA,pcGm[i]);
  	}
#endif // GM_RGB_ALL_SAME

//  I2CWriteByte(TW101,IMG_FUN_CTRL,I2CReadByte(TW101,IMG_FUN_CTRL)|ENGAMMA);
  I2CWriteByte(TW101,TW_INTERFACE,I2CReadByte(TW101,TW_INTERFACE)|AUTO_INC);

    return;
#endif		
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -