📄 mtv018.c
字号:
/*******************************************************************************
** (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 + -