📄 osd.c
字号:
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 + -