📄 mtv018.c
字号:
Buf[3] = OSD_U;
Buf[4] = OSD_T;
Buf[5] = OSD_E;
}
else
{
Buf[2] = OSD_NC;
Buf[3] = OSD_NC;
Buf[4] = OSD_NC;
Buf[5] = OSD_NC;
}
}
if(bDispFMOSDID)
{
Buf[0] = OSD_ADDR_ROW_8;
Buf[1] = OSD_COLUMN_13;
}
else
{
Buf[0] = OSD_ADDR_ROW_11;
Buf[1] = OSD_COLUMN_13;
}
ISendStr(MTV018_ADDR, Buf[0], &Buf[1], 5);
}
/********************************************************************************************************
Descriptions: OSD displayme
input parameters: None
Returned value: None
Used global variables: None
Calling modules: None
Created by: xjj 2006/01/20
-------------------------------------------------------------------------------------------------------
Modified by:
********************************************************************************************************/
void OSDTimeDisp(void)
{
if(ucRemValue == REM_TIME)
{
ucRemValue = REM_INVALID;
ucRemShadow = REM_INVALID;
ucOSDAutoClearTime = OSD_AUTO_CLEAR_TIME;
bOSDTimeDispID = 1;
FreshOSDTime();
}
//OSD上显示时钟刷新
if(bOSDTimeDispID)
{
FreshOSDTime();
}
}
/*-----------------------------------------------------------------------*/
void FreshOSDTime(void)
{
uchar temp;
uchar Buf[12];
Buf[0] = OSD_ADDR_ROW_7;
Buf[1] = OSD_COLUMN_11;
//hour
temp = ReadHour();
Buf[2] = ((temp & b00110000B)>>4) + 1;
Buf[3] = (temp & b00001111B) + 1;
Buf[4] = 0xF6;
//min
temp = ReadMinute();
Buf[5] = ((temp & b01110000B)>>4) + 1;
Buf[6] = (temp & b00001111B)+1;
Buf[7] = 0xF6;
//sec
temp = ReadSecond();
Buf[8] = ((temp & b01110000B)>>4) + 1;
Buf[9] = (temp & b00001111B)+1;
Buf[10] = OSD_NC;
Buf[11] = OSD_NC;
ISendStr(MTV018_ADDR,Buf[0],&Buf[1],11);
}
/********************************************************************************************************
Descriptions: 菜单按键识别程序
input parameters: None
Returned value: None
Used global variables: None
Calling modules: None
Created by: xjj 2006/01/20
-------------------------------------------------------------------------------------------------------
Modified by:
********************************************************************************************************/
void MenuSelect(void)
{
if(ucRemValue == REM_MENU)
{//主菜单按键识别程序
ucRemValue = REM_INVALID;
ucRemShadow = REM_INVALID;
if(!bMainMenuOn)//若主菜单已显示,则不用清除CD声道信息
ClearCDChannelInfo();
if(bDispCDID)//清除全部CD信息
{ //for test
//ClearWinCDInfo();
//ClearCharCDInfo();
}
DispSmallWindows();//如果主菜单已显示则不用在重新显示小窗口
ucOSDAutoClearTime = OSD_AUTO_CLEAR_TIME;
bMainMenuOn = 1;
bDirectVolumeID = 0;
ucMenuKeyCnt++;
switch(ucMenuKeyCnt)
{
case MAIN_MENU:
{
ucOSDAutoClearTime = OSD_AUTO_CLEAR_TIME;
ucSelectKeyCnt = 0;
DispMainMenu();//显示主菜单(并且"PIC"高亮,包含PIC的子菜单)
DispPicSubMenu();//调用图象调节显示菜单
MainMenuHlight();//相应菜单高亮
SubMenuHlight();//SUB_MENU_HLIGHT;执行二级菜单高亮
break;
}//the end of case
case SOUND_MENU:
{
ucOSDAutoClearTime = OSD_AUTO_CLEAR_TIME;
ucSelectKeyCnt = 0;
//显示菜单"MENU"字符
SendDataMTV018(TAB_MENU,10);
MainMenuHlight();//相应菜单高亮
DispSoundSubMenu();//DISP_SOUND_SUB_MENU;显示"SOUND"的子菜单
SubMenuHlight();//SUB_MENU_HLIGHT;执行二级菜单高亮
break;
}//the end of case
case SETUP_MENU:
{
ucOSDAutoClearTime = OSD_AUTO_CLEAR_TIME;
ucSelectKeyCnt = 0;
//显示菜单"MENU"字符
SendDataMTV018(TAB_MENU,10);
MainMenuHlight();//相应菜单高亮
DispSetupSubMenu();//DISP_SETUP_SUB_MENU显示"SETUP"的子菜单
SubMenuHlight();//SUB_MENU_HLIGHT;执行二级菜单高亮
break;
}//the end of case
default:
{
ClearAllOSD();
ucMenuKeyCnt = 0;
ucSelectKeyCnt = 0;
bMainMenuOn = 0;
bDirectVolumeID = 1;
StoreMainData();
}
}//the end of switch
}//if(ucRemValue == REM_MENU)//主菜单按键识别程序 end
//子菜单按键识别程序
if(bDirectVolumeID)//直接音量标志(在显示音量,对下不作处理)
return;
if(ucOSDAutoClearTime == OSD_AUTO_CLEAR_STOP)//表示菜单消失
return;
if(bMainMenuOn)//如果没主菜单就不显示调整条
MenuAdjustBar();
if(ucRemValue == REM_MENU_DOWN)
{
ucRemValue = REM_INVALID;
ucRemShadow = REM_INVALID;
ucOSDAutoClearTime = OSD_AUTO_CLEAR_TIME;
ucSelectKeyCnt++;
if(ucSelectKeyCnt > 3)//0-3加循环计数
ucSelectKeyCnt = 0;
SubMenuHlight();//执行二级菜单高亮
}
if(ucRemValue == REM_MENU_UP)
{
ucRemValue = REM_INVALID;
ucRemShadow = REM_INVALID;
ucOSDAutoClearTime = OSD_AUTO_CLEAR_TIME;
if(ucSelectKeyCnt == 0)//0-3加循环计数
ucSelectKeyCnt = 4;
ucSelectKeyCnt--;
SubMenuHlight();//执行二级菜单高亮
}
}
/*-----------------------------------------------------------------------------*/
void ClearCDChannelInfo(void)
{
uchar Buf[5];
Buf[0] = OSD_ADDR_ROW_2;
Buf[1] = OSD_COLUMN_23;
Buf[2] = OSD_NC;
Buf[3] = OSD_NC;
Buf[4] = OSD_NC;
ISendStr(MTV018_ADDR,Buf[0],&Buf[1],4);
}
/*-----------------------------------------------------------------------------*/
void ClearWinCDInfo(void)
{
uchar Buf[14];
uchar ucRow;
ucRow = OSD_ADDR_ROW_2;
do
{
Buf[0] = ucRow;
Buf[1] = OSD_COLUMN_9;
Buf[2] = OSD_NC;
Buf[3] = OSD_NC;
Buf[4] = OSD_NC;
Buf[5] = OSD_NC;
Buf[6] = OSD_NC;
Buf[7] = OSD_NC;
Buf[8] = OSD_NC;
Buf[9] = OSD_NC;
Buf[10] = OSD_NC;
Buf[11] = OSD_NC;
Buf[12] = OSD_NC;
Buf[13] = OSD_NC;
ISendStr(MTV018_ADDR,Buf[0],&Buf[1],13);
ucRow++;
}while(ucRow < OSD_ADDR_ROW_10);
Buf[0] = OSD_ADDR_ROW_5;
Buf[1] = OSD_COLUMN_21;
Buf[2] = OSD_NC;
ISendStr(MTV018_ADDR,Buf[0],&Buf[1],2);
Buf[0] = OSD_ADDR_ROW_7;
Buf[1] = OSD_COLUMN_21;
Buf[2] = OSD_NC;
ISendStr(MTV018_ADDR,Buf[0],&Buf[1],2);
Buf[0] = OSD_ADDR_ROW_9;
Buf[1] = OSD_COLUMN_21;
Buf[2] = OSD_NC;
ISendStr(MTV018_ADDR,Buf[0],&Buf[1],2);
}
/*-----------------------------------------------------------------------------*/
void ClearCharCDInfo(void)
{
uchar Buf[3];
uchar ucCol = OSD_COLUMN_4;
do
{
Buf[0] = OSD_ADDR_ROW_1;
Buf[1] = ucCol;
Buf[2] = OSD_NC;
ISendStr(MTV018_ADDR,Buf[0],&Buf[1],2);
ucCol++;
}while(ucCol < OSD_COLUMN_29);
}
/*-----------------------------------------------------------------------------*/
//显示三个小彩条(主菜单上)
uchar code TAB_WINDOWS0[]=
{ 0xAF,0x40,b00100010B,b10100100B,b11001110B};
uchar code TAB_WINDOWS1[]=
{ 0xAF,0x43,0x33,0xA4,0xCD};
uchar code TAB_WINDOWS2[]=
{ 0xAF,0x46,0x44,0xA4,0xCB};
void DispSmallWindows(void)//如果主菜单已显示则不用在重新显示小窗口
{
//窗口0
SendDataMTV018(TAB_WINDOWS0,5);//调用送数程序
//窗口1
SendDataMTV018(TAB_WINDOWS1,5);
//窗口2
SendDataMTV018(TAB_WINDOWS2,5);
}
/*-----------------------------------------------------------------------------*/
//;主菜单字符表
uchar code TAB_MENU[]=
{0x81,0x52,0x00,0x00,0x00,OSD_M,OSD_E,OSD_N,OSD_U,0x00};
uchar code TAB_PIC[]=
{ 0x82,0x55,OSD_P,OSD_I,OSD_C};
uchar code TAB_SOUND[]=
{ 0x83,0x55,OSD_S,OSD_0,OSD_U,OSD_N,OSD_D};
uchar code TAB_SETUP[]=
{ 0x84,0x55,OSD_S,OSD_E,OSD_T,OSD_U,OSD_P};
void DispMainMenu(void)//显示主菜单(并且"PIC"高亮,包含PIC的子菜单)
{
//显示菜单"MENU"字符
SendDataMTV018(TAB_MENU,10);
//显示窗口0字符"PIC"
SendDataMTV018(TAB_PIC,5);
//显示窗口1字符"SOUND"
SendDataMTV018(TAB_SOUND,7);
//显示窗口2字符"SETUP"
SendDataMTV018(TAB_SETUP,7);
}
/*-----------------------------------------------------------------------------*/
//显示"SOUND"子菜单
uchar code TAB_SOUND_FADER[]=
{ 0x84,0x44,0x00,0xD6,0xD7,OSD_F,OSD_A,OSD_D,OSD_E,OSD_R,OSD_NC,0x00,0x00};
uchar code TAB_SOUND_BALBANCE[]=
{ 0x83,0x44,0x00,0xD0,0xD1,OSD_B,OSD_A,OSD_L,OSD_A,OSD_N,OSD_C,OSD_E,0x00};
uchar code TAB_SOUND_BASS[]=
{ 0x81,0x44,0x00,0xC8,0xC9,OSD_B,OSD_A,OSD_S,OSD_S,0x00,0x00,0x00,0x00};
uchar code TAB_SOUND_TREBLE[]=
{ 0x82,0x44,0x00,0xCA,0xCB,OSD_T,OSD_R,OSD_E,OSD_B,OSD_L,OSD_E,0x00,0x00};
void DispSoundSubMenu(void)//DISP_SOUND_SUB_MENU;显示"SOUND"的子菜单
{
//显示声音子菜单"FADER"字符
SendDataMTV018(TAB_SOUND_FADER,13);
//显示声音子菜单"BASS"字符
SendDataMTV018(TAB_SOUND_BALBANCE,13);
//显示声音子菜单"TREBLE"字符
SendDataMTV018(TAB_SOUND_BASS,13);
//显示声音子菜单"BALANCE"字符
SendDataMTV018(TAB_SOUND_TREBLE,13);
}
/*-----------------------------------------------------------------------------*/
uchar code TAB_SETUP_MIRROR[]=
{ 0x81,0x44,0x00,0xD2,0xD3,OSD_M,OSD_I,OSD_R,OSD_R,OSD_0,OSD_R,0x00,0x00};
uchar code TAB_SETUP_BLUE[]=
{ 0x82,0x44,0x00,0xA8,0xA9,OSD_B,OSD_L,OSD_U,OSD_E,OSD_NC,0x00,0x00,0x00};
uchar code TAB_SETUP_BELL[]=
{ 0x83,0x44,0x00,0x24,0x25,OSD_B,OSD_E,OSD_L,OSD_L,OSD_NC,OSD_NC,0x00,0x00};
uchar code TAB_SETUP_TUNE[]=
{ 0x84,0x44,0x00,0xAA,0xAB,OSD_T,OSD_U,OSD_N,OSD_E,0x00,0x00,0x00,0x00};
void DispSetupSubMenu(void)//DISP_SETUP_SUB_MENU显示"SETUP"的子菜单
{
//显示设置镜像菜单字符
SendDataMTV018(TAB_SETUP_MIRROR,13);
//显示缺省值菜单字符
SendDataMTV018(TAB_SETUP_BLUE,13);
//显示电视调节菜单字符
SendDataMTV018(TAB_SETUP_BELL,13);
//显示波段调节菜单字符
SendDataMTV018(TAB_SETUP_TUNE,13);
}
/*-----------------------------------------------------------------------------*/
//显示"PIC"子菜单
uchar code TAB_BRIGHT[]=
{ 0x81,0x44,0x00,0xE0,0xE1,OSD_B,OSD_R,OSD_I,OSD_G,OSD_H,OSD_T,OSD_NC,OSD_NC};
uchar code TAB_CONTRAST[]=
{ 0x82,0x44,0x00,0xE2,0xE3,OSD_C,OSD_0,OSD_N,OSD_T,OSD_R,OSD_A,OSD_S,OSD_T};
uchar code TAB_COLOR[]=
{ 0x83,0x44,0x00,0xC6,0xC7,OSD_C,OSD_0,OSD_L,OSD_0,OSD_R,OSD_NC,OSD_NC,OSD_NC};
uchar code TAB_RESET[]=
{ 0x84,0x44,0x00,0xB0,0xB1,OSD_R,OSD_E,OSD_S,OSD_E,OSD_T,OSD_NC,OSD_NC,OSD_NC};
void DispPicSubMenu(void)//调用图象调节显示菜单
{
//显示亮度菜单字符
SendDataMTV018(TAB_BRIGHT,13);
//显示对比度菜单字符
SendDataMTV018(TAB_CONTRAST,13);
//显示色度菜单字符
SendDataMTV018(TAB_COLOR,13);
//显示色调菜单字符
SendDataMTV018(TAB_RESET,13);
}
/*-----------------------------------------------------------------------------*/
//一级菜单高亮程序
void MainMenuHlight(void)//相应菜单高亮
{
uchar i,j;
uchar Buf[8];
i = 0xA2;
do
{
j = 21;
do
{
Buf[0] = i;
Buf[1] = j;
Buf[2] = b00000010B;
ISendStr(MTV018_ADDR,Buf[0],&Buf[1],2);
j++;
}while(j<27);
i++;
}while(i<0xA5);
i = ucMenuKeyCnt + 0xA1;
if(i == 0xA1)
i = 0xA4;
Buf[0] = i;
Buf[1] = 0x55;
Buf[2] = b00000111B;
Buf[3] = b00000111B;
Buf[4] = b00000111B;
Buf[5] = b00000111B;
Buf[6] = b00000111B;
Buf[7] = b00000111B;
ISendStr(MTV018_ADDR,Buf[0],&Buf[1],7);//全部一级菜单绿色
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -