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

📄 osd.c

📁 NT68521源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
code unsigned char String2[]={	21,"EN DEHORS DE LA PLAGE"};
code unsigned char String3[]={	17,"AUSSER REICHWEITE"};
code unsigned char String4[]={	14,"FUERA DE RANGO"};
code unsigned char String5[]={	11,"FUORI GAMMA"};
code unsigned char String6[]={	13,"BUITEN BEREIK"};
code unsigned char String7[]={	17,"FORA DO INTERVALO"};
code unsigned char String8[]={	4,0x99,0x9a,0x9b,0x9c};
code unsigned char *Tab1[]={ String1,String2,String3,String4,String5,String6,String7,String8};
	if((flag2 & BIT_3) == 0)
	{
//		ForceToBackground(0);	//Set fource to background
		OSD_Type = 5;
		Osd4Init();
		WriteWordIIC_HW(Scaler_Addr,0xcc,TextColor | BIT_0);
		WriteXY_CStrScaler(1,2,2,27,Tab1[Language]);
		OSD_Control |= BIT_0;
		WriteIIC_HW(Scaler_Addr,0x95,OSD_Control);
		AUDIO_MUTE();
		flag2 |= BIT_3;
		if((flag3 & BIT_2) != 0x00)
			printf("Out of range\r\n");
	}
	else{
		SetMovePosition();
	}
	OutOfRangeTimer = 500;
}

void ShowNoSync(void)
{
code unsigned char String1[]={	15,"NO INPUT SIGNAL"};
code unsigned char String2[]={	21,"PAS DE SIGNAL DENTR`E"};
code unsigned char String3[]={	19,"KEIN EINGANGSSIGNAL"};
code unsigned char String4[]={	23,"NO HAY SE@AL DE ENTRADA"};
code unsigned char String5[]={	26,"NESSUN SEGNALE IN INGRESSO"};
code unsigned char String6[]={	19,"GEEN INGANGSSIGNAAL"};
code unsigned char String7[]={	20,"SEM SINAL DE ENTRADA"};
code unsigned char String8[]={	6,0x99,0x9a,0x9b,0x9c,0x9d,0x9e};
code unsigned char *Tab1[]={ String1,String2,String3,String4,String5,String6,String7,String8};
//	ForceToBackground(0);	//Set fource to background
	OSD_Type = 4;
	Osd4Init();
	WriteWordIIC_HW(Scaler_Addr,0xcc,TextColor | BIT_0);
	WriteXY_CStrScaler(1,2,2,18,Tab1[Language]);
	OSD_Control |= BIT_0;
	WriteIIC_HW(Scaler_Addr,0x95,OSD_Control);
	if((flag3 & BIT_2) != 0x00)
		printf("No input signal\r\n");
}

void ShowDisconnector(void)
{
//code unsigned char String1[]={	12,"DISCONNECTOR"};
code unsigned char String1[]={	12,"DISCONNECTOR"};
code unsigned char String2[]={	21,"PAS DE SIGNAL DENTR`E"};
code unsigned char String3[]={	19,"KEIN EINGANGSSIGNAL"};
code unsigned char String4[]={	23,"NO HAY SE@AL DE ENTRADA"};
code unsigned char String5[]={	26,"NESSUN SEGNALE IN INGRESSO"};
code unsigned char String6[]={	19,"GEEN INGANGSSIGNAAL"};
code unsigned char String7[]={	20,"SEM SINAL DE ENTRADA"};
code unsigned char String8[]={	6,0x99,0x9a,0x9b,0x9c,0x9d,0x9e};
code unsigned char *Tab1[]={ String1,String2,String3,String4,String5,String6,String7,String8};
	if((flag2 & BIT_2) == 0)
	{
//		ForceToBackground(0);	//Set fource to background
		OSD_Type = 4;
		Osd4Init();
		WriteWordIIC_HW(Scaler_Addr,0xcc,TextColor | BIT_0);
		WriteXY_CStrScaler(1,2,2,18,Tab1[Language]);
		OSD_Control |= BIT_0;
		WriteIIC_HW(Scaler_Addr,0x95,OSD_Control);
		AUDIO_MUTE();
		flag2 |= BIT_2;
		if((flag3 & BIT_2) != 0x00)
			printf("DISCONNECTOR\r\n");
		flag1 &= ~BIT_1;		//gan///
		ForceToBackground(1);
	}
	else
	{
		SetMovePosition();
	}
}

void SetMovePosition(void)
{
unsigned short xy;
	if(MoveX < 0x8000){
		if(++MoveX > 150){
			MoveX |= 0x8000;
		}
	}
	else{
		if(--MoveX == 0x7fff){
			MoveX = 1;
		}
	}
	if(MoveY < 0x8000){
		if(++MoveY > 154){
			MoveY |= 0x8000;
		}
	}
	else{
		if(--MoveY == 0x7fff){
			MoveY = 1;
		}
	}
	xy = (MoveX & 0x7fff) * 6;
	WriteWordIIC_HW(Scaler_Addr,0x96,xy);
	if((flag3 & BIT_2) != 0x00)
		printf("OSD X = %d\r\n",xy);
	xy = (MoveY & 0x7fff) * 6;
	WriteWordIIC_HW(Scaler_Addr,0x99,xy);
	WriteIIC_HW(Scaler_Addr,0x98,OSD2_WIDTH-1);
	WriteIIC_HW(Scaler_Addr,0x9b,OSD2_HIGHT-1);
	if((flag3 & BIT_2) != 0x00)
		printf("OSD Y = %d\r\n",xy);
}

void SaveData(void)
{
unsigned short addr;
//	switch(SavePointer){
	if(SavePointer)
	{
//	case 1:
		if(PowerStatus == 0x80)
			Write24C16(0xd0,Brightness);
		else if(PowerStatus > 0x80)
			Write24C16(0xd6,Brightness);
//		break;
//	case 2:
		if(PowerStatus == 0x80)
			Write24C16(0xd1,Contrast);
		else if(PowerStatus > 0x80)
			Write24C16(0xd7,Contrast);
//		break;
//	case 3:
		addr = 0x104 + (ModePoint * 8);
		Write24C16(addr,(unsigned char)(HTotal >> 8));
		addr++;
		Write24C16(addr,(unsigned char)HTotal);
//		break;
//	case 4:
		addr = 0x107 + (ModePoint * 8);
		Write24C16(addr,ADC_Phase);
//		break;
//	case 5:
		addr = 0x102 + (ModePoint * 8);  //0x14a,ModePoint=6
		Write24C16(addr,(unsigned char)(HP_Start >> 8));
		addr++;
		Write24C16(addr,(unsigned char)HP_Start);
//		break;
//	case 6:
		addr = 0x101 + (ModePoint * 8);
		Write24C16(addr,(unsigned char)VP_Start);
//		break;
//	case 7:
		addr = Read24C16(0xe1);
		addr = ColorTab[addr];
		addr = addr * 3 + 0xee;
		Write24C16(addr,R_Gain);
//		break;
//	case 8:
		addr = Read24C16(0xe1);
		addr = ColorTab[addr];
		addr = addr * 3 + 0xef;
		Write24C16(addr,G_Gain);
//		break;
//	case 9:
		addr = Read24C16(0xe1);
		addr = ColorTab[addr];
		addr = addr * 3 + 0xf0;
		Write24C16(addr,B_Gain);
//		break;
//	case 10:
		Write24C16(0xd4,Volume);
//		break;
//	case 11:
		Write24C16(0xdd,OSD_X);
//		break;
//	case 12:
		Write24C16(0xde,OSD_Y);
//		break;
//	case 13:
		Write24C16(0xcf,OSD_Timer);
//		break;
//	case 14:
		if(PowerStatus == 0x80)
			Write24C16(0xc8,Saturation);
		else if(PowerStatus > 0x80)
			Write24C16(0xd8,Saturation);
//		break;
//	case 15:
		if(PowerStatus == 0x80)
			Write24C16(0xc9,Tint);
		else if(PowerStatus > 0x80)
			Write24C16(0xd9,Tint);
//		break;
//	case 16:
		if(PowerStatus == 0x80){
			Write24C16(0xca,Sharpness);
		}
		else{
			Write24C16(0xda,Sharpness);
		}
//		break;
//	case 17:
		if(Read24C16(0xe3) == 0)
			Write24C16(0x400+ChBuffer,FineTune);
		else
			Write24C16(0x480+ChBuffer,FineTune);
//		break;
//	case 18:
		Write24C16(0xd5,Inverter);
//		break;
//	case 19:
		Write24C16(0xce,(OSD_Control & ~BIT_0));
//		break;
	}
	if((flag3 & BIT_2) != 0x00)	
		printf("SavePointer = %x\r\n",(unsigned short)SavePointer);
	SavePointer = 0;
}
/*
void ShowAutoAdj(void)
{
code unsigned char AutoAdjStr1[]={	14,"AUTO ADJUSTING"};
code unsigned char AutoAdjStr2[]={	22,"AJUSTEMENT AUTOMATIQUE"};
code unsigned char AutoAdjStr3[]={	24,"AUTOMATISCHE EINSTELLUNG"};
code unsigned char AutoAdjStr4[]={	17,"AJUSTE AUTOM[TICO"};
code unsigned char AutoAdjStr5[]={	22,"REGOLAZIONE AUTOMATICA"};
code unsigned char AutoAdjStr6[]={	23,"AUTOMATISCHE INSTELLING"};
code unsigned char AutoAdjStr7[]={	17,"AJUSTE AUTOM[TICO"};
code unsigned char AutoAdjStr8[]={	4,0x99,0x9a,0x9b,0x9c};
code unsigned char *Tab1[]={ AutoAdjStr1,AutoAdjStr2,AutoAdjStr3,AutoAdjStr4,AutoAdjStr5,AutoAdjStr6,AutoAdjStr7,AutoAdjStr8};
	OSD_Type = 4;
	Osd4Init();
	WriteWordIIC_HW(Scaler_Addr,0xcc,TextColor | BIT_0);
//	WriteXY_CStrScaler(1,2,2,27,Tab1[Language]);
	WriteXY_CStrScaler(1,1,2,20,Tab1[Language]);//by anbbdy
	OSD_Control |= BIT_0;
	WriteIIC_HW(Scaler_Addr,0x95,OSD_Control);
	if((flag3 & BIT_2) != 0x00)
		printf("Auto Adjust\r\n");
}
*/
void DirectVolume(void)
{
code unsigned char VolumeStr1[]={	6,"VOLUME"};
code unsigned char VolumeStr2[]={	6,"VOLUME"};
code unsigned char VolumeStr3[]={	7,"VOLUMEN"};
code unsigned char VolumeStr4[]={	7,"VOLUMEN"};
code unsigned char VolumeStr5[]={	6,"VOLUME"};
code unsigned char VolumeStr6[]={	6,"VOLUME"};
code unsigned char VolumeStr7[]={	6,"VOLUME"};
code unsigned char VolumeStr8[]={	4,0x99,0x9a,0x9b,0x9c};
code unsigned char *Tab1[]={ VolumeStr1,VolumeStr2,VolumeStr3,VolumeStr4,VolumeStr5,VolumeStr6,VolumeStr7,VolumeStr8};
	OSD_Type = 3;
	Osd4Init();
	WriteWordIIC_HW(Scaler_Addr,0xcc,TextColor);
//	WriteXY_CStrScaler(1,13,1,8,Tab1[Language]);
	WriteXY_CStrScaler(1,6,1,8,Tab1[Language]);//by anbbdy
	ShowVolume();
	OSD_Control |= BIT_0;
	WriteIIC_HW(Scaler_Addr,0x95,OSD_Control);
}

void WriteSequenceScaler(unsigned char addr,unsigned char *p)
{
unsigned short i,l;
/* start bit */
/* transmit device */
	INTIIC1_FLG = 0xff;
	IIC1_DATA = Scaler_Addr;
	IIC1_CLK = 0x20 | IIC_BaudRate;
	IIC1_CON = 0x00;
/* transmit addr */
	MasterSendByte(addr);
/* transmit data */
	l = p[1] * 256;
	l = l + p[0] + 2;
	for(i=2; i<l; i++){
		MasterSendByte(p[i]);
		CLRWDT = 0x55;
	}
/* transmit dumy data for stop bit */
	WaitTx();
/* stop bit */
	IIC1_CLK = 0xA0|IIC_BaudRate;
//	IIC1_CON = 0x00;
	WaitStop();
}

void WriteStringScaler(unsigned char Attr,unsigned char *p)
{
unsigned char g,l,ch;
unsigned short m;
/* start bit */
/* transmit device */
	INTIIC1_FLG = 0xff;
	IIC1_DATA = Scaler_Addr;
	IIC1_CLK = 0x20 | IIC_BaudRate;
	IIC1_CON = 0x00;
/* transmit addr */
	MasterSendByte(0xe0);
/* transmit data */
	if(Attr == 0)
		MasterSendByte(0x40);
	else
		MasterSendByte(0x90);
	if(OSD_Type < 2)
		m = p[2] * OSD_WIDTH + p[1];
	else
		m = p[2] * OSD2_WIDTH + p[1];
	ch = (unsigned char)m;
	MasterSendByte(ch);
	ch = (unsigned char)(m >> 8);
	MasterSendByte(ch);
	l = p[0] + 1;
	for(g=3; g<l; g++){
		ch = p[g];
		MasterSendByte(ch);
	}
/* transmit dumy data for stop bit */
	WaitTx();
/* stop bit */
	IIC1_CLK = 0xA0|IIC_BaudRate;
//	IIC1_CON = 0x00;
	WaitStop();
}

void WriteXY_StrScaler(unsigned char Attr,unsigned char x,unsigned char y,unsigned char *p)
{
unsigned char i,l,ch;
unsigned short m;
/* start bit */
/* transmit device */
	INTIIC1_FLG = 0xff;
	IIC1_DATA = Scaler_Addr;
	IIC1_CLK = 0x20 | IIC_BaudRate;
	IIC1_CON = 0x00;
/* transmit addr */
	MasterSendByte(0xe0);
/* transmit data */
	if(Attr == 0)
		MasterSendByte(0x40);
	else
		MasterSendByte(0x90);
	if(OSD_Type < 2)
		m = y * OSD_WIDTH + x;
	else
		m = y * OSD2_WIDTH + x;
	ch = (unsigned char)m;
	MasterSendByte(ch);
	ch = (unsigned char)(m >> 8);
	MasterSendByte(ch);
	l = p[0] + 1;
	for(i=1; i<l; i++){
		ch = p[i];
		MasterSendByte(ch);
	}
/* transmit dumy data for stop bit */
	WaitTx();
/* stop bit */
	IIC1_CLK = 0xA0|IIC_BaudRate;
//	IIC1_CON = 0x00;
	WaitStop();
}

void WriteXY_CStrScaler(unsigned char Attr,unsigned char x,unsigned char y,unsigned char w,unsigned char *p)
{
unsigned char i,l,ch;
unsigned short m;
// start bit /
// transmit device /
	INTIIC1_FLG = 0xff;
	IIC1_DATA = Scaler_Addr;
	IIC1_CLK = 0x20 | IIC_BaudRate;
	IIC1_CON = 0x00;
// transmit addr /
	MasterSendByte(0xe0);
// transmit data //
	if(Attr == 0)
		MasterSendByte(0x40);
	else
		MasterSendByte(0x90);
	if(OSD_Type < 2)
		m = y * OSD_WIDTH + x;
	else
		m = y * OSD2_WIDTH + x;
	ch = (unsigned char)m;
	MasterSendByte(ch);
	ch = (unsigned char)(m >> 8);
	MasterSendByte(ch);
	i = w - p[0];
	i >>= 1;	//string start position
	l = p[0] + i;	//string end position
	i++;
	w ++;
	ch = 1;
	for(m=1; m<w; m++){
		if((m < i)||(m > l)){
			MasterSendByte(' ');
		}
		else{
			MasterSendByte(p[ch]);
			ch++;
		}
	}
// transmit dumy data for stop bit //
	WaitTx();
// stop bit //
	IIC1_CLK = 0xA0|IIC_BaudRate;
//	IIC1_CON = 0x00;
	WaitStop();
}

void FillLineAttr(unsigned char x,unsigned char y,unsigned char l,unsigned short Attr)
{
unsigned char i,ch;
unsigned short m;
/* start bit */
/* transmit device */
	INTIIC1_FLG = 0xff;
	IIC1_DATA = Scaler_Addr;
	IIC1_CLK = 0x20 | IIC_BaudRate;
	IIC1_CON = 0x00;
/* transmit addr */
	MasterSendByte(0xe0);
/* transmit data */
	MasterSendByte(0x70);
	if(OSD_Type < 2)
		m = y * OSD_WIDTH + x;
	else
		m = y * OSD2_WIDTH + x;
	ch = (unsigned char)m;
	MasterSendByte(ch);
	ch = (unsigned char)(m >> 8);
	MasterSendByte(ch);
	ch = (unsigned char)(Attr>>8);
	for(i=0; i<l; i++){
		MasterSendByte((unsigned char)Attr);
		MasterSendByte(ch);
	}
/* transmit dumy data for stop bit */
	WaitTx();
/* stop bit */
	IIC1_CLK = 0xA0|IIC_BaudRate;
//	IIC1_CON = 0x00;
	WaitStop();
}

void ShowNum(unsigned char Attr,unsigned char xx,unsigned char yy,unsigned char value)
{
unsigned char i,ch;
unsigned short m;
unsigned char buff[3];
//show value
	sprintf(buff,"%3d",(unsigned short)value);
/* start bit */
/* transmit device */
	INTIIC1_FLG = 0xff;
	IIC1_DATA = Scaler_Addr;
	IIC1_CLK = 0x20 | IIC_BaudRate;
	IIC1_CON = 0x00;
/* transmit addr */
	MasterSendByte(0xe0);
/* transmit data */
	if(Attr == 0)
		MasterSendByte(0x40);
	else
		MasterSendByte(0x90);
	if(OSD_Type == 3)
		m = (unsigned short)yy * (OSD_WIDTH-2) + xx;
	else
		m = yy * OSD_WIDTH + xx;
	ch = (unsigned char)m;
	MasterSendByte(ch);
	ch = (unsigned char)(m >> 8);
	MasterSendByte(ch);
	for(i=0; i<3; i++){
		ch = buff[i];
		MasterSendByte(ch);
	}
/* transmit dumy data for stop bit */
	WaitTx();
/* stop bit */
	IIC1_CLK = 0xA0|IIC_BaudRate;
//	IIC1_CON = 0x00;
	WaitStop();
}

void ShowValue(unsigned char Attr,unsigned char value)
{
unsigned char i,ch;
unsigned short m;
unsigned char buff[3];
//show value
	sprintf(buff,"%3d",(unsigned short)value);
/* start bit */
/* transmit device */
	INTIIC1_FLG = 0xff;
	IIC1_DATA = Scaler_Addr;
	IIC1_CLK = 0x20 | IIC_BaudRate;
	IIC1_CON = 0x00;
/* transmit addr */
	MasterSendByte(0xe0);
/* transmit data */
	if(Attr == 0)
		MasterSendByte(0x40);
	else
		MasterSendByte(0x90);
	if(OSD_Type < 6)
//		m = 7 * OSD_WIDTH + 23;
		m = 4 * OSD_WIDTH + 9;
	else if(OSD_Type == 6)
		m = 5;
	ch = (unsigned char)m;
	MasterSendByte(ch);
	ch = (unsigned char)(m >> 8);
	MasterSendByte(ch);
	for(i=0; i<3; i++){
		ch = buff[i];
		MasterSendByte(ch);
	}
	if(OSD_Point2 == 17)
		MasterSendByte(' ');
	else
		MasterSendByte('%');
/* transmit dumy data for stop bit */
	WaitTx();
/* stop bit */
	IIC1_CLK = 0xA0|IIC_BaudRate;
//	IIC1_CON = 0x00;
	WaitStop();
}

void ShowSliderBar(unsigned char xx,unsigned char yy,unsigned char value)
{
#define BarWidth 16
unsigned char i,k;
unsigned short m;
/* start bit */
/* transmit device */
	INTIIC1_FLG = 0xff;
	IIC1_DATA = Scaler_Addr;
	IIC1_CLK = 0x20 | IIC_BaudRate;
	IIC1_CON = 0x00;
/* transmit addr */
	MasterSendByte(0xe0);
/* transmit data */
	MasterSendByte(0x90);

⌨️ 快捷键说明

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