📄 gamma.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 + -