📄 osddisplay.c
字号:
case NUM_BALANCE:
//Num_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR+10,SoundMenu[i],1);
SoundNum_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR+10,SoundMenu[i],8);
break;
}
}
/*
Window_Disp(2,1,0,GREEN,
WINDOWDISPROWSTR+2+SoundMenuCnt,WINDOWDISPROWSTR+2+SoundMenuCnt,
WINDOWDISPCOLSTR,WINDOWDISPCOLSTR+10);
*/
Menu_Select(2);
}
/*
*/
void Usrdata_Updata(void)//osd updata
{
Menu_Select(3);
switch(UsrMenuCnt)
{
case NUM_DATA:
String_Disp(WINDOWDISPROWSTR+UsrMenuCnt+2,WINDOWDISPCOLSTR+8,
OnOffStrPoint[(UsrMenu&0x01)?1:0].str,OnOffStrPoint[(UsrMenu&0x01)?1:0].n);
break;
case NUM_TIME:
String_Disp(WINDOWDISPROWSTR+UsrMenuCnt+2,WINDOWDISPCOLSTR+8,
OnOffStrPoint[(UsrMenu&0x02)?1:0].str,OnOffStrPoint[(UsrMenu&0x02)?1:0].n);
break;
case NUM_BEEP:
String_Disp(WINDOWDISPROWSTR+UsrMenuCnt+2,WINDOWDISPCOLSTR+8,
OnOffStrPoint[(UsrMenu&0x04)?1:0].str,OnOffStrPoint[(UsrMenu&0x04)?1:0].n);
break;
case NUM_CCD:
String_Disp(WINDOWDISPROWSTR+UsrMenuCnt+2,WINDOWDISPCOLSTR+8,
OnOffStrPoint[(UsrMenu&0x08)?1:0].str,OnOffStrPoint[(UsrMenu&0x08)?1:0].n);
break;
default: break;
}
}
void UsrSet_Windows(void)
{
uchar i;
Windows_Close();
WindowDispFlag=USR_WINDOW;
Row_Ctrol(WINDOWDISPROWSTR,RED,0,0);
Window_Disp(3,1,1,BLUE,
WINDOWDISPROWSTR,WINDOWDISPROWSTR+5,
WINDOWDISPCOLSTR,WINDOWDISPCOLSTR+10);
String_Disp(WINDOWDISPROWSTR,WINDOWDISPCOLSTR+3,UsrStrPoint.str,UsrStrPoint.n);
for(i=0;i<USRMENU_NUM;i++)
{
String_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR,UsrMenuPoint[i].str,UsrMenuPoint[i].n);
switch(i)
{
case NUM_DATA:
String_Disp(WINDOWDISPROWSTR+UsrMenuCnt+2,WINDOWDISPCOLSTR+8,
OnOffStrPoint[(UsrMenu&0x01)?1:0].str,OnOffStrPoint[(UsrMenu&0x01)?1:0].n);
case NUM_TIME:
String_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR+8,
OnOffStrPoint[(UsrMenu&0x02)?1:0].str,OnOffStrPoint[(UsrMenu&0x02)?1:0].n);
break;
case NUM_BEEP:
String_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR+8,
OnOffStrPoint[(UsrMenu&0x04)?1:0].str,OnOffStrPoint[(UsrMenu&0x04)?1:0].n);
case NUM_CCD:
String_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR+8,
OnOffStrPoint[(UsrMenu&0x08)?1:0].str,OnOffStrPoint[(UsrMenu&0x08)?1:0].n);
break;
default:
break;
}
}
Menu_Select(3);
}
/*
Radio显示窗口,c(1)表示打开,c(0)表示关闭
Band: FM(x)&AM
Currrent Frequency: 98.7 MHz
注意:当显示的频率和某一个存台一致,该存台反选指示,否则不指示
---------------------------------------------------
FM1 106.3
CH1 89.8 CH2 89.8
CH3 89.8 CH4 89.8
CH5 89.8 CH6 89.8
CH7 89.8 CH8 89.8
---------------------------------------------------
*/
void RadioFreq_Disp(uchar row,uchar col,uchar band,uchar f)
{
uint i;
uchar c1,c2;
Row_Clear(row,col,5);
if(band<RADIO_AM)
{
i=875;
i=i+f;
c1=i/10;
c2=i%10;
Num_Disp(row,col+3,c1,1);
Char_Disp(row,col+4,0xF5);
Num_Disp(row,col+5,c2,0);
}
else
{
if(f<0x11)
f=0x11;
i=531;
i=i+(f-0x11)*9;
c1=i/10;
c2=i%10;
Num_Disp(row,col+4,c1,1);
Num_Disp(row,col+5,c2,0);
}
}
void Radiodata_Updata(void)
{
uchar c;
RadioFreq_Disp(RADIOROW+2,RADIOCOL+14,RadioBand,RadioFreq);
String_Disp(RADIOROW+2,RADIOCOL+4+BandStrPoint.n,BandValPoint[RadioBand].str,BandValPoint[RadioBand].n);//FM1,2,AM
String_Disp(RADIOROW+2,RADIOCOL+20,HzStrPoint[(RadioBand<RADIO_AM)?0:1].str,HzStrPoint[(RadioBand<RADIO_AM)?0:1].n);//Band
Menu_Select(4);
if(RadioFreCH==0)
return;
c=RadioFreCH-1;
FreqTab[RadioBand][c]=RadioFreq;
if(c%2==0)
{
Char_Disp(RADIOROW+5+c/2,RADIOCOL+4,C('M'));
Num_Disp(RADIOROW+5+c/2,RADIOCOL+5,c+1,0);
RadioFreq_Disp(RADIOROW+5+c/2,RADIOCOL+6,RadioBand,FreqTab[RadioBand][c]);
}
else
{
Char_Disp(RADIOROW+5+c/2,RADIOCOL+15,C('M'));
Num_Disp(RADIOROW+5+c/2,RADIOCOL+16,c+1,0);
RadioFreq_Disp(RADIOROW+5+c/2,RADIOCOL+17,RadioBand,FreqTab[RadioBand][c]);
}
}
void RadioDisp_Windows(void)
{
uchar i;
Osd_Clear();
Row_Ctrol(RADIOROW,RED,0,1);
Window_Disp(3,1,1,BLUE,
RADIOWINDOWDISPROWSTR,RADIOWINDOWDISPROWSTR+14,
RADIOWINDOWDISPCOLSTR,RADIOWINDOWDISPCOLSTR+29);
String_Disp(RADIOROW,RADIOCOL,RadioStrPoint.str,RadioStrPoint.n);//RADIO
Window_Disp(1,1,1,PURPLE,
RADIOROW+2,RADIOROW+2,
RADIOCOL+4,RADIOCOL+22);
String_Disp(RADIOROW+2,RADIOCOL+4,BandStrPoint.str,BandStrPoint.n);//Band
String_Disp(RADIOROW+2,RADIOCOL+4+BandStrPoint.n,BandValPoint[RadioBand].str,BandValPoint[RadioBand].n);//FM1,2,AM
//RadioBand=RADIO_FM1;
//RadioFreCH=1;
//RadioFreq=0x80;
RadioFreq_Disp(RADIOROW+2,RADIOCOL+14,RadioBand,RadioFreq);
String_Disp(RADIOROW+2,RADIOCOL+20,HzStrPoint[(RadioBand<RADIO_AM)?0:1].str,HzStrPoint[(RadioBand<RADIO_AM)?0:1].n);//Band
Window_Disp(2,1,1,CAMBLUE,
RADIOROW+5,RADIOROW+8,
RADIOCOL+4,RADIOCOL+22);
for(i=0;i<8;i++)
{
if(i%2==0)
{
Char_Disp(RADIOROW+5+i/2,RADIOCOL+4,C('M'));
Num_Disp(RADIOROW+5+i/2,RADIOCOL+5,i+1,0);
RadioFreq_Disp(RADIOROW+5+i/2,RADIOCOL+6,RadioBand,FreqTab[RadioBand][i]);
}
else
{
Char_Disp(RADIOROW+5+i/2,RADIOCOL+15,C('M'));
Num_Disp(RADIOROW+5+i/2,RADIOCOL+16,i+1,0);
RadioFreq_Disp(RADIOROW+5+i/2,RADIOCOL+17,RadioBand,FreqTab[RadioBand][i]);
}
}
Menu_Select(4);
}
/*
Dvd显示窗口,c(1)表示打开,c(0)表示关闭
//待定
*/
void DvdData_Updata(uchar disc,uchar track,uchar timeH,uchar timeM,uchar timeS)
{
String_Disp(DVCWINDOWDISPROWSTR+4,DVCWINDOWDISPCOLSTR+13,DiscTypeStrPoint[disc].str,DiscTypeStrPoint[disc].n);//DISC
//String_Disp(DVCWINDOWDISPROWSTR+6,DVCWINDOWDISPCOLSTR+7,DiscTypeDStrPoint.str,TrackStrPoint.n);//Track
Num16_Disp(DVCWINDOWDISPROWSTR+6,DVCWINDOWDISPCOLSTR+13,track);
//String_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+8,TimeStrPoint.str,TimeStrPoint.n);//Time
Num16_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+13,timeH);
Char_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+15,0xF3);
Num16_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+16,timeM);
Char_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+18,0xF3);
Num16_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+19,timeS);
}
void DvdDisp_Windows(void)
{
Osd_Clear();
Window_Disp(1,0,0,0,0,0,0,0);//close 1
Window_Disp(2,0,0,0,0,0,0,0);//close 2
Window_Disp(0,0,0,0,0,0,0,0);//close 0
Row_Ctrol(DVCROW,RED,0,1);
Window_Disp(3,1,1,BLUE,
DVCWINDOWDISPROWSTR,DVCWINDOWDISPROWSTR+14,
DVCWINDOWDISPCOLSTR,DVCWINDOWDISPCOLSTR+29);
String_Disp(DVCROW,DVCCOL,DvdStrPoint.str,DvdStrPoint.n);//CHANGER
String_Disp(DVCWINDOWDISPROWSTR+4,DVCWINDOWDISPCOLSTR+8,DiscStrPoint.str,DiscStrPoint.n);//DISC
String_Disp(DVCWINDOWDISPROWSTR+6,DVCWINDOWDISPCOLSTR+7,TrackStrPoint.str,TrackStrPoint.n);//CHANGER
String_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+8,TimeStrPoint.str,TimeStrPoint.n);//CHANGER
}
/*
Changer显示窗口,c(1)表示打开,c(0)表示关闭
//待定
*/
void DvcData_Updata(uchar discnum,uchar disc,uchar track,uchar timeH,uchar timeM,uchar timeS)
{
if(WindowDispFlag!=DVC_WINDOW)
return;
Char_Disp(DVCWINDOWDISPROWSTR+4,DVCWINDOWDISPCOLSTR+13,NumStr[discnum]);
String_Disp(DVCWINDOWDISPROWSTR+4,DVCWINDOWDISPCOLSTR+15,DiscTypeStrPoint[disc].str,DiscTypeStrPoint[disc].n);//DISC
//String_Disp(DVCWINDOWDISPROWSTR+6,DVCWINDOWDISPCOLSTR+7,DiscTypeDStrPoint.str,TrackStrPoint.n);//Track
Num16_Disp(DVCWINDOWDISPROWSTR+6,DVCWINDOWDISPCOLSTR+13,track);
//String_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+8,TimeStrPoint.str,TimeStrPoint.n);//Time
Num16_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+13,timeH);
Char_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+15,0xF3);
Num16_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+16,timeM);
Char_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+18,0xF3);
Num16_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+19,timeS);
}
void DvcDisp_Windows(void)
{
Osd_Clear();
Window_Disp(1,0,0,0,0,0,0,0);//close 1
Window_Disp(2,0,0,0,0,0,0,0);//close 2
Window_Disp(0,0,0,0,0,0,0,0);//close 0
Row_Ctrol(DVCROW,RED,0,1);
Window_Disp(3,1,1,BLUE,
DVCWINDOWDISPROWSTR,DVCWINDOWDISPROWSTR+14,
DVCWINDOWDISPCOLSTR,DVCWINDOWDISPCOLSTR+29);
String_Disp(DVCROW,DVCCOL,DvcStrPoint.str,DvcStrPoint.n);//CHANGER
String_Disp(DVCWINDOWDISPROWSTR+4,DVCWINDOWDISPCOLSTR+8,DiscStrPoint.str,DiscStrPoint.n);//DISC
String_Disp(DVCWINDOWDISPROWSTR+6,DVCWINDOWDISPCOLSTR+7,TrackStrPoint.str,TrackStrPoint.n);//CHANGER
String_Disp(DVCWINDOWDISPROWSTR+8,DVCWINDOWDISPCOLSTR+8,TimeStrPoint.str,TimeStrPoint.n);//CHANGER
WindowDispFlag=DVC_WINDOW;
}
void Signal_Disp(void)
{
Row_Clear(STATUSROW,STATUSCOL,15);
if(SourceMode>SOURCEMAX)
return;
switch(SourceMode)
{
case SourceNoSign: Logo_Disp(); break;
case SourceAux1:
case SourceAux2:
case SourceAux3:
break;
case SourceRadio: RadioDisp_Windows();break;
case SourceDvd: DvdDisp_Windows(); break;
case SourceDvc: DvcDisp_Windows(); break;
case SourceTv: break;
case SourceGps: break;
default: break;
}
String_Disp(STATUSROW,STATUSCOL,SourceModeStrPoint[SourceMode].str,SourceModeStrPoint[SourceMode].n);
}
void Volume_Disp(void)
{
Row_Clear(STATUSROW,STATUSCOL,15);
if(SoundVolume>0)
{
String_Disp(STATUSROW,STATUSCOL,VolumeStrPoint.str,3);
Num_Disp(STATUSROW,STATUSCOL+5,SoundVolume,1);
}
else
String_Disp(STATUSROW,STATUSCOL,MuteStrPoint.str,MuteStrPoint.n);
}
void Ch_Disp(uchar c)
{
Row_Clear(STATUSROW,STATUSCOL,15);
if(c==0)
{
Char_Disp(STATUSROW-1,STATUSCOL+1,0);//up
Char_Disp(STATUSROW+1,STATUSCOL+1,0);//down
Char_Disp(STATUSROW,STATUSCOL,0);//left
Char_Disp(STATUSROW,STATUSCOL+2,0);//right
}
else
{
Char_Disp(STATUSROW-1,STATUSCOL+1,ChStr[0]);//up
Char_Disp(STATUSROW+1,STATUSCOL+1,ChStr[1]);//down
Char_Disp(STATUSROW,STATUSCOL,ChStr[2]);//left
Char_Disp(STATUSROW,STATUSCOL+2,ChStr[3]);//right
}
}
void Data_Disp(uchar y,uchar m,uchar d)
{
OsdBuf[0]=(STATUSROW+1)|0x80;
OsdBuf[1]=21|0x40;
OsdBuf[2]=NumStr[y>>4];
OsdBuf[3]=NumStr[y&0x0F];
OsdBuf[4]=0xEC;
OsdBuf[5]=NumStr[m>>4];
OsdBuf[6]=NumStr[m&0x0F];
OsdBuf[7]=0xEC;
OsdBuf[8]=NumStr[d>>4];
OsdBuf[9]=NumStr[d&0x0F];
I2c_SendMData(OSDADDR,OsdBuf,10);
}
void Time_Disp(uchar h,uchar m)
{
OsdBuf[0]=STATUSROW|0x80;
OsdBuf[1]=24|0x40;
if(h>=0x10)
OsdBuf[2]=NumStr[h>>4];
else
OsdBuf[2]=0;
OsdBuf[3]=NumStr[h&0x0F];
OsdBuf[4]=0xF3;
OsdBuf[5]=NumStr[m>>4];
OsdBuf[6]=NumStr[m&0x0F];
I2c_SendMData(OSDADDR,OsdBuf,7);
Char_Attrib_Set(STATUSROW,26,0x08+YELLOW);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -