📄 osddisplay.c
字号:
{
OsdBuf[0]=0x8F;
OsdBuf[1]=0x11;
OsdBuf[2]=c;
I2c_SendMData(OSDADDR,OsdBuf,3);
}
void Pwm_Process(uchar pwm,uchar c)//pwm(1~8) is used to select PWM0---PWM7;pwm(0) is use to control; c is the variable
{
OsdBuf[0]=0x8F;
OsdBuf[1]=18+pwm;
OsdBuf[2]=c;
I2c_SendMData(OSDADDR,OsdBuf,3);
}
void Osd_Adjust(uchar col,uchar c)//15行 0~30列对应各自的属性
{
OsdBuf[0]=0x8F;
OsdBuf[1]=col;
OsdBuf[2]=c;
I2c_SendMData(OSDADDR,OsdBuf,3);
}
void Start_Pos(uchar row,uchar col)//开始位置 行列
{
Osd_Adjust(0x0C,row);
Osd_Adjust(0x0D,col);
}
void NP_Adjust(uchar flg)//flg is to show NTSC or PAL (NTSC=1;PAL=0)
{
if(flg==NTSC)//NTSC
{
Start_Pos(0x00,0x00);
Osd_Adjust(15,36);//36
Osd_Adjust(14,0);//0
Osd_Adjust(12,1);
Osd_Adjust(13,0);
//if(SourceMode!=FM_AM)
// String_Disp(1,20,NP[1],4);
}
else //PAL
{
Start_Pos(0x00,0x00);
Osd_Adjust(15,35);
Osd_Adjust(14,3);
Osd_Adjust(12,1); //1
Osd_Adjust(13,0);
//if(SourceMode!=FM_AM)
// String_Disp(1,20,NP[0],4);
}
}
void Osd_Init(void)
{
uchar i;
Window_Control(0xC6);//clear osd
Window_Control(0xC0);//osd enable
NP_Adjust(1);
for(i=0;i<15;i++)
{
String_Attrib_Set(i,0,29,PURPLE);
Row_Ctrol(i,YELLOW,0,0);
}
String_Attrib_Set(STATUSROW-1,0,29,YELLOW);
String_Attrib_Set(STATUSROW, 0,29,YELLOW);
String_Attrib_Set(STATUSROW+1,0,29,YELLOW);
}
void Osd_Clear(void)
{
Window_Control(0xC2);//clear osd
Window_Control(0xC0);//osd enable
}
void Windows_Close(void)
{
WindowDispFlag=NO_WINDOW;
Window_Control(0xC6);//clear osd
Window_Control(0xC0);//osd enable
}
/*
row 进度条行
colsta 进度条 起始列
colend 进度条 结束列
pos 进度条 位置
*/
void ProgressBar(uchar row,uchar colsta,uchar colend,uchar pos)
{
}
/*
开机画面显示的窗口,c(1)表示打开,c(0)表示关闭
*/
void Logo_Disp(void)
{
Osd_Clear();
Window_Disp(0,1,1,BLUE,0,14,0,30);
}
/*
System settin
*/
void SysWindows_Close(void)
{
Row_Clear(SYSMENUROW,0,30);
}
void Sysdata_Updata(void)//osd updata
{
Row_Clear(SYSMENUROW,0,30);
switch(SysMenuCnt)
{
case NUM_BRIGHT :
String_Disp(SYSMENUROW,SYSMENUCOL,BrightStrPoint.str,BrightStrPoint.n);
Num16_Disp(SYSMENUROW,SYSNUMCOL,SysMenuBright);
break;
case NUM_COLOR:
String_Disp(SYSMENUROW,SYSMENUCOL,ColorStrPoint.str,ColorStrPoint.n);
Num16_Disp(SYSMENUROW,SYSNUMCOL,SysMenuColor);
break;
case NUM_CONT:
String_Disp(SYSMENUROW,SYSMENUCOL,ContStrPoint.str,ContStrPoint.n);
Num16_Disp(SYSMENUROW,SYSNUMCOL,SysMenuCont);
break;
case NUM_PIC:
String_Disp(SYSMENUROW,SYSMENUCOL,PicStrPoint.str,PicStrPoint.n);
Num16_Disp(SYSMENUROW,SYSNUMCOL,SysMenuPic);
break;
case NUM_TINT:
String_Disp(SYSMENUROW,SYSMENUCOL,TintStrPoint.str,TintStrPoint.n);
Num16_Disp(SYSMENUROW,SYSNUMCOL,SysMenuTint);
break;
case NUM_COM:
String_Disp(SYSMENUROW,SYSMENUCOL,ComStrPoint.str,ComStrPoint.n);
Num16_Disp(SYSMENUROW,SYSNUMCOL,SysMenuCom);
break;
case NUM_SUBR:
String_Disp(SYSMENUROW,SYSMENUCOL,SubrStrPoint.str,SubrStrPoint.n);
Num16_Disp(SYSMENUROW,SYSNUMCOL,SysMenuSubr);
break;
case NUM_SUBB:
String_Disp(SYSMENUROW,SYSMENUCOL,SubbStrPoint.str,SubbStrPoint.n);
Num16_Disp(SYSMENUROW,SYSNUMCOL,SysMenuSubb);
break;
default: break;
}
}
/*
显示图像设置的窗口,c(1)表示打开,c(0)表示关闭
在此模式下的设置与主板无关,只与显示板相关,打开此窗口的
按键为专用按键,注意,此窗口不是全屏显示
Bright 0=========8==========16 进度条表示
Color 0=========8==========16 进度条表示
Cont 0=========8==========16 进度条表示
Rev REV1====REV2====REV3====REV4 进度条表示,进度条上镶嵌字体
Mode NORMAL==================FULL 进度条表示,进度条上镶嵌字体
*/
void Menu_Select(uchar c)
{
uchar i;
switch(c)
{
case 1://video
Window_Disp(0,1,0,GREEN,
WINDOWDISPROWSTR+2+VideoMenuCnt,WINDOWDISPROWSTR+2+VideoMenuCnt,
WINDOWDISPCOLSTR,WINDOWDISPCOLSTR+10);
break;
case 2://sound
Window_Disp(0,1,0,GREEN,
WINDOWDISPROWSTR+2+SoundMenuCnt,WINDOWDISPROWSTR+2+SoundMenuCnt,
WINDOWDISPCOLSTR,WINDOWDISPCOLSTR+10);
break;
case 3://Usr
Window_Disp(0,1,0,GREEN,
WINDOWDISPROWSTR+2+UsrMenuCnt,WINDOWDISPROWSTR+2+UsrMenuCnt,
WINDOWDISPCOLSTR,WINDOWDISPCOLSTR+10);
break;
case 4://Radio
if(RadioFreCH==0)
{
Window_Disp(0,0,0,GREEN,
RADIOROW+5,RADIOROW+5,
RADIOCOL+4,RADIOCOL+11);
return;
}
i=RadioFreCH-1;
if(i%2==0)
Window_Disp(0,1,0,GREEN,
RADIOROW+5+i/2,RADIOROW+5+i/2,
RADIOCOL+4,RADIOCOL+11);
else
Window_Disp(0,1,0,GREEN,
RADIOROW+5+i/2,RADIOROW+5+i/2,
RADIOCOL+15,RADIOCOL+22);
break;
case 5://
break;
case 6://
break;
default:break;
}
}
void Videodata_Updata(void)//osd updata
{
Menu_Select(1);
switch(VideoMenuCnt)
{
case NUM_BRIGHT:
case NUM_COLOR:
case NUM_CONT: Num_Disp(WINDOWDISPROWSTR+VideoMenuCnt+2,WINDOWDISPCOLSTR+10,VideoMenu[VideoMenuCnt],1);
break;
case NUM_REV:
String_Disp(WINDOWDISPROWSTR+VideoMenuCnt+2,WINDOWDISPCOLSTR+7,RevStrPoint.str,RevStrPoint.n);
Num_Disp(WINDOWDISPROWSTR+VideoMenuCnt+2,WINDOWDISPCOLSTR+10,VideoMenuRev,0);
break;
case NUM_MODE:
//if(VideoMenuMode>1)
// VideoMenuMode=0;
String_Disp(WINDOWDISPROWSTR+VideoMenuCnt+2,WINDOWDISPCOLSTR+7,ModeValPoint[VideoMenuMode].str,ModeValPoint[VideoMenuMode].n);
break;
default: break;
}
}
void VideoSet_Windows(void)
{
uchar i;
Windows_Close();
WindowDispFlag=VIDEO_WINDOW;
Row_Ctrol(WINDOWDISPROWSTR,RED,0,0);
String_Disp(WINDOWDISPROWSTR,WINDOWDISPCOLSTR+3,VideoStrPoint.str,VideoStrPoint.n);
Window_Disp(3,1,1,BLUE,
WINDOWDISPROWSTR,WINDOWDISPROWSTR+6,
WINDOWDISPCOLSTR,WINDOWDISPCOLSTR+10);
for(i=0;i<VIDEOMENU_NUM;i++)
{
String_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR,VideoMenuPoint[i].str,VideoMenuPoint[i].n);
switch(i)
{
case NUM_BRIGHT:
case NUM_COLOR:
case NUM_CONT: Num_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR+10,VideoMenu[i],1);
break;
case NUM_REV:
String_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR+7,RevStrPoint.str,RevStrPoint.n);
Num_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR+10,VideoMenuRev,0);
break;
case NUM_MODE:
if(VideoMenuMode>1)
VideoMenuMode=0;
String_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR+7,ModeValPoint[VideoMenuMode].str,ModeValPoint[VideoMenuMode].n);
break;
}
}
/*
Window_Disp(2,1,0,GREEN,
WINDOWDISPROWSTR+2+VideoMenuCnt,WINDOWDISPROWSTR+2+VideoMenuCnt,
WINDOWDISPCOLSTR,WINDOWDISPCOLSTR+10);
*/
Menu_Select(1);
}
/*
显示声音设置的窗口,c(1)表示打开,c(0)表示关闭
此窗口在mainboard的控制下打开,其数据的变化依据主板的
控制信息而来
BASS -7 ============ 0 -------------- +7 进度条上镶嵌字体,显示当前的数值,两种颜色指示偏移程度
TREB -7 ============ +5==========--- +7 进度条上镶嵌字体,显示当前的数值,两种颜色指示偏移程度
BALANCE -8 =======----- -3-------------- +8 进度条上镶嵌字体,显示当前的数值,两种颜色指示偏移程度
FLAT -8 ------------ -8 ------------- +8 进度条上镶嵌字体,显示当前的数值,两种颜色指示偏移程度
*/
void SoundNum_Disp(uchar row,uchar col,uchar c,uchar midval)
{
uchar c1,c2,c3;
uchar n;
Row_Clear(row,col-3,4);
OsdBuf[0]=row|0x80;
if(c>midval)
{
c=c-midval;
OsdBuf[2]=0xEF;
}
else if(c<midval)
{
c=midval-c;
OsdBuf[2]=0xEE;
}
else if(c==midval)
{
c=0;
OsdBuf[2]=0;
}
c1=c%10;
c=c/10;
c2=c%10;
c3=c/10;
if(c3>0)//>100
{
OsdBuf[3]=NumStr[c3];
OsdBuf[4]=NumStr[c2];
OsdBuf[5]=NumStr[c1];
n=6;
}
else if(c2>0)//>10
{
OsdBuf[3]=NumStr[c2];
OsdBuf[4]=NumStr[c1];
n=5;
}
else
{
OsdBuf[3]=NumStr[c1];
n=4;
}
col=col+3-n;
OsdBuf[1]=col|0x40;
I2c_SendMData(OSDADDR,OsdBuf,n);
}
void Sounddata_Updata(void)//osd updata
{
Menu_Select(2);
switch(SoundMenuCnt)
{
case NUM_BASS:
case NUM_TREB:
SoundNum_Disp(WINDOWDISPROWSTR+SoundMenuCnt+2,WINDOWDISPCOLSTR+10,SoundMenu[SoundMenuCnt],7);
//Num_Disp(WINDOWDISPROWSTR+SoundMenuCnt+2,WINDOWDISPCOLSTR+10,SoundMenu[SoundMenuCnt],1);
break;
case NUM_FLAT:
case NUM_BALANCE:
SoundNum_Disp(WINDOWDISPROWSTR+SoundMenuCnt+2,WINDOWDISPCOLSTR+10,SoundMenu[SoundMenuCnt],8);
//Num_Disp(WINDOWDISPROWSTR+SoundMenuCnt+2,WINDOWDISPCOLSTR+10,SoundMenu[SoundMenuCnt],1);
break;
default: break;
}
}
void SoundSet_Windows(void)
{
uchar i;
Windows_Close();
WindowDispFlag=SOUND_WINDOW;
Row_Ctrol(WINDOWDISPROWSTR,RED,0,0);
String_Disp(WINDOWDISPROWSTR,WINDOWDISPCOLSTR+3,SoundStrPoint.str,SoundStrPoint.n);
Window_Disp(3,1,1,BLUE,
WINDOWDISPROWSTR,WINDOWDISPROWSTR+5,
WINDOWDISPCOLSTR,WINDOWDISPCOLSTR+10);
for(i=0;i<SOUNDMENU_NUM;i++)
{
String_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR,SoundMenuPoint[i].str,SoundMenuPoint[i].n);
switch(i)
{
case NUM_BASS:
case NUM_TREB: //Num_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR+10,SoundMenu[i],1);
SoundNum_Disp(WINDOWDISPROWSTR+i+2,WINDOWDISPCOLSTR+10,SoundMenu[i],7);
break;
case NUM_FLAT:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -