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

📄 scalar.c

📁 NT68617源程序代码集合
💻 C
📖 第 1 页 / 共 3 页
字号:
	BfWin_All,			//BF_ALL,
};

uint16 code bfsrgbinit[] = {
	//0xF3, 0xF4, 0xE2,
	0x100, 0x100, 0x100,
};

/*
********************************************************************************
* 	函 数 名: SarSetBrightFrame
* 	功能描述: 设置亮帧的大小和位置,如果Pos的值为OFF,那么表示关闭亮帧
* 	输    入: BF	: 0 亮帧0
*					: 1 亮帧1
*			  Pos	: 亮帧的大小和位置,这是标准化的10种选择
* 	返    回: 无
********************************************************************************
*/
void SarSetBrightFrame(uint8 BF, uint8 Pos)
{
	uint16 *posptr;

	if (Pos == BF_OFF)  SarBF3Disable(BF);
	else  SarBF3Enable(BF);
	posptr = BfWin[Pos - 1];
	WrScalarReg(rP131, BF);
	WrScalarWord(rP132, posptr[0]);
	WrScalarWord(rP134, posptr[1]);
	WrScalarWord(rP136, posptr[2]);
	WrScalarWord(rP138, posptr[3]);

	if (Pos == BF_ALL || Pos == BF_OFF)  SarBF3DisBoard(BF);
	else  SarBF3EnBoard(BF);

	SarBF3sRGB(bfsrgbinit);
}


/*
********************************************************************************
* 	函 数 名: SarBF3Enable
* 	功能描述: 允许亮帧显示
* 	输    入: BF	: 0 亮帧0
*					: 1 亮帧1
* 	返    回: 无
********************************************************************************
*/
void SarBF3Enable(bit bf)
{
	if (bf)  WrScalarRegBit(rP130, 0x12, 0x12);
	else WrScalarRegBit(rP130, 0x11, 0x11);
}


/*
********************************************************************************
* 	函 数 名: SarBF3Disable
* 	功能描述: 禁止亮帧显示
* 	输    入: BF	: 0 亮帧0
*					: 1 亮帧1
* 	返    回: 无
********************************************************************************
*/
void SarBF3Disable(bit bf)
{
	if (bf)  WrScalarRegBit(rP130, 0x10, 0x12);
	else WrScalarRegBit(rP130, 0x10, 0x11);
}


/*
********************************************************************************
* 	函 数 名: SarBF3Enable
* 	功能描述: 允许亮帧显示边框
* 	输    入: BF	: 0 亮帧0
*					: 1 亮帧1
* 	返    回: 无
********************************************************************************
*/
void SarBF3EnBoard(bit bf)
{
	if (bf) WrScalarRegBit(rP390, 0x80, 0x80);
	else  WrScalarRegBit(rP390, 0x40, 0x40);
}


/*
********************************************************************************
* 	函 数 名: SarBF3DisBoard
* 	功能描述: 禁止亮帧显示边框
* 	输    入: BF	: 0 亮帧0
*					: 1 亮帧1
* 	返    回: 无
********************************************************************************
*/
void SarBF3DisBoard(bit bf)
{
	if (bf) WrScalarRegBit(rP390, 0x00, 0x80);
	else  WrScalarRegBit(rP390, 0x00, 0x40);
}


/*
********************************************************************************
* 	函 数 名: SarBF3sRGB
* 	功能描述: 设置亮帧的sRGB矩阵
* 	输    入: Tbl	: RGB的表格入口地址
* 	返    回: 无
********************************************************************************
*/
void SarBF3sRGB(uint16 *Tbl)
{
	WrScalarReg(rP1D0, 0x61);
	WrScalarWord(rP1D1, Tbl[0]);
	WrScalarWord(rP1D3, 0);
	WrScalarWord(rP1D5, 0);
	
	WrScalarReg(rP1D0, 0x63);
	WrScalarWord(rP1D1, 0);
	WrScalarWord(rP1D3, Tbl[1]);
	WrScalarWord(rP1D5, 0);
	
	WrScalarReg(rP1D0, 0x65);
	WrScalarWord(rP1D1, 0);
	WrScalarWord(rP1D3, 0);
	WrScalarWord(rP1D5, Tbl[2]);
	
	WrScalarReg(rP1D0, 0x7D);		// old value 0xED
}


#if EN_BF3ACCMODE
//uint16 code IG0[9]={0x000,0x082,0x104,0x186,0x204,0x282,0x302,0x382,0x400};	// normal
//uint16 code IG1[9]={0x000,0x090,0x110,0x190,0x210,0x290,0x310,0x390,0x400}; // increase L+H
//uint16 code IG2[9]={0x000,0x07E,0x0FE,0x17D,0x200,0x278,0x2F0,0x360,0x400}; // photo
//uint16 code IG3[9]={0x000,0x080,0x100,0x180,0x200,0x280,0x300,0x380,0x400}; //
//uint16 code IG4[9]={0x000,0x090,0x110,0x186,0x200,0x280,0x300,0x380,0x400};	// normal
//uint16 code IG5[9]={0x000,0x07C,0x0f8,0x178,0x200,0x288,0x308,0x384,0x400};	// normal
//uint16 code IG6[9]={0x000,0x080,0x100,0x180,0x200,0x240,0x340,0x380,0x400};	// test

uint8 code IG0[18]={0x00,0x00, 0x82,0x02, 0x04,0x01, 0x86,0x01, 0x04,0x02,
	0x82,0x02, 0x02,0x03, 0x82,0x03, 0x00,0x04};	// normal
uint8 code IG1[18]={0x00,0x00, 0x90,0x00, 0x10,0x01, 0x90,0x01, 0x10,0x02,
	0x90,0x02, 0x10,0x03, 0x90,0x03, 0x00,0x04}; // increase L+H
uint8 code IG2[18]={0x00,0x00, 0x7E,0x00, 0xFE,0x00, 0x7D,0x01, 0x00,0x02,
	0x78,0x02, 0xF0,0x02, 0x60,0x03, 0x00,0x04}; // photo
uint8 code IG3[18]={0x00,0x00, 0x80,0x00, 0x00,0x01, 0x80,0x01, 0x00,0x02,
	0x80,0x02, 0x00,0x03, 0x80,0x03, 0x00,0x04}; //
uint8 code IG4[18]={0x00,0x00, 0x90,0x00, 0x10,0x01, 0x86,0x01, 0x00,0x02,
	0x80,0x02, 0x00,0x03, 0x80,0x03, 0x00,0x04};	// normal
uint8 code IG5[18]={0x00,0x00, 0x7C,0x00, 0xF8,0x00, 0x78,0x01, 0x00,0x02,
	0x88,0x02, 0x08,0x03, 0x84,0x03, 0x00,0x04};	// normal
uint8 code IG6[18]={0x00,0x00, 0x80,0x00, 0x00,0x01, 0x80,0x01, 0x00,0x02,
	0x40,0x02, 0x40,0x03, 0x80,0x03, 0x00,0x04};	// test

/*
********************************************************************************
* 	函 数 名: SarBF3WriteIG
* 	功能描述: 更新动态gamma的值
* 	输    入: BF	: 指明所操作的亮帧窗口
*			  i		: 指明写入的表项
* 	返    回: 无
********************************************************************************
*/
void SarBF3WriteIG(uint8 BF, uint8 i)
{
#if 0
uint8 code IG[18] ={0x00,0x00, 0x80,0x00, 0x00,0x01, 0x80,0x01, 0x00,0x02, 
	0x40,0x02,	0x40,0x03, 0x80,0x03, 0x00,0x04};

	uint8 x;

	WrScalarReg(rP3B1, 0x5A);
	for (x = 0; x < 18; x++) WrScalarReg(rP3B2, IG[x]);
	WrScalarReg(rP3B1, 0xDA);
	Delay(200);
	WrScalarReg(rP3B1, 0x1A);
#endif

	uint8 x;
	uint8 *temp;
	
	switch(i) {
		case 0:		temp = IG0; break;
		case 1:		temp = IG1; break;
		case 2:		temp = IG2; break;
		case 3:		temp = IG3; break;
		case 4: 	temp = IG4; break;
		case 5: 	temp = IG5; break;
		case 6:		temp = IG6;	break;
		}
	if (BF) WrScalarReg(rP3B1, 0x7A);			//select 8 levels ACC
	else WrScalarReg(rP3B1, 0x5A);
#if 0
	for(x = 0; x < 9; x++) {
		WrScalarReg(rP3B2, (*temp + x) & 0xFF);	
		WrScalarReg(rP3B2, (*temp + x) >> 8);		//select 8 levels ACC
		temp++;
    	} 
#endif
	WrScalarBytes(rP3B2, 18, temp);
	if (BF)  WrScalarReg(rP3B1, 0xFA);
	else  WrScalarReg(rP3B1, 0xDA);
}



void SarBF3ACCPoll(void)
{
	WrScalarReg(rP3B0, 0x15);	//select 8 levels ACC
	SarBF3WriteIG(0, 6);
}


bit Flg_WaitHT = 0;

//	check histogram to turn-on or turn-off ACC
void SarBF3ACCCheck(uint8 BF)
{	
	uint8 b0,b1,b2;
	
	if ((SysPar.Flag & FLAG_POWER) || SysState != SYS_NORMAL) return;

	if(Flg_WaitHT) {
		if(RdScalarReg(rP3B1) & 0x01)	return; 
		Flg_WaitHT = 0;

		b0 = RdScalarReg(rP3B2);
		//b0 = RdScalarReg(rP3B2);
    	b0 += RdScalarReg(rP3B2);
		
		b2 = RdScalarReg(rP3B2); 
		b2 = RdScalarReg(rP3B2); 
		b2 += RdScalarReg(rP3B2); 
		
		b1 = RdScalarReg(rP3B2);
		b1 = RdScalarReg(rP3B2);
    	b1 += RdScalarReg(rP3B2);
/*		
		//if(FuncBuf[pACCMODE] ==0 || FuncBuf[pACCMODE] ==1) { //now
 			if(b0 > 3) {
				if(b1 <2) SarBF3WriteIG(0, 1); //increase all
				else	SarBF3WriteIG(0, 3);	 //only increase low
			}
			else if(b1>4) SarBF3WriteIG(0, 3);	 //only increase low 
			else if(b2>4) SarBF3WriteIG(0, 5); //increase all
 			else SarBF3WriteIG(0, 0); //increase al 
		//}
*/
		//else if(FuncBuf[pACCMODE] ==2) { //now
 			if(b0 > 3) {
				if(b1 <2) SarBF3WriteIG(BF, 3); //increase all
				else	SarBF3WriteIG(BF, 4);	 //only increase low
			}
			else if(b1>4) SarBF3WriteIG(BF, 3);	 //only increase low 
			else if(b2>4) SarBF3WriteIG(BF, 5); //increase all
 			else SarBF3WriteIG(BF, 0); //increase al 
		//}
 		}
	
	else {
		Flg_WaitHT = 1;
		if (BF)  WrScalarReg(rP3B1, 0x23);
		else WrScalarReg(rP3B1, 0x03);
		}
}
#endif


void SarColorToneEnable(void)
{
	WrScalarRegBit(rP3CC, B1110_0001, B1110_0001);
}


void SarColorToneDisable(void)
{
	WrScalarRegBit(rP3CC, B0000_0000, B1110_0001);
}


void SarBF3FleshTone(uint8 FtMore ) 
{
	uint8 signBit, i;
	
	if (FtMore > 127)
	{
		i = (uint16)(FtMore-128)*48/128;
		signBit = 0;
	}
	else
	{
		i = (uint16)(127 - FtMore)*48/128;
		signBit = 0x80;
	}

	WrScalarRegBit(rP3CC, 0x00, 0x02);
	WrScalarReg(rP3CD,0x01);
	WrScalarReg(rP3CE,0x00);
	WrScalarReg(rP3CF,(i/2) | signBit);
	WrScalarReg(rP3CE,0x01);
	WrScalarReg(rP3CF,((uint16)i*3/4) | signBit);
	WrScalarReg(rP3CE,0x02);
	WrScalarReg(rP3CF,i | signBit);
	WrScalarReg(rP3CE,0x03);
	WrScalarReg(rP3CF,((uint16)i*3/4) | signBit);
	WrScalarRegBit(rP3CC, 0x02, 0x02);
}


void SarBF3EnchGreen(uint8 GreenMore) 
{
	uint8 i;
	
	WrScalarRegBit(rP3CC, 0x00, 0x02);
	WrScalarReg(rP3CD, 0x02);
	WrScalarReg(rP3CE, 0x07);
	i = (GreenMore >> 1) + 0x40;
	WrScalarReg(rP3CF, i);
	WrScalarReg(rP3CF, GreenMore);
	WrScalarReg(rP3CF, i);
	WrScalarRegBit(rP3CC, 0x02, 0x02);
}

void SarBF3EnchBlue(uint8 BlueMore) 
{
	uint8 i;
	
	WrScalarRegBit(rP3CC, 0x00, 0x02);
	WrScalarReg(rP3CD, 0x02);
	WrScalarReg(rP3CE, 0x0F);
	i = (BlueMore >> 1) + 0x40;
	WrScalarReg(rP3CF, i);
	WrScalarReg(rP3CF, BlueMore);
	WrScalarReg(rP3CF, i);
	WrScalarRegBit(rP3CC, 0x02, 0x02);
}


void SarSetColorToneMode(uint8 mode)
{
	switch (mode)  {
		case CEM_LOW:
			SarBF3FleshTone(0xA0);
			SarBF3EnchGreen(0x90);
			SarBF3EnchBlue(0x90);
			SarColorToneEnable();
			break;

		case CEM_MIDDLE:
			SarBF3FleshTone(0xA0);
			SarBF3EnchGreen(0xA0);
			SarBF3EnchBlue(0xA0);
			SarColorToneEnable();
			break;

		case CEM_HIGH:
			SarBF3FleshTone(0xD0);
			SarBF3EnchGreen(0xC0);
			SarBF3EnchBlue(0xC0);
			break;

		case CEM_OFF:
			SarColorToneDisable();
			SarBF3FleshTone(0x80);
			SarBF3EnchGreen(0x80);
			SarBF3EnchBlue(0x80);
			break;
		}
}


#define DispMode4B3_Width		(PanelHeight/3)*4
#define DispMode4B3_Start		PanelHActiveStart+(PanelWidth - DispMode4B3_Width)/2
void SarDispMode_4B3(void)
{
	WrScalarWord(rP173, DispMode4B3_Start);
	WrScalarWord(rP175, DispMode4B3_Width);
}


void SarDispMode_Normal(void)
{
	WrScalarWord(rP173,PanelHActiveStart);
	WrScalarWord(rP175,PanelWidth);
}


void SarBF3YCPeaking_Enable(void)
{
	WrScalarReg(rP3A0, 0x11);
	WrScalarReg(rP3A1, 0x04);
}


void SarBF3YCPeaking_Disable(void)
{
	WrScalarReg(rP3A0, 0x10);
	WrScalarReg(rP3A1, 0x00);
}


#if EN_ACEROSD
#if EN_DDC_CI
void SarDDCCI_Enable(void)
{
	XFR_IIC0_ADDR = 0x6F;
	XFR_INTIIC0_EN = xB_INTA;
	XFR_INTIIC0_CLR = 0xFF;
}


void SarDDCCI_Disable(void)
{
	XFR_IIC0_ADDR = 0x6F;
	XFR_INTIIC0_EN = 0x00;
	XFR_INTIIC0_CLR = 0xFF;
}
#endif
#endif
/*
********************************************************************************
*                                文 件 结 束                                   *
********************************************************************************
*/

⌨️ 快捷键说明

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