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

📄 ddc.c

📁 LCD Monitor 部分源码
💻 C
字号:
//----------------------------------------------------------------------------------------------------
// ID Code      : Ddc.c No.0000
// Update Note  : 
//
//----------------------------------------------------------------------------------------------------
#define __DDC__

#include "Header\Include.h"
#if(_DDC_TYPE != _DDC_NONE)
//----------------------------------------------------------------
void DDCInit()
{
     #if(_DDC_TYPE == _DDC_RTD_CODE)

         #if(_VGA_SUPPORT)
         LoadCodeDDCToRTD(tEDID_TABLE_VGA,_DDC_ENABLE_FA);           //Load VGA DDC
         #endif
    
         #if(_TMDS_SUPPORT)
         LoadCodeDDCToRTD(tEDID_TABLE_DVI,_DDC_DVI_ENABLE_FD);       //Load DVI DDC
         #endif

     #endif   // #if(DDC_TYPE == DDC_RTD_CODE)

     #if(_DDC_TYPE == _DCC_RTD_EEPROM)

         #if(_VGA_SUPPORT)
         LoadEEDDCToRTD(_EDID0_ADDRESS,_DDC_ENABLE_FA);
         #endif
    
         #if(_TMDS_SUPPORT)
         LoadEEDDCToRTD(_EDID1_ADDRESS,_DDC_DVI_ENABLE_FD);
         #endif

     #endif    // #if(DDC_TYPE == DCC_RTD_EEPROM)

     #if(_DDC_TYPE == _DDC_MTV512_CODE)
         InitMTV512CodeDDC();
         LoadCodeDDCToMTV512(tEDID_TABLE_VGA,MCU_DDCRAM_0);
         LoadCodeDDCToMTV512(tEDID_TABLE_DVI,MCU_DDCRAM_1);
     #endif   // #if(DDC_TYPE == DDC_MTV512)
}
//----------------------------------------------------------------
void DDCProc()
{
     #if(_DDC_TYPE == _DCC_RTD_EEPROM)     
     RTDDDCProc();
     #endif    // #if(DDC_TYPE == DCC_RTD_EEPROM)

     #if(_DDC_TYPE == _DDC_MTV512_CODE)
     // Not Ready
     #endif   // #if(DDC_TYPE == DDC_MTV512)
}
//----------------------------------------------------------------



#if(_DDC_TYPE == _DDC_RTD_CODE)
void LoadCodeDDCToRTD(unsigned char code *tVGADDC,unsigned char ucRTDAddr)
{
     unsigned char i;
     CScalerSetByte(ucRTDAddr, 0x00);    // Disable DVI DDC
     CScalerSetByte(ucRTDAddr + 1, 0x00);     // Set DDC Index

     // Write 128 Byte DDC Infomation
     CScalerSendAddr(ucRTDAddr + 2, _WRITE, _NON_AUTOINC);
     for(i=0;i<128;i++)
     {
         CScalerSendByte(tVGADDC[i]);
     }
     CScalerSendWriteStop();

     CScalerSetByte(ucRTDAddr, 0x05);    // Enable DVI DDC
}
#endif
//--------------------------------------------------------
#if(_DDC_TYPE == _DDC_MTV512_CODE)
void InitMTV512CodeDDC()
{
    MCU_IICCTR_F00  = 0xc0;                                 // Enable IIC Interface and define ddc2 active at HSDA/HSCL
    MCU_INTEN_F04   = 0x00;                                 // Detect WslvA1 IIC Stop Condition
    MCU_INTFLG_F03  = 0x00;                                 // Clear IIC Interrupt register
    MCU_CTRSLVB_F0A = 0x00;                                 // Define IIC Protocal Slave Address Bit
    MCU_DDCCTRA1_F06 = 0x10;                                // Enable DDC1 and DDCRAM 128 Access
    MCU_SLVA1ADR_F07 = 0x80 | (0xa0 >> 1);                  // DDC Slave A1 address
    MCU_DDCCTRA2_F86 = 0x10;                                // Enable DDC1 and DDCRAM 128 Access
    MCU_SLVA2ADR_F87 = 0x80 | (0xa0 >> 1);                  // DDC Slave A2 address

    MCU_PADMODE_F52 = MCU_PADMODE_F52_DEF | _BIT7 | _BIT5;  // SET PIN "HSCL1/P3.0/RX" IS HSDA1 

    CScalerSetByte(_DDC_ENABLE_FA, 0x00);                   // Disable  DDC
    CScalerSetByte(_DDC_DVI_ENABLE_FD, 0x00);               // Disable  DDC
}
//--------------------------------------------------------
void LoadCodeDDCToMTV512(unsigned char code *tDDC,unsigned char xdata * ucMTV512Addr)
{
     unsigned char i;
    
     for(i=0;i<128;i++)
     {
         *ucMTV512Addr = tDDC[i];
         ucMTV512Addr++;
     }     
}
#endif   // #if(DDC_TYPE == _DDC_MTV512_CODE)
//--------------------------------------------------------
#endif   // #if(DDC_TYPE != DDC_NONE)

⌨️ 快捷键说明

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