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

📄 useradj.c

📁 NOVATEK公司的LCD_CONTROLLER源代码 液晶显示器驱动板源代码NT68521
💻 C
字号:
#include "F63REG.H"
#include "UserAdj.H"
#include "RAM.H"
#include "IIC.H"
#include "MyDef.H"
#include "stdio.h"
#include "Scaler.H"
#include "IIC.H"
#include "Rom_map.H"
#include "OSD.H"
#include "MCU.H"
#include "OSD_TAB.H"
#include "sRGB.H"
#include "SAA7114.H"

code unsigned char ColorTab[]={
	0,1,2,3		//USER,6500k,7500k,9300K
};

void InverterUp(void)
{
	if(++Inverter > 100)
		Inverter = 100;
	else{
		SetInverter();
		ShowInverter();
	}
}

void InverterDown(void)
{
	if(--Inverter == 0xff)
		Inverter = 0x00;
	else{
		SetInverter();
		ShowInverter();
	}
}

void BrightnessUp(void)
{
	if(++Brightness > 100)
		Brightness = 100;
	else{
		if(PowerStatus == 0x80)
			SetBrightness();
		else
			SetVideoBrightness();
		ShowBrightness();
	}
}

void BrightnessDown(void)
{
	if(--Brightness == 0xff)
		Brightness = 0x00;
	else{
		if(PowerStatus == 0x80)
			SetBrightness();
		else
			SetVideoBrightness();
		ShowBrightness();
	}
}

void ContrastUp(void)
{
	if(++Contrast > 100)
		Contrast = 100;
	else{
		if(PowerStatus == 0x80)
			sRGB();
		else
			SetVideoContrast();
		ShowContrast();
	}
}

void ContrastDown(void)
{
	if(--Contrast == 0xff)
		Contrast = 0x00;
	else{
		if(PowerStatus == 0x80)
			sRGB();
		else
			SetVideoContrast();
		ShowContrast();
	}
}

void ClockUp(void)
{
	if(++HTotal > Clk_Max)
		HTotal = Clk_Max;
	else{
		SetADC_PLL();
		ShowClock();
	}
}

void ClockDown(void)
{
	if(--HTotal < Clk_Min)
		HTotal = Clk_Min;
	else{
		SetADC_PLL();
		ShowClock();
	}
}

void PhaseUp(void)
{
	if(++ADC_Phase > 0x3f)
		ADC_Phase = 0x3f;
	else{
		SetADC_Phase();
		ShowPhase();
	}
}

void PhaseDown(void)
{
	if(--ADC_Phase == 0xff)
		ADC_Phase = 0x00;
	else{
		SetADC_Phase();
		ShowPhase();
	}
}

void HP_Up(void)
{
	if(++HP_Start > HP_Max)
		HP_Start = HP_Max;
	else{
		SetHP();
		ShowHP();
	}
}

void HP_Down(void)
{
	if(--HP_Start < HP_Min)
		HP_Start = HP_Min;
	else{
		SetHP();
		ShowHP();
	}
}

void VP_Up(void)
{
	if(++VP_Start > VP_Max)
		VP_Start = VP_Max;
	else{
		SetVP();
		ShowVP();
	}
}

void VP_Down(void)
{
	if(--VP_Start == 0xffff)
		VP_Start = 0x00;
	else{
		SetVP();
		ShowVP();
	}
}

void Recall(void)
{
unsigned short addr;
unsigned char i;
	if((flag3 & BIT_0) == 0){
		if(PowerStatus == 0x80){
// mode recall : Brightness/Contrast/Sharpness/Clock/HP/VP/Phase/User Color = Standard Color
			if(ModePoint < UserModeSt){
				addr = 0x100 + (ModePoint * 8);
				for(i=0; i<6; i++){
					Write24C16(addr,MCU_DataMap[addr]);
					addr++;
				}
				addr++;
				Write24C16(addr,MCU_DataMap[addr]);
			}
			Write24C16(0xdd,MCU_DataMap[0xdd]);	//osd position x
			Write24C16(0xde,MCU_DataMap[0xde]);	//osd position y
			Write24C16(0xcf,MCU_DataMap[0xcf]);	//osd time
			Write24C16(0xd0,MCU_DataMap[0xd0]);	//Brightness
			Write24C16(0xd1,MCU_DataMap[0xd1]);	//Contrast
			Write24C16(0xd4,MCU_DataMap[0xd4]);	//Volume
			Write24C16(0xc8,MCU_DataMap[0xc8]);	//sRGB saturation
			Write24C16(0xc9,MCU_DataMap[0xc9]);	//sRGB Tint
		
			Write24C16(0xee,Read24C16(0xf1));	//R Gain
			Write24C16(0xef,Read24C16(0xf2));	//G Gain
			Write24C16(0xf0,Read24C16(0xf3));	//B Gain
			LoadModeIndependentSettings();
			LoadModeDependentSettings();
			SetADC_PLL();
			SetADC_Phase();
			SetScaler();
			SetSharpness();
			SetBrightness();
			sRGB();
			SetVolume();
		}
		else if((PowerStatus == 0x81)||(PowerStatus == 0x82)){
			Brightness = MCU_DataMap[0xd6];		//0xd6 = brightness
			Contrast = MCU_DataMap[0xd7];		//0xd7 = contrast
			Saturation = MCU_DataMap[0xd8];		//0xd8 = video saturation
			Tint = MCU_DataMap[0xd9];			//0xd6 = video hue
			Sharpness = MCU_DataMap[0xda];		//0xda = Sharpness(video)
			Write24C16(0xd6,Brightness);		//0xd6 = brightness
			Write24C16(0xd7,Contrast);			//0xd7 = contrast
			Write24C16(0xd8,Saturation);		//0xd8 = video saturation
			Write24C16(0xd9,Tint);				//0xd6 = video hue
			Write24C16(0xda,Sharpness);			//0xda = Sharpness(video)
			SetVideoBrightness();
			SetVideoContrast();
			SetVideoSaturation();
			SetVideoTint();
			SetVideoSharpness();
		}
	}
	else{
		ResetEEPROM();
	}
}

void ResetEEPROM(void)
{
unsigned short addr;
	for(addr=0; addr<0xe0; addr=addr+16)
		WritePage24C16(addr,addr,MCU_DataMap);
	for(addr=0x100; addr<0x280; addr=addr+16)
		WritePage24C16(addr,addr,MCU_DataMap);
	for(addr=0; addr<50; addr++){
		Write24C16(0x290+addr*2,MCU_DataMap[0x104+addr*8]);
		Write24C16(0x291+addr*2,MCU_DataMap[0x105+addr*8]);
	}
	Write24C16(0xe0,MCU_DataMap[0xe0]);	//language
	Write24C16(0xe1,MCU_DataMap[0xe1]);	//color temperature select
	flag1 |= BIT_7;
	Write24C16(0xea,Version);
	Write24C16(0xeb,Reversion);
}

void OSD_X_Up(void)
{
	if(++OSD_X > 100)
		OSD_X = 100;
	else{
		SetPosition();
		ShowOSD_X();
	}
}

void OSD_X_Down(void)
{
	if(--OSD_X == 0xff)
		OSD_X = 0;
	else{
		SetPosition();
		ShowOSD_X();
	}
}

void OSD_Y_Up(void)
{
	if(++OSD_Y > 100)
		OSD_Y = 100;
	else{
		SetPosition();
		ShowOSD_Y();
	}
}

void OSD_Y_Down(void)
{
	if(--OSD_Y == 0xff)
		OSD_Y = 0;
	else{
		SetPosition();
		ShowOSD_Y();
	}
}

void OSD_TimerUp(void)
{
	if(++OSD_Timer > 100)
		OSD_Timer = 100;
	else{
		ShowOSD_Timer();
	}
}

void OSD_TimerDown(void)
{
	if(--OSD_Timer < 5)
		OSD_Timer = 5;
	else{
		ShowOSD_Timer();
	}
}

void LoadModeIndependentSettings(void)
{
unsigned char k;
	Sharpness = Read24C16(0xca);	//0xca = Sharpness
	Inverter = Read24C16(0xd5);		//0xd5 = inverter
	Brightness = Read24C16(0xd0);	//0xd0 = brightness
	Contrast = Read24C16(0xd1);		//0xd1 = contrast
	Saturation = Read24C16(0xc8);	//0xc8 = Saturation
	Tint = Read24C16(0xc9);			//0xc9 = Tint
	Volume = Read24C16(0xd4);		//0xd1 = volume
	OSD_X = Read24C16(0xdd);		//0xdd = osd position x
	OSD_Y = Read24C16(0xde);		//0xdd = osd position y
	OSD_Timer = Read24C16(0xcf);	//0xcf = osd timer
	Language = Read24C16(0xe0);		//0xe0 = Language
	k = Read24C16(0xe1);
	k = ColorTab[k];
	if((k == 0)||((flag3 & BIT_0) != 0))
		flag2 &= ~BIT_5;
	else
		flag2 |= BIT_5;
	k = k * 3 + 0xee;			//Select color temperature
	R_Gain = Read24C16(k);
	k++;
	G_Gain = Read24C16(k);
	k++;
	B_Gain = Read24C16(k);
}

void LoadModeDependentSettings(void)
{
//	Sharp,V_BP,H_BP,H_Tatol,Phase
unsigned short addr;
	addr = 0x101 + (ModePoint * 8);
	VP_Start = Read24C16(addr);
	addr++;
	HP_Start = Read24C16(addr);
	addr++;
	HP_Start <<= 8;
	HP_Start |= Read24C16(addr);
	addr++;
	HTotal = Read24C16(addr);
	addr++;
	HTotal <<= 8;
	HTotal |= Read24C16(addr);
	addr = addr + 2;
	ADC_Phase = Read24C16(addr);
}

void SaveModeDependentSettings(void)
{
unsigned short addr;
	addr = 0x100 + (ModePoint * 8);
	Write24C16(addr,Sharpness);
	addr++;
	Write24C16(addr,(unsigned char)VP_Start);
	addr++;
	Write24C16(addr,(unsigned char)(HP_Start >> 8));
	addr++;
	Write24C16(addr,(unsigned char)HP_Start);
	addr++;
	Write24C16(addr,(unsigned char)(HTotal >> 8));
	addr++;
	Write24C16(addr,(unsigned char)HTotal);
	addr = addr + 2;
	Write24C16(addr,ADC_Phase);	
	addr = 0x290 + (ModePoint << 1);
	Write24C16(addr,(unsigned char)(HTotal >> 8));
	addr++;
	Write24C16(addr,(unsigned char)HTotal);	
}

void RGB_Up(void)
{
unsigned char value;
	switch(OSD_Point2){
	case R_GainNode:
		value = R_Gain;
		break;
	case G_GainNode:
		value = G_Gain;
		break;
	case B_GainNode:
		value = B_Gain;
		break;
	}
	if(++value > 100)
		value = 100;
	else{
		switch(OSD_Point2){
		case R_GainNode:
			R_Gain = value;
			break;
		case G_GainNode:
			G_Gain = value;
			break;
		case B_GainNode:
			B_Gain = value;
			break;
		}
		sRGB();
		ShowRGB();
	}
}

void RGB_Down(void)
{
unsigned char value;
	switch(OSD_Point2){
	case R_GainNode:
		value = R_Gain;
		break;
	case G_GainNode:
		value = G_Gain;
		break;
	case B_GainNode:
		value = B_Gain;
		break;
	}
	if(--value == 0xff)
		value = 0;
	else{
		switch(OSD_Point2){
		case R_GainNode:
			R_Gain = value;
			break;
		case G_GainNode:
			G_Gain = value;
			break;
		case B_GainNode:
			B_Gain = value;
			break;
		}
		sRGB();
		ShowRGB();
	}
}

void ColorTempUp(void)
{
unsigned char i;
	i = Read24C16(0xe1);
	FillLineAttr(7,i+6,23,TextColor);
	if(--i == 0xff){
		i = 3;
	}
	FillLineAttr(7,i+6,23,TextSelColor);
	Write24C16(0xe1,i);
	i = ColorTab[i];
	if((i == 0)||((flag3 & BIT_0) != 0))
		flag2 &= ~BIT_5;
	else
		flag2 |= BIT_5;
	i = i * 3 + 0xee;			//Select color temperature
	R_Gain = Read24C16(i);
	i++;
	G_Gain = Read24C16(i);
	i++;
	B_Gain = Read24C16(i);
	sRGB();
	CheckRGB();
}

void ColorTempDown(void)
{
unsigned char i;
	i = Read24C16(0xe1);
	FillLineAttr(7,i+6,23,TextColor);
	if(++i > 3){
		i = 0;
	}
	FillLineAttr(7,i+6,23,TextSelColor);
	Write24C16(0xe1,i);
	i = ColorTab[i];
	if((i == 0)||((flag3 & BIT_0) != 0))
		flag2 &= ~BIT_5;
	else
		flag2 |= BIT_5;
	i = i * 3 + 0xee;			//Select color temperature
	R_Gain = Read24C16(i);
	i++;
	G_Gain = Read24C16(i);
	i++;
	B_Gain = Read24C16(i);
	sRGB();
	CheckRGB();
}

void LanguageUp(void)
{
unsigned char i;
	i = Language >> 1;
	if((Language & BIT_0) == 0)
		FillLineAttr(8,i+6,11,TextColor);
	else
		FillLineAttr(19,i+6,11,TextColor);
	if(--Language == 0xff){
		Language = 6;
	}
	i = Language >> 1;
	if((Language & BIT_0) == 0)
		FillLineAttr(8,i+6,11,TextSelColor);
	else
		FillLineAttr(19,i+6,11,TextSelColor);
	Write24C16(0xe0,Language);
	if(PowerStatus == 0x80){
		i = Language * 25 + OSD_Point2;
		WriteXY_CStrScaler(0,7,3,23,Tab1[i]);
	}
	else{
		i = Language * 11 + OSD_Point2;
		WriteXY_CStrScaler(0,7,3,23,VideoTab1[i]);
	}
}

void LanguageDown(void)
{
unsigned char i;
	i = Language >> 1;
	if((Language & BIT_0) == 0)
		FillLineAttr(8,i+6,11,TextColor);
	else
		FillLineAttr(19,i+6,11,TextColor);
	if(++Language > 6){
		Language = 0;
	}
	i = Language >> 1;
	if((Language & BIT_0) == 0)
		FillLineAttr(8,i+6,11,TextSelColor);
	else
		FillLineAttr(19,i+6,11,TextSelColor);
	Write24C16(0xe0,Language);
	if(PowerStatus == 0x80){
		i = Language * 25 + OSD_Point2;
		WriteXY_CStrScaler(0,7,3,23,Tab1[i]);
	}
	else{
		i = Language * 11 + OSD_Point2;
		WriteXY_CStrScaler(0,7,3,23,VideoTab1[i]);
	}
}

void SaturationUp(void)
{
	if(++Saturation > 100)
		Saturation = 100;
	else{
		if(PowerStatus == 0x80)
			sRGB();
		else
			SetVideoSaturation();
		ShowSaturation();
	}
}

void SaturationDown(void)
{
	if(--Saturation == 0xff)
		Saturation = 0x00;
	else{
		if(PowerStatus == 0x80)
			sRGB();
		else
			SetVideoSaturation();
		ShowSaturation();
	}
}

void TintUp(void)
{
	if(++Tint > 100)
		Tint = 100;
	else{
		if(PowerStatus == 0x80)
			sRGB();
		else
			SetVideoTint();
		ShowTint();
	}
}

void TintDown(void)
{
	if(--Tint == 0xff)
		Tint = 0x00;
	else{
		if(PowerStatus == 0x80)
			sRGB();
		else
			SetVideoTint();
		ShowTint();
	}
}

void SharpnessUp(void)
{
	if(++Sharpness > 7)
		Sharpness = 7;
	else{
		if(PowerStatus == 0x80)
			SetSharpness();
		else
			SetVideoSharpness();
		ShowSharpness();
	}
}

void SharpnessDown(void)
{
	if(--Sharpness == 0xff)
		Sharpness = 0x00;
	else{
		if(PowerStatus == 0x80)
			SetSharpness();
		else
			SetVideoSharpness();
		ShowSharpness();
	}
}

void SourceSelect(void)
{
	if(PowerStatus < 0x80)
		return;
	switch(PowerStatus & ~BIT_7){
	case 0x00:
		VideoDisable();
		ForceToBackground(0);
		WriteIIC_HW(Scaler_Addr,0x00,0x30);
		WriteIIC_HW(Scaler_Addr,0xE8,0xc0);
		WriteIIC_HW(Scaler_Addr,0x12,0x00);
		WriteIIC_HW(Scaler_Addr,0x13,0x00);
		H_SYNC_Temp = 0xffff;
		V_SYNC_Temp = 0xffff;
		LoadModeIndependentSettings();
		SetBrightness();
		sRGB();
		if((flag3 & BIT_2) != 0x00){
			printf("Select PC Input\r\n");
		}
		break;
	case 0x01:
		SAA7114Init();
		ShowInputSource();
		if((flag3 & BIT_2) != 0x00){
			printf("Select Video 1 Input\r\n");
		}
		break;
	case 0x02:
		SAA7114Init();
		ShowInputSource();
		if((flag3 & BIT_2) != 0x00){
			printf("Select Video 2 Input\r\n");
		}
		break;
	}
	OSD_Point1 = 0;
	OSD_Point2 = 0;
}


⌨️ 快捷键说明

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