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

📄 mtv018.c

📁 MTV018驱动源程序。用于车载LCD TV的OSD菜单显示源程序。并且包括了I2C的源程序。
💻 C
📖 第 1 页 / 共 5 页
字号:

/*-----------------------------------------------------------------------------*/
//二级菜单高亮程序
void SubMenuHlight(void)//SUB_MENU_HLIGHT;执行二级菜单高亮
{
    uchar i,j;
    uchar Buf[12];

    i = 0xA1;
    do
    {
        j = 5;
        do
        {
            Buf[0] = i;
            Buf[1] = j;
            Buf[2] = b00000010B;
            ISendStr(MTV018_ADDR,Buf[0],&Buf[1],2);
            j++;
        }while(j<15);
        i++;
    }while(i<0xA5);

    Buf[0] = ucSelectKeyCnt + 0xA1;
    Buf[1] = 0x45;
    Buf[2] = b00000111B;
    Buf[3] = b00000111B;
    Buf[4] = b00000111B;
    Buf[5] = b00000111B;
    Buf[6] = b00000111B;
    Buf[7] = b00000111B;
    Buf[8] = b00000111B;
    Buf[9] = b00000111B;
    Buf[10] = b00000111B;
    Buf[11] = b00000111B;
    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:
********************************************************************************************************/
uchar code TAB_NORMAL[]=
    { 0x00,OSD_N,OSD_0,OSD_R,OSD_M,OSD_A,OSD_L,0x00,0x00,0x00};//NORMAL
uchar code TAB_MIRROR[]=
    { 0x00,0x00,0x00,OSD_M,OSD_I,OSD_R,OSD_R,OSD_0,OSD_R,0x00};//MIRROR
uchar code TAB_BLUE[]=
    { 0x00,0x00,0x00,OSD_B,OSD_L,OSD_U,OSD_E,OSD_NC,0x00,0x00};//RESET
uchar code TAB_AUTO[]=
    { 0x00,0x00,0x00,OSD_A,OSD_U,OSD_T,OSD_0,0x00,0x00,0x00};//UHF
uchar code TAB_ON[]=
    { 0x00,0x00,0x00,OSD_0,OSD_N,OSD_NC,0x00,0x00,0x00,0x00};//ON
uchar code TAB_OFF[]=
    { 0x00,0x00,0x00,OSD_0,OSD_F,OSD_F,0x00,0x00,0x00,0x00};//OFF
uchar code TAB_DOWN_RESET[]=
    { 0x00,0x00,0x00,OSD_R,OSD_E,OSD_S,OSD_E,OSD_T,OSD_NC,0x00};//RESET

void MenuAdjustBar(void)
{
    uchar ucValue;
    uchar Buf[4];

    if(ucMenuKeyCnt == 1)//PIC子菜单
    {
        switch(ucSelectKeyCnt)
        {
            case 0:
            {
                ucValue = AllSimAdjust(ucBright);
                if(ucValue != ucBright)
                    ucVideoModel = CUSTOM;
                ucBright = ucValue;
                DispBar(ucBright);            //显示中间调整条
                DispBarData(ucBright);        //显示调整条数字
                SimAdjustAttr();      //模拟量调整显示属性
                if(bFMDoubleSizeID)
                    Buf[0] = 0x89;
                else
                    Buf[0] = 0x8A;
                Buf[1] = 0x45;
                Buf[2] = 0xE0;//字符
                Buf[3] = 0xE1;
                ISendStr(MTV018_ADDR,Buf[0],&Buf[1],3);
                break;
            }//the end of case
            case 1:
            {
                ucValue = AllSimAdjust(ucContrast);
                if(ucValue != ucContrast)
                    ucVideoModel = CUSTOM;
                ucContrast = ucValue;
                DispBar(ucContrast);            //显示中间调整条
                DispBarData(ucContrast);        //显示调整条数字
                SimAdjustAttr();      //模拟量调整显示属性
                if(bFMDoubleSizeID)
                    Buf[0] = 0x89;
                else
                    Buf[0] = 0x8A;
                Buf[1] = 0x45;
                Buf[2] = 0xE2;//字符
                Buf[3] = 0xE3;
                ISendStr(MTV018_ADDR,Buf[0],&Buf[1],3);
                break;
            }//the end of case
            case 2:
            {
                ucValue = AllSimAdjust(ucColor);
                if(ucValue != ucColor)
                    ucVideoModel = CUSTOM;
                ucColor = ucValue;
                DispBar(ucColor);            //显示中间调整条
                DispBarData(ucColor);        //显示调整条数字
                SimAdjustAttr();      //模拟量调整显示属性
                if(bFMDoubleSizeID)
                    Buf[0] = 0x89;
                else
                    Buf[0] = 0x8A;
                Buf[1] = 0x45;
                Buf[2] = 0xC6;//字符
                Buf[3] = 0xC7;
                ISendStr(MTV018_ADDR,Buf[0],&Buf[1],3);
                break;
            }//the end of case
            case 3:
            {
                ucResetValue = AllSwitchAdjust(ucResetValue);
                DispSwitchAdjustFront(TAB_NORMAL);
                DispSwitchAdjustRear(TAB_DOWN_RESET);
                DataOKBlink(ucResetValue);
                if(bFMDoubleSizeID)
                    Buf[0] = 0x89;
                else
                    Buf[0] = 0x8A;
                Buf[1] = 0x45;
                Buf[2] = 0xB0;
                Buf[3] = 0xB1;
                ISendStr(MTV018_ADDR,Buf[0],&Buf[1],3);
                break;
            }//the end of case
        }//the end of switch(ucSelectKeyCnt)
    }//if(ucMenuKeyCnt == 1)

    //FM  OSD显示声音调整菜单;入口参数:A=2 ;声音子菜单
    if(ucMenuKeyCnt == 2)
    {
        switch(ucSelectKeyCnt)
        {
            case 0:
            {
                ucBass = AllSoundAdjust(ucBass);
                DispSoundBar(ucBass);//显示声音指示条
                DispSoundBarData(ucBass);//声音OSD指示条后数据(前后)
                SimAdjustAttr();//模拟量调整显示属性
                SendSoundDataPT2313();//送声音参数到PT2313
                if(bFMDoubleSizeID)
                    Buf[0] = 0x89;
                else
                    Buf[0] = 0x8A;
                Buf[1] = 0x45;
                Buf[2] = 0xC8;//字符
                Buf[3] = 0xC9;
                ISendStr(MTV018_ADDR,Buf[0],&Buf[1],3);
                break;
            }//the end of case
            case 1:
            {
                ucTreble = AllSoundAdjust(ucTreble);
                DispSoundBar(ucTreble);//显示声音指示条
                DispSoundBarData(ucTreble);//声音OSD指示条后数据(前后)
                SimAdjustAttr();//模拟量调整显示属性
                SendSoundDataPT2313();//送声音参数到PT2313
                if(bFMDoubleSizeID)
                    Buf[0] = 0x89;
                else
                    Buf[0] = 0x8A;
                Buf[1] = 0x45;
                Buf[2] = 0xCA;//字符
                Buf[3] = 0xCB;
                ISendStr(MTV018_ADDR,Buf[0],&Buf[1],3);
                break;
            }//the end of case
            case 2:
            {
                ucBalanceRL = AllSoundAdjust(ucBalanceRL);
                DispSoundBar(ucBalanceRL);//显示声音指示条
                DispSoundBarDataRL(ucBalanceRL);//声音OSD指示条后数据(前后)
                SimAdjustAttr();//模拟量调整显示属性
                SendSoundDataPT2313();//送声音参数到PT2313
                if(bFMDoubleSizeID)
                    Buf[0] = 0x89;
                else
                    Buf[0] = 0x8A;
                Buf[1] = 0x45;
                Buf[2] = 0xD0;//字符
                Buf[3] = 0xD1;
                ISendStr(MTV018_ADDR,Buf[0],&Buf[1],3);
                break;
            }//the end of case
            case 3:
            {
                ucBalanceFB = AllSoundAdjust(ucBalanceFB);
                DispSoundBar(ucBalanceFB);//显示声音指示条
                DispSoundBarDataFR(ucBalanceFB);//声音OSD指示条后数据(前后)
                SimAdjustAttr();//模拟量调整显示属性
                SendSoundDataPT2313();//送声音参数到PT2313
                if(bFMDoubleSizeID)
                    Buf[0] = 0x89;
                else
                    Buf[0] = 0x8A;
                Buf[1] = 0x45;
                Buf[2] = 0xD6;
                Buf[3] = 0xD7;
                ISendStr(MTV018_ADDR,Buf[0],&Buf[1],3);
                break;
            }//the end of case
        }//the end of switch(ucSelectKeyCnt)
    }//if(ucMenuKeyCnt == 2)

    //;设置标志选择
    if(ucMenuKeyCnt == 3)
    {
        switch(ucSelectKeyCnt)
        {
            case 0:
            {
                ucMirrorValue = AllSwitchAdjust(ucMirrorValue);
                DispSwitchAdjustFront(TAB_NORMAL);
                DispSwitchAdjustRear(TAB_MIRROR);
                DataOKBlink(ucMirrorValue);
                if(bFMDoubleSizeID)
                    Buf[0] = 0x89;
                else
                    Buf[0] = 0x8A;
                Buf[1] = 0x45;
                Buf[2] = 0xC8;//字符
                Buf[3] = 0xC9;
                ISendStr(MTV018_ADDR,Buf[0],&Buf[1],3);
                break;
            }//the end of case
            case 1:
            {
                ucBlueValue = AllSwitchAdjust(ucBlueValue);
                DispSwitchAdjustFront(TAB_ON);
                DispSwitchAdjustRear(TAB_OFF);
                DataOKBlink(ucBlueValue);
                if(bFMDoubleSizeID)
                    Buf[0] = 0x89;
                else
                    Buf[0] = 0x8A;
                Buf[1] = 0x45;
                Buf[2] = 0xA8;//字符
                Buf[3] = 0xA9;
                ISendStr(MTV018_ADDR,Buf[0],&Buf[1],3);
                break;
            }//the end of case
            case 2:
            {
                ucBellValue = AllSwitchAdjust(ucBellValue);
                DispSwitchAdjustFront(TAB_ON);
                DispSwitchAdjustRear(TAB_OFF);
                DataOKBlink(ucBellValue);
                if(bFMDoubleSizeID)
                    Buf[0] = 0x89;
                else
                    Buf[0] = 0x8A;
                Buf[1] = 0x45;
                Buf[2] = 0x24;//按键音图标
                Buf[3] = 0x25;
                ISendStr(MTV018_ADDR,Buf[0],&Buf[1],3);
                break;
            }//the end of case
            case 3:
            {
                ucTVAutoValue = AllSwitchAdjust(ucTVAutoValue);
                DispSwitchAdjustFront(TAB_OFF);
                DispSwitchAdjustRear(TAB_AUTO);
                DataOKBlink(ucTVAutoValue);
                if(bFMDoubleSizeID)
                    Buf[0] = 0x89;
                else
                    Buf[0] = 0x8A;
                Buf[1] = 0x45;
                Buf[2] = 0xAA;//调谐图标
                Buf[3] = 0xAB;
                ISendStr(MTV018_ADDR,Buf[0],&Buf[1],3);
                break;
            }//the end of case
        }//the end of switch(ucSelectKeyCnt)
    }//if(ucMenuKeyCnt == 3)

}//the end of function void MenuAdjustBar(void)
/*-----------------------------------------------------------------------------*/
//显示声音指示条
void DispSoundBar(uchar ucValue)
{
	uint8 Buf[3],i,j;

	if(bFMDoubleSizeID)
    	Buf[0] = 0x89;
    else
        Buf[0] = 0x8A;
    Buf[1] = 0x47;
    Buf[2] = 0x9F;
    ISendStr(MTV018_ADDR,Buf[0],&Buf[1],2);

    //ucValue = ucValue>>2;
    if(bFMDoubleSizeID)
    	Buf[0] = 0x89;
    else
        Buf[0] = 0x8A;
    j = 0xff;
    for(i = 0x48;i<0x57;i++)
    {
    	Buf[1] = i;
    	j++;
    	if(j == ucValue)
    		Buf[2] = 0xA0;
    	else
    	    Buf[2] = 0xA6;
    	ISendStr(MTV018_ADDR,Buf[0],&Buf[1],2);
    }
}
/*-----------------------------------------------------------------------------*/
//声音OSD指示条后数据
void DispSoundBarData(uint8 AdjustDispRam)
{
	uint8 Buf[5];

	if(bFMDoubleSizeID)
		Buf[0] = 0x89;
	else
	    Buf[0] = 0x8A;
	Buf[1] = 0x57;
	Buf[2] = 0xA7;
	if(AdjustDispRam == 7)
	{
		Buf[3] = 1;
		Buf[4] = 1;
	}
	else if(AdjustDispRam > 7)
	{
		Buf[3] = 0xF0; //+
		Buf[4] = (AdjustDispRam - 7)+1;
	}
	else
	{
		Buf[3] = 0xEF; //-
		Buf[4] = (7 - AdjustDispRam)+1;
	}
	ISendStr(MTV018_ADDR,Buf[0],&Buf[1],4);
}
/*-----------------------------------------------------------------------------*/
//声音OSD指示条后数据(前后)
void DispSoundBarDataFR(uchar AdjustDispRam)
{
    uchar Buf[5];

    AdjustDispRam <<= 1;//*2

    if(bFMDoubleSizeID)//显示RADIO时双倍尺寸
        Buf[0] = OSD_ADDR_ROW_9;
    else
        Buf[0] = OSD_ADDR_ROW_10;
    Buf[1] = OSD_COLUMN_23;
    Buf[2] = 0xa7;//"]"
    if(AdjustDispRam == 14)
    {
        Buf[3] = 1;
        Buf[4] = 1;
    }
    else if(AdjustDispRam >14)
    {
        Buf[3] = OSD_F;
        Buf[4] = ((AdjustDispRam-14)>>1)+1;
    }
    else
    {
        Buf[3] = OSD_R;
        Buf[4] = ((15-AdjustDispRam)>>1)+1;
    }

⌨️ 快捷键说明

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