📄 osd.c
字号:
UB8 bCharAttr // Char Attribute
)
{
BITEK_TxRepeat(OSD_MAD, VP_0500_057F_DISPLAY_CODE + bOffset, bCnt, bCharCode);
BITEK_TxRepeat(OSD_MAD, VP_0580_05FF_DISPLAY_ATTR + bOffset, bCnt, bCharAttr);
} /* OSD_FillCharCodeAttr */
/* -------------------------------------------------------------------
Name: OSD_Init - (OSD_BIT1611B)
Purpose: To initialize OSD module.
Passed: None.
Returns: None.
Notes:
------------------------------------------------------------------- */
void OSD_Init (void)
{
// [1]116 Setup Palette for Background and Foregound !
BITEK_TxBurst(OSD_MAD, VP_0600_063F_PALETTE, sizeof(abOSD_Palette), abOSD_Palette);
/* ####################################
Windows 1
#################################### */
OSD_FillCharCodeAttr(OSD_WINDOW1_BASE,
OSD_WINDOW1_AREA,
' ',
OSD1_COLOR_HILIGHT);
// To normal row #0 of Window 1
OSD_FillCharAttr(OSD_WINDOW1_BASE,
OSD_WINDOW1_WIDTH,
OSD1_COLOR_NORMAL );
// [1]118 OSD1 Display RAM Start Index
BITEK_TxByte(OSD_MAD, VP_13D_OSD1_RAM_INDEX, OSD_WINDOW1_BASE);
// [1]118 OSD1 OSD Fade Level
BITEK_TxByte(OSD_MAD, VP_13E_OSD1_FADE_LEVEL, OSD1_FADE_LEVEL);
// [1]118 OSD1 OSD BORDER
BITEK_TxByte(OSD_MAD, VP_13F_OSD1_BORDER_SEL, OSD1_BORDER);
// [1]118 OSD1 OSD BORDER Attr
BITEK_TxByte(OSD_MAD, VP_140_OSD1_ATTR1, OSD1_BORDER_ATTR);
// [1]118 OSD1 Attribute 1
BITEK_TxByte(OSD_MAD, VP_141_OSD1_ATTR2, OSD1_CHAR_SIZE);
// [1]118 OSD1 Attribute 2
////////////////////////////////////////////////////////
// [JC010] OSD Image Retention issue fixed by JC 09:15AM 2006/04/25
//BITEK_TxByte(OSD_MAD, VP_143_OSD1_ATTR4, OSD1_LINE_BLINK);
BITEK_TxByte(OSD_MAD, VP_143_OSD1_ATTR4, OSD1_LINE_BLINK | VP_MASK_OSD1_EN);
////////////////////////////////////////////////////////
OSD_SetWindow(OSD_WINDOW1,
OSD_WINDOW1_H, // in clocks
OSD_WINDOW1_V, // in horizontal lines
OSD_WINDOW1_WIDTH, // in characters
OSD_WINDOW1_HEIGHT ); // in rows
/* ####################################
Windows 2
#################################### */
OSD_FillCharCodeAttr(OSD_WINDOW2_BASE,
OSD_WINDOW2_AREA,
' ',
OSD2_COLOR_NORMAL);
// [1]119 OSD2 Display RAM Start Index
BITEK_TxByte(OSD_MAD, VP_14B_OSD2_RAM_INDEX, OSD_WINDOW2_BASE);
// [1]119 OSD2 OSD Fade Level
BITEK_TxByte(OSD_MAD, VP_14C_OSD2_FADE_LEVEL, OSD2_FADE_LEVEL);
// [1]119 OSD2 OSD BORDER
BITEK_TxByte(OSD_MAD, VP_14D_OSD2_BORDER_SEL, OSD2_BORDER);
// [1]119 OSD2 OSD BORDER Attr
BITEK_TxByte(OSD_MAD, VP_14E_OSD2_ATTR1, OSD2_BORDER_ATTR);
// [1]119 OSD2 Attribute 1
BITEK_TxByte(OSD_MAD, VP_14F_OSD2_ATTR2, OSD2_CHAR_SIZE);
// [1]119 OSD2 Attribute 2
BITEK_TxByte(OSD_MAD, VP_151_OSD2_ATTR4, OSD2_LINE_BLINK);
OSD_SetWindow(OSD_WINDOW2,
OSD_WINDOW2_H, // in clocks
OSD_WINDOW2_V, // in horizontal lines
OSD_WINDOW2_WIDTH, // in characters
OSD_WINDOW2_HEIGHT ); // in rows
/* ####################################
Windows 3
#################################### */
OSD_FillCharCodeAttr(OSD_WINDOW3_BASE,
OSD_WINDOW3_AREA,
' ',
OSD3_COLOR_NORMAL );
// To HILIGHT row #0 of Window 3
OSD_FillCharAttr(OSD_WINDOW3_BASE,
OSD_WINDOW3_WIDTH,
OSD3_COLOR_HILIGHT );
// ICON of Window 3
OSD_FillCharAttr(OSD_WINDOW3_BASE + OSD_X_ICON,
1,
OSD3_COLOR_ICON );
// [1]120 OSD3 Display RAM Start Index
BITEK_TxByte(OSD_MAD, VP_159_OSD3_RAM_INDEX, OSD_WINDOW3_BASE);
// [1]120 OSD3 OSD Fade Level
BITEK_TxByte(OSD_MAD, VP_15A_OSD3_FADE_LEVEL, OSD3_FADE_LEVEL);
// [1]120 OSD3 OSD BORDER
BITEK_TxByte(OSD_MAD, VP_15B_OSD3_BORDER_SEL, OSD3_BORDER);
// [1]120 OSD3 OSD BORDER Attr
BITEK_TxByte(OSD_MAD, VP_15C_OSD3_ATTR1, OSD3_BORDER_ATTR);
// [1]120 OSD3 Attribute 1
BITEK_TxByte(OSD_MAD, VP_15D_OSD3_ATTR2, OSD3_CHAR_SIZE);
// [1]120 OSD3 Attribute 2
BITEK_TxByte(OSD_MAD, VP_15F_OSD3_ATTR4, OSD3_LINE_BLINK);
OSD_SetWindow(OSD_WINDOW3,
OSD_WINDOW3_H,
OSD_WINDOW3_V,
OSD_WINDOW3_WIDTH,
OSD_WINDOW3_HEIGHT );
} /* OSD_Init */
/* -------------------------------------------------------------------
Name: OSD_SetWindow - (OSD_BIT1611B)
Purpose: To setup OSD window position and size on the panel screen.
Passed:
UB8 bWindow = OSD Window Identifier.
UW16 wH_Pos = Horizontal position in clocks.
UW16 wV_Pos = Vertical position in horizontal lines.
UB8 bWidth = Horizontal size in characters.
UB8 bHeight = Vertical size in rows.
Returns: None
Notes: [1]115
------------------------------------------------------------------- */
void OSD_SetWindow (
UB8 bWindow, // WINDOW 1, WINDOW 2 or WINDOW 3
UW16 wH_Pos, // Horizontal position in clocks (0..2047)
UW16 wV_Pos, // Vertical position in horizontal lines (0..511)
UB8 bWidth, // Horizontal size in characters (0..63)
UB8 bHeight // Vertical size in rows (0..31)
)
{
switch (bWindow)
{
case OSD_WINDOW1:
// [1]115 Horizontal Position
BITEK_TxByte(OSD_MAD, VP_13813A_OSD1_H_POSITION, wH_Pos);
// [1]115 Vertical Position
BITEK_TxByte(OSD_MAD, VP_13913A_OSD1_V_POSITION, wV_Pos);
BITEK_TxByte(OSD_MAD,
VP_13A_OSD1_POSITION_MSB,
(wV_Pos >> 8) | ((wH_Pos >> 4) & 0x30)
);
// [1]115 Width
BITEK_TxByte(OSD_MAD, VP_13B_OSD1_WIDTH, bWidth - 1);
// [1]115 Height
BITEK_TxByte(OSD_MAD, VP_13C_OSD1_HEIGHT, bHeight - 1);
break;
case OSD_WINDOW2:
// [1]115 Horizontal Position
BITEK_TxByte(OSD_MAD, VP_146148_OSD2_H_POSITION, wH_Pos);
// [1]115 Vertical Position
BITEK_TxByte(OSD_MAD, VP_147148_OSD2_V_POSITION, wV_Pos);
BITEK_TxByte(OSD_MAD,
VP_148_OSD2_POSITION_MSB,
(wV_Pos >> 8) | ((wH_Pos >> 4) & 0x30)
);
// [1]115 Width
BITEK_TxByte(OSD_MAD, VP_149_OSD2_WIDTH, bWidth - 1);
// [1]115 Hieght
BITEK_TxByte(OSD_MAD, VP_14A_OSD2_HEIGHT, bHeight - 1);
break;
case OSD_WINDOW3:
// [1]115 Horizontal Position
BITEK_TxByte(OSD_MAD, VP_154156_OSD3_H_POSITION, wH_Pos);
// [1]115 Vertical Position
BITEK_TxByte(OSD_MAD, VP_155156_OSD3_V_POSITION, wV_Pos);
BITEK_TxByte(OSD_MAD,
VP_156_OSD3_POSITION_MSB,
(wV_Pos >> 8) | ((wH_Pos >> 4) & 0x30)
);
// [1]115 Width
BITEK_TxByte(OSD_MAD, VP_157_OSD3_WIDTH, bWidth - 1);
// [1]115 Hieght
BITEK_TxByte(OSD_MAD, VP_158_OSD3_HEIGHT, bHeight - 1);
break;
}
} /* OSD_SetWindow */
/* -------------------------------------------------------------------
Name: OSD_ShowChar - (OSD_BIT1611B)
Purpose: To show a character at specified position in OSD window.
Passed:
UB8 bWindow = OSD Window Identifier.
UB8 bCol = Horizontal position in columns (0..OSD_WINDOW_WIDTH - 1).
UB8 bRow = Vertical position in rows (0..OSD_WINDOW_HEIGHT - 1).
UB8 bCharCode = The displayed character code.
Returns: None.
Notes:
------------------------------------------------------------------- */
void OSD_ShowChar (
UB8 bWindow,
UB8 bCol, // 0..OSD_WINDOW_WIDTH - 1
UB8 bRow, // 0..OSD_WINDOW_HEIGHT - 1
UB8 bCharCode
)
{
UW16 wAddr;
wAddr = OSD_DisplayAddress(bWindow, bRow, bCol);
BITEK_TxByte(OSD_MAD, wAddr, bCharCode);
} /* OSD_ShowChar */
#if (OSD_SHOW_HEX)
/* -------------------------------------------------------------------
Name: OSD_ShowHex - (OSD_BIT1611B)
Purpose: To show one byte value in hexadecimal format at
specified position of OSD window.
Passed:
Returns: None.
Notes:
------------------------------------------------------------------- */
void OSD_ShowHex (
UB8 bWindow,
UB8 bCol,
UB8 bRow,
UB8 bValue
)
{
UB8 bChar;
bChar = bValue / 16;
if (bChar <= 9)
OSD_ShowChar(bWindow, bCol, bRow, '0' + bChar);
else
OSD_ShowChar(bWindow, bCol, bRow, 'A' + bChar - 10);
bChar = bValue % 16;
if (bChar <= 9)
OSD_ShowChar(bWindow, bCol+1, bRow, '0' + bChar);
else
OSD_ShowChar(bWindow, bCol+1, bRow, 'A' + bChar - 10);
} /* OSD_ShowHex */
#endif
/* -------------------------------------------------------------------
Name: OSD_ShowMsg - (OSD_BIT1611B)
Purpose: To show a message string with zero at specified position in OSD window.
Passed:
UB8 bWindow = OSD Window Identifier.
UB8 bCol = Horizontal position in columns (0..OSD_WINDOW_WIDTH - 1).
UB8 bRow = Vertical position in rows (0..OSD_WINDOW_HEIGHT - 1).
UB8 abMsg[] = The displayed message string.
Returns: None.
Notes:
------------------------------------------------------------------- */
void OSD_ShowMsg (
UB8 bWindow,
UB8 bCol,
UB8 bRow,
UB8 abMsg[]
)
{
UW16 wAddr;
UB8 bIdx;
wAddr = OSD_DisplayAddress(bWindow, bRow, bCol);
for (bIdx = 0; abMsg[ bIdx ]; bIdx++)
{
BITEK_TxByte(OSD_MAD, wAddr + bIdx, abMsg[ bIdx ]);
} /* for */
} /* OSD_ShowMsg */
#if (OSD_SHOW_VALUE)
/* -------------------------------------------------------------------
Name: OSD_ShowValue - (OSD_BIT1611B)
Purpose: To show a specified width value at specified position in OSD window.
Passed:
UB8 bWindow = OSD Window Identifier.
UB8 bCol, = Horizontal position in columns.
UB8 bRow, = Vertical position in rows.
UW16 wValue = The displayed value.
UB8 bWidth = The displayed width.
Returns: None.
Notes:
------------------------------------------------------------------- */
void OSD_ShowValue (
UB8 bWindow,
UB8 bCol,
UB8 bRow,
UW16 wValue,
UB8 bWidth
)
{
UB8 bChar;
UB8 bIdx;
for (bIdx = bWidth; bIdx; bIdx--)
{
bChar = wValue % 10;
wValue /= 10;
if ((wValue == 0) &&
(bChar == 0) )
{
if (bIdx == bWidth)
OSD_ShowChar(bWindow, bCol + bIdx - 1, bRow, '0');
else
OSD_ShowChar(bWindow, bCol + bIdx - 1, bRow, ' ');
}
else
OSD_ShowChar(bWindow, bCol + bIdx - 1, bRow, bChar + '0');
}
} /* OSD_ShowValue */
#endif
/* -------------------------------------------------------------------
Name: -
Purpose: .
Passed: None.
Returns: None.
Notes:
------------------------------------------------------------------- */
/* **********************************************************************
Description:
********************************************************************** */
/* %% End Of File %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -