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

📄 yuv.c

📁 Bitek 公司 bit1611b模拟屏驱动芯片外接MCU驱动DEMO源码
💻 C
📖 第 1 页 / 共 2 页
字号:
/* **********************************************************************

         Copyright (c) 2002-2006 Beyond Innovation Technology Co., Ltd

        All rights are reserved. Reproduction in whole or in parts is
    prohibited without the prior written consent of the copyright owner.
   ----------------------------------------------------------------------

    Module: YUV.C - Video Decoder.

    Purpose: Implementation of YUV module.

    Version: 0.01                                   08:33PM  2005/12/27

    Compiler: Keil 8051 C Compiler v8.01

    Reference:
    [1] BIT1611B Data Sheet Version 1.0, 2005-11-10,
        Beyond Innovation Technology

   ----------------------------------------------------------------------
    Modification:

    R0.01 08:32PM  2005/12/27 Jeffrey Chang
    Reason:
        1. Original.
    Solution:

   ----------------------------------------------------------------------
    [00001] 19:10PM  2006/01/02 Lily Huang
    Reason:
        1. Revise the checking conditon to prevent misjudgement.
    Solution:

   ********************************************************************** */


#define  _YUV_C_

/* ------------------------------------
    Header Files
   ------------------------------------ */
#include "bitek.h"
#include "eeprom.h"
#include "led.h"
#include "menu.h"
#include "mcu.h"
#include "osd.h"
#include "platform.h"
#include "timer.h"
#include "yuv.h"



/* ------------------------------------
    Macro Definitions
   ------------------------------------ */

/* ------------------------------------
    Type Definitions
   ------------------------------------ */

/* ------------------------------------
    Variables Definitions
   ------------------------------------ */
static UB8 bIdx;

/* ------------------------------------
    Function Prototypes
   ------------------------------------ */

/* -------------------------------------------------------------------
    Name: YUV_Go - (YUV_01_BIT1611B)
    Purpose: Polling Video Decoder status.
    Passed: None.
    Returns: None.
    Notes:
   ------------------------------------------------------------------- */
void YUV_Go (void)
{
    switch (tsEYD.bYUV_ID)
    {
        case YUV_ID_CVBS_11:
        case YUV_ID_CVBS_21:
        case YUV_ID_YC_Y12C22:
            bYUV_SB = BITEK_RxByte(YUV_MAD, VP_186_DVP_STATUS);

            // lock no change
            if (bYUV_SB == bLastSB)
                return;

            break;
    } // switch


    if (YUV_Ready())
    {
        // Video signal is ready !


        // To check TV color standard !
        tsEYD.bYUV_CS = YUV_GetColorStandard();

        // To setup VP original Color Standard !
        //VP_SetColorStandard(tsEYD.bYUV_CS);

        // To stop flashing RED LED !
        LED_RED_BLINK_OFF;
        LED_RED_OFF;


        switch (tsEYD.bYUV_ID)
        {
            case YUV_ID_CVBS_11:
            case YUV_ID_CVBS_21:
            case YUV_ID_YC_Y12C22:
                bColorStd = bYUV_SB & VP_MASK_COLOR_STANDARD;

                if ((bColorStd == YUV_CS_PAL)   &&
                    (bYUV_SB & VP_MASK_FIDT)           )
                {
                    // 60Hz
                    bColorStd = YUV_CS_PAL_60;
                }

                if (bYUV_SB & VP_MASK_FIDT) 
                {
                    // 60Hz
                    BITEK_TxByte(YUV_MAD, VP_12A_ACLAMP_LEVEL, 0x44);
                }
                else
                {
                    // 50Hz
                    BITEK_TxByte(YUV_MAD, VP_12A_ACLAMP_LEVEL, 0x48);
                }
                

                OSD_ShowMsg(OSD_MESSAGE,
                            OSD_X_COLOR_STD,
                            OSD_Y_COLOR_STD,
                            apbYUV_ColorStd[ bColorStd ]);
                break;

        } // switch


        OSD_EnableWindow(OSD_MESSAGE, ON);


        // OSD Auto OFF !
        wMENU_Tick = MENU_AUTO_OFF_TIME;

        // To disable Backlight !
        MCU_BL_ON;
    }
    else
    {
        // To flash RED LED !
        LED_RED_BLINK_ON;


        // Show Message for NO SIGNAL
        OSD_ShowMsg(OSD_MESSAGE,
                    OSD_X_COLOR_STD,
                    OSD_Y_COLOR_STD,
                    abNoSignal      );

        OSD_EnableWindow(OSD_MESSAGE, ON);

        bLastCS = YUV_CS_NONE;

        // To disable OSD Auto OFF !
        wMENU_Tick = 0;
    } // bYUV_SB && bYUV_MSTS

    #ifdef NOT_JUNK
    OSD_ShowHex(OSD_MESSAGE, 0, 0, bYUV_SB);
    OSD_ShowHex(OSD_MESSAGE, 3, 0, bLastSB);
    #endif

    // To backup the debounced Status Byte !
    bLastSB = bYUV_SB;
} // YUV_Go


/* -------------------------------------------------------------------
    Name: YUV_HardwareReset - (YUV_01_BIT1611B)
    Purpose: To reset Video Decoder chip before setting any registers.
    Passed:
    Returns:
    Notes: [2]16
   ------------------------------------------------------------------- */
void YUV_HardwareReset (void)
{
} /* YUV_HardwareReset */


/* -------------------------------------------------------------------
    Name: YUV_Init - (YUV_01_BIT1611B)
    Purpose: To initialize the YUV module.
    Passed: None.
    Returns: None.
    Notes:
   ------------------------------------------------------------------- */
void YUV_Init (void)
{
    //YUV_HardwareReset();

    bLastSB = YUV_SB_BITEK;

    // Look-Up Table Approach
    BITEK_TxBurst(YUV_MAD, VP_101_AFE_ATTR, sizeof(abYUV_0101_0137), abYUV_0101_0137);

    LED_RED_BLINK_OFF;
    LED_RED_OFF;


    // Brightness
    YUV_SetBrightness(tsEYD.bBrightness);

    // Contrast
    YUV_SetContrast(tsEYD.bContrast);

    // Saturation
    YUV_SetSaturation(tsEYD.bSaturation);

    // Hue
    YUV_SetHue(tsEYD.bHue);

    // Sharpness !
    YUV_SetSharpness(tsEYD.bSharpness);

    // BlackLevel !
    YUV_SetBlackLevel(tsEYD.bBlackLevel);

    #if (YUV_GO_POOLING)
    fYUV_Go_Pooling = TRUE;
    #endif
} // YUV_Init


/* -------------------------------------------------------------------
    Name: YUV_Ready - (YUV_01_BIT1611B)
    Purpose: To check whether video signal is locked.
    Passed: None.
    Returns:
        TRUE if video signal is locked.
    Notes:
   ------------------------------------------------------------------- */
BOOL YUV_Ready (void)
{
    switch (tsEYD.bYUV_ID)
    {
        case YUV_ID_CVBS_11:
        case YUV_ID_CVBS_21:
        case YUV_ID_YC_Y12C22:
            // CVBS or S-Video
            ////////////////////////////////////////////////////////////////////
            // [00001] Revised by LH 19:10PM  2006/01/02
            if ((bYUV_SB & VP_MASK_STATUS_LOCK) == VP_MASK_STATUS_LOCK)
            ////////////////////////////////////////////////////////////////////
                return( TRUE );
            else
                return( FALSE );
            break;
    } // switch
} // YUV_Ready





#define DSUB_640X400_70_4142    0x01C1
#define DSUB_720X400_70_4142    0x01C1

#define DSUB_VGA60_4142         0x020D
#define DSUB_SVGA50_4142        0x0271
#define DSUB_SVGA60_4142        0x0275

#define DSUB_640X400_CRITERIA   ((DSUB_640X400_70_4142 + DSUB_VGA60_4142)   / 2)
#define DSUB_VGA60_CRITERIA     ((DSUB_VGA60_4142      + DSUB_SVGA50_4142)  / 2)
#define DSUB_SVGA50_CRITERIA    ((DSUB_SVGA50_4142     + DSUB_SVGA60_4142)  / 2)


/* -------------------------------------------------------------------
    Name: YUV_GetColorStandard - (YUV_01_BIT1611B)
    Purpose: To detect Color Standard mode.
    Passed: None.
    Returns:
        YUV_CS_NTSC         if NTSC/M
        YUV_CS_PAL_BGDHI    if PAL B/G/D/H/I
        YUV_CS_SECAM_L      if SECAM/L
        YUV_CS_NONE         if others
    Notes:

                0x39    0x3A    0x3B    0x40    0x41    0x42
    640x400@70  19      38      33      BF      C1      11
    720x400@70  69      88      33      02      C1      01

    640x480@60  F9      18      23      0B      0D      22
    800x600@50  48      58      33      6C      71      22
    800x600@60  00      1F      44      70/71   74/75   22

    YPbPr 480i  39      58      33      06/07   0E/11   01
    YPbPr 576i  39      58      33      06      40      01
    YPbPr 480p  39      58      33      06      0D      02
    YPbPr 576p  39      58      33      05      71      02

    SCART 480i  56      58      33      06      40      01
    SCART 576i  01      58      03      06/07   0E/11   01

   ------------------------------------------------------------------- */
UB8 YUV_GetColorStandard (void)
{
    switch (tsEYD.bYUV_ID)
    {

⌨️ 快捷键说明

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