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

📄 mtv018.c

📁 MTV018驱动源程序。用于车载LCD TV的OSD菜单显示源程序。并且包括了I2C的源程序。
💻 C
📖 第 1 页 / 共 5 页
字号:
/*******************************************************************************
**                            (c) Copyright 2004-2005, xujiajun
**                                    All Rights Reserved
**                                        V040723
**--------------文件信息--------------------------------------------------------
**创   建   人: 徐家俊
**创建日期: 2006年1月20日
**描        述:MTV018驱动
**--------------版本修订历史----------------------------------------------------
** 修改人:徐家俊
** 版  本: V
** 日 期: 年月日
** 描 述:
**--------------当前版本修订----------------------------------------------------
** 修改人:徐家俊
** 版  本:
** 日 期:年月日
** 描 述:
**------------------------------------------------------------------------------
*******************************************************************************/
#define IN_MTV018
#include"main.h"
/*-----------------------------------------------------------------------------*/
//functions declare
void FreshOSDTime(void);
void DispBar(uchar AdjustDispRam);      // 显示中间调整条
void DispBarData(uchar AdjustDispRam);  //显示指示条后数据
void SimAdjustAttr(void);               // 模拟量调整显示属性

uchar code TAB_MENU[];
void ClearCDChannelInfo(void);
void ClearWinCDInfo(void);
void ClearCharCDInfo(void);
void DispSmallWindows(void);//如果主菜单已显示则不用在重新显示小窗口
void DispMainMenu(void);//显示主菜单(并且"PIC"高亮,包含PIC的子菜单)
void DispPicSubMenu(void);//调用图象调节显示菜单
void MainMenuHlight(void);//相应菜单高亮
void SubMenuHlight(void);//SUB_MENU_HLIGHT;执行二级菜单高亮
void MenuAdjustBar(void);
void DispSoundSubMenu(void);//DISP_SOUND_SUB_MENU;显示"SOUND"的子菜单
void DispSetupSubMenu(void);//DISP_SETUP_SUB_MENU显示"SETUP"的子菜单

uchar AllSoundAdjust(uchar ucParam);
uchar AllSimAdjust(uchar ucParam);
uchar AllSwitchAdjust(uchar ucParam);
//显示开关量前半部分
void DispSwitchAdjustFront(uchar code *pCode);
//显示开关量后半部分
void DispSwitchAdjustRear(uchar code *pCode);
//选中值闪烁程序;人口参数R5;DATA_OK_BLINK:
void DataOKBlink(uchar ucBlink);
//显示声音指示条
void DispSoundBar(uchar ucValue);
//显示指示条后数据
void DispBarData(uchar AdjustDispRam);
//声音OSD指示条后数据
void DispSoundBarData(uint8 AdjustDispRam);
//声音OSD指示条后数据(前后)
void DispSoundBarDataFR(uchar AdjustDispRam);
//声音OSD指示条后数据(平衡)
void DispSoundBarDataRL(uchar AdjustDispRam);
/********************************************************************************************************
 Descriptions:          MTV018 initial
 input parameters:      None
 Returned value:        None
 Used global variables: None
 Calling modules:       None
 Created by:            xjj 2006/01/20
-------------------------------------------------------------------------------------------------------
 Modified by:
********************************************************************************************************/
void OSDInitial()
{
    uchar Buf[9] = {
                    //;OSD初始参数  12 04H    13 03H    14  01H
                    0xAF,0x4C,  b00000011B,b00000000B,b00000001B,
                    //;15  40H   16  00H   17 0FH    18 4CH
                    b00110000B,b00000000B,b11110000B,b01001100B// ;12到18行
                   };
    ISendStr(MTV018_ADDR, Buf[0], &Buf[1], 8);
}
/********************************************************************************************************
 Descriptions:          Clear all OSD
 input parameters:      None
 Returned value:        None
 Used global variables: None
 Calling modules:       None
 Created by:            xjj 2006/01/20
-------------------------------------------------------------------------------------------------------
 Modified by:
********************************************************************************************************/
void ClearAllOSD(void)
{
    //清RAM;清除窗口和字符
    uchar Buf[3] = {0xaf, 0x11,b11110110B };
    ISendStr(MTV018_ADDR, Buf[0], &Buf[1], 2);
    //使能窗口和字符
    Buf[0] = 0xaf;
    Buf[1] = 0x11;
    Buf[2] = b11110000B;
    ISendStr(MTV018_ADDR, Buf[0], &Buf[1], 2);
}
/********************************************************************************************************
 Descriptions:          SetRowAttribute
 input parameters:      StartRow:from 0 to 14;EndRow:from 0 to 14; EndRow>=StartRow
                        Attrib:         b7 b6 b5 b4 b3 b2 b1 b0
                                         - -  -  R2 G2 B2 CHS CWS
                        R2, G2, B2 - These bits are used to specify its relative row character color 2.
                                     While corresponding CCS bit is set to 1, color 2 should be chosen.
                        CHS - Define double height character to the respective row.
                        CWS - Define double width character to the respective row.
 Returned value:        None
 Used global variables: None
 Calling modules:       None
 Created by:            xjj 2006/01/20
-------------------------------------------------------------------------------------------------------
 Modified by:
********************************************************************************************************/
void SetRowAttribute(uchar StartRow, uchar EndRow, uchar Attrib)
{
    uchar Buf[2];

    Buf[0] = 30;
    Buf[1] = Attrib;
    if(StartRow > EndRow)
        return;
    if(EndRow > 14)
        return;
    do
    {
        ISendStr(MTV018_ADDR, (StartRow|0x80), &Buf[0], 2);
        StartRow++;
    }while(StartRow <= EndRow);
}
/********************************************************************************************************
 Descriptions:          Set display register attribute byte
 input parameters:      StartRow:from 0 to 14;EndRow:from 0 to 14; EndRow>=StartRow
                        Attrib: b7 b6 b5 b4 b3 b2 b1 b0
                                - - - - BLINK R1 G1 B1
                                BLINK - Enable blinking effect while this bit is set to " 1 ".
                                        And the blinking is alternate per 32 vertical frames.
                                R1, G1, B1 - These bits are used to specify its relative address
                                             character color 1.
 Returned value:        None
 Used global variables: None
 Calling modules:       None
 Created by:            xjj 2006/01/20
-------------------------------------------------------------------------------------------------------
 Modified by:
********************************************************************************************************/
void SetDisplayAttribute(uchar StartRow, uchar EndRow, uchar Attrib)
{
    uchar Buf[2];
    uchar i;

    Buf[1] = Attrib;
    if(StartRow > EndRow)
        return;
    if(EndRow > 14)
        return;
    do
    {
        for(i=0;i<30;i++)
        {
            Buf[0] = i;
            ISendStr(MTV018_ADDR, (StartRow|0xA0), &Buf[0], 2);
        }
        StartRow++;
    }while(StartRow <= EndRow);
}
/********************************************************************************************************
 Descriptions:          电视制式调整PAL
 input parameters:      None
 Returned value:        None
 Used global variables: None
 Calling modules:       None
 Created by:            xjj 2006/01/20
-------------------------------------------------------------------------------------------------------
 Modified by:
********************************************************************************************************/
void SetMTV018PAL(void)
{
    uchar Buf[6] = {OSD_ATTR_ROW_15,OSD_COLUMN_12,
                    0x05,0x03,0x05,0x20};
    ISendStr(MTV018_ADDR, Buf[0], &Buf[1], 5);

}
/********************************************************************************************************
 Descriptions:          电视制式调整NTSC
 input parameters:      None
 Returned value:        None
 Used global variables: None
 Calling modules:       None
 Created by:            xjj 2006/01/20
-------------------------------------------------------------------------------------------------------
 Modified by:
********************************************************************************************************/
void SetMTV018NTSC(void)
{
    uchar Buf[6] = {OSD_ATTR_ROW_15,OSD_COLUMN_12,
                    0x03,0x03,0x01,0x20};
    ISendStr(MTV018_ADDR, Buf[0], &Buf[1], 5);

}
/********************************************************************************************************
 Descriptions:          auto set the state of OSD;  OSD  NP自动制式调整
 input parameters:      None
 Returned value:        None
 Used global variables: None
 Calling modules:       None
 Created by:            xjj 2006/01/20
-------------------------------------------------------------------------------------------------------
 Modified by:
********************************************************************************************************/
void OSDNPAutoAdjust(void)
{
    if(NP_Port)
    {
        SetMTV018NTSC();
    }
    else
    {
        SetMTV018PAL();
    }
}
/********************************************************************************************************
 Descriptions:          send data to MTV018
 input parameters:      pCode: Code data table first address
                        Cnt  : 1 to 16
 Returned value:        None
 Used global variables: None
 Calling modules:       None
 Created by:            xjj 2006/01/20
-------------------------------------------------------------------------------------------------------
 Modified by:
********************************************************************************************************/
void SendDataMTV018(uchar code *pCode, uchar Cnt)
{
    uchar Buf[16];
    uchar i;
    for(i=0;i<Cnt;i++)
    {
        Buf[i] = *pCode;
        pCode++;
    }
    ISendStr(MTV018_ADDR, Buf[0], &Buf[1], (Cnt-1));
}
/********************************************************************************************************
 Descriptions:          Auto clear OSD, call in very cycle block
 input parameters:      None
 Returned value:        None
 Used global variables: None
 Calling modules:       None
 Created by:            xjj 2006/01/20
-------------------------------------------------------------------------------------------------------
 Modified by:           simon 2006.05.11
                        -- add code for clearing OSD when backing car
********************************************************************************************************/
void AutoClearOSD(void)
{
    if(ucOSDAutoClearTime == 0)
    {
      if(bRadarID == 0)
      {
        //for test时间到,清屏幕和窗口,当时间到时清除OSD clear all OSD flag
        ucOSDAutoClearTime = OSD_AUTO_CLEAR_STOP;
        ClearAllOSD();//LCALL   CLEAR_ALL_OSD
        bMainMenuOn = 0;//CLR   MAIN_MENU_ON
        ucMenuKeyCnt = 0;
        ucSelectKeyCnt = 0;
        bDirectVolumeID = 1;//SETB  DIRECT_VOL_ID;直接音量标志
        bOSDTimeDispID = 0;
        bRemUseID = 1;
        StoreMainData();
      }
      else
      {
        ucOSDAutoClearTime = OSD_AUTO_CLEAR_STOP;
        ClearAllOSD();//LCALL   CLEAR_ALL_OSD
        bMainMenuOn = 0;//CLR   MAIN_MENU_ON
        bRemUseID = 1;
        ucRemValue = REM_INVALID;
        ucRemShadow = REM_INVALID;
      }
    }
}

/********************************************************************************************************
 Descriptions:          start logo
 input parameters:      None
 Returned value:        None
 Used global variables: None
 Calling modules:       None
 Created by:            xjj 2006/01/20
-------------------------------------------------------------------------------------------------------
 Modified by:           simon 2006.05.06
********************************************************************************************************/
/*
void StartLogo()
{//for test
    uchar Buf[6];
    Buf[0] = OSD_ADDR_ROW_5;
    Buf[1] = OSD_COLUMN_12;
    Buf[2] = OSD_L;
    Buf[3] = OSD_0;
    Buf[4] = OSD_G;
    Buf[5] = OSD_0;
    ISendStr(MTV018_ADDR, Buf[0], &Buf[1], 5);
}
*/
uchar code TAB_CHARACTER_ROW1[]=
//	{0,0,0,0,0,0,0,0,0,0,0,OSD_M,0,OSD_0,0,OSD_V,0,OSD_I,0,OSD_E,0,OSD_S,0,OSD_I,0,OSD_0,0,OSD_N,0,0,0,0,0};
	{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
uchar code TAB_CHARACTER_ROW2[]=
	{0,0,0,0,0,OSD_A,OSD_V,OSD_NC,OSD_C,OSD_0,OSD_N,OSD_T,OSD_R,OSD_0,OSD_L,OSD_NC,OSD_NC,OSD_C,OSD_E,OSD_N,
	 OSD_T,OSD_E,OSD_R,0,0,0,0,0,0,0,0,0,0};

void StartLogo()
{
  uchar Buf[33];
  uchar Cnt = 29;
  uchar i;
  uchar j = 5;

  //第1行Logo字符双倍宽高
  Buf[0] = OSD_START_LOGO_ROW1;
  Buf[1] = OSD_COLUMN_30;
  Buf[2] = b00000011B; //bit^0:width; bit^1:height
  ISendStr(MTV018_ADDR, Buf[0], &Buf[1], 2);

  //Moving Picture
  while(Cnt)
  {
  	//assign characters for 1st row displaying
    for (i=2;i<j;i++)
      Buf[i] = TAB_CHARACTER_ROW1[Cnt+i-2];

    Buf[0] = OSD_START_LOGO_ROW1;
    Buf[1] = OSD_COLUMN_0;
    ISendStr(MTV018_ADDR, Buf[0], &Buf[1], (j>29)?29:j-1);

    //assign characters for 2nd row displaying
    for (i=2;i<j;i++)
      Buf[i] = TAB_CHARACTER_ROW2[i-2];

    Buf[0] = OSD_START_LOGO_ROW2;
    Buf[1] = OSD_COLUMN_29 - j + 5;
    ISendStr(MTV018_ADDR, Buf[0], &Buf[1], j-3);

    SoftDelay100us(100);
    j++;
    Cnt--;
  }//end -- while(Cnt)

  SoftDelay100us(5000);
  //第1行Logo字符恢复单倍显示
  Buf[0] = OSD_START_LOGO_ROW1;
  Buf[1] = OSD_COLUMN_30;
  Buf[2] = b00000000B; //bit^0:width; bit^1:height
  ISendStr(MTV018_ADDR, Buf[0], &Buf[1], 2);
}
/********************************************************************************************************
 Descriptions:          OSD display mute ID;DISP_OSD_MUTE_ID
 input parameters:      None
 Returned value:        None
 Used global variables: None
 Calling modules:       None
 Created by:            xjj 2006/01/20
-------------------------------------------------------------------------------------------------------
 Modified by:
********************************************************************************************************/
void DispOSDMuteID(void)
{
    uchar Buf[6];
    if(bKeyMuteID)//JB  KEY_MUTE_ID,NO_DISP_STANDBY_MUTE_CHAR;按键静音标志(=0静音)
    {
        Buf[2] = OSD_NC;
        Buf[3] = OSD_NC;
        Buf[4] = OSD_NC;
        Buf[5] = OSD_NC;
    }
    else
    {
        if(bClockFlashID)
        {
            Buf[2] = OSD_M;

⌨️ 快捷键说明

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