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

📄 osd.c

📁 BITEK LCD DRIVER IC OSD CODE
💻 C
📖 第 1 页 / 共 2 页
字号:
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 + -