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

📄 utility.c

📁 一个LCD TV的源程序, 用的是realtek的IC
💻 C
字号:
/*******************************************************************************
  UTILITY.C
  Copyright (c) HIMAX Technologies, Inc. All rights reserved.
*******************************************************************************/
#include <MTV230.H>
#include <DEFINE.H>
#include <MATH.H>
#define STABLE_TOLERANCE 50
#define STABLE_COUNT     240//about 20ms stable period
/*==============================================================================

==============================================================================*/
void DelayX1ms(unsigned int n) {

  unsigned int i;

  while(n--!=0)
    for (i=0; i<86; i++)
      ;

  }


/*==============================================================================

==============================================================================*/
void DelayX10ms(unsigned int n) {

  unsigned int i;

  while(n--!=0)
    for (i=0; i<860; i++) 
      ;

  }


/*===========================================================================
  
===========================================================================*/
code unsigned char BIT_OPOR[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
code unsigned char BIT_OPAND[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

bit Get_Bit(unsigned char bytedata, unsigned char bit_pos) {

  return ((bytedata&BIT_OPOR[bit_pos])!=0);

  }


/*===========================================================================
  
===========================================================================*/
unsigned char Set_Bit(unsigned char bytedata, unsigned char bit_pos, bit set) {

  unsigned char retdata;

  retdata=bytedata&BIT_OPAND[bit_pos];
  if(set)
    retdata=retdata|BIT_OPOR[bit_pos];

  return retdata;

  }


/*==============================================================================

==============================================================================*/
unsigned int String_To_Int(unsigned char* StrPtr, unsigned char digit) {

  unsigned int retvalue;
  unsigned char i;

  retvalue=0;
  for(i=0; i<digit; i++) {    
    retvalue*=10;
    if((*(StrPtr+digit-i)>='0')&&(*(StrPtr+digit-i)<='9'))
      retvalue+=*(StrPtr+digit-i)-'0';
    else
      retvalue+=0;
    }

  return retvalue;

  }


/*===========================================================================

===========================================================================*/
void Switch_Source(unsigned char v_source) {

  BL=OFF;
  OSD_Show(0,0,0,0,0);
  Page=Item=badjust=0;

  switch(v_source) {
    case(AV1):
      SA7114_Byte_Write(0x02, 0xc4);
      SA7114_Byte_Write(0x09, 0x40);
      SA7114_Byte_Write(0x0a, 0x72);
      SA7114_Byte_Write(0x0b, 0x30);
      SA7114_Byte_Write(0x14, SA7114_Byte_Read(0x14)&0xfc|0x02);
      ParaAddress=EE_AV1_PARA;
      SEL_A=LOW;
      SEL_B=HIGH;
      MSP_Source_Select(SCART1_DA, SCART, STEREO);   
      MSP_Source_Select(LOUDSPEAKER, SCART, STEREO);
      MSP_SCART1_Source_Select(SC1_IN);
    break;
    case(AV2):
      SA7114_Byte_Write(0x02, 0xc6);
      SA7114_Byte_Write(0x09, 0xc0);
      SA7114_Byte_Write(0x0a, 0x72);
      SA7114_Byte_Write(0x0b, 0x35);
      SA7114_Byte_Write(0x14, SA7114_Byte_Read(0x14)&0xfc|0x01);
      ParaAddress=EE_AV2_PARA;
      SEL_A=HIGH;
      SEL_B=LOW;
      MSP_Source_Select(SCART1_DA, SCART, STEREO);
      MSP_Source_Select(LOUDSPEAKER, SCART, STEREO); 
      MSP_SCART1_Source_Select(SC1_IN);
    break;
    case(AV3):
      SA7114_Byte_Write(0x02, 0xc9);
      SA7114_Byte_Write(0x09, 0xc0);
      SA7114_Byte_Write(0x0a, 0x72);
      SA7114_Byte_Write(0x0b, 0x35);
      SA7114_Byte_Write(0x14, SA7114_Byte_Read(0x14)&0xfc|0x01);
      ParaAddress=EE_AV3_PARA;
      SEL_A=LOW;
      SEL_B=LOW;
      MSP_Source_Select(SCART1_DA, SCART, STEREO);
      MSP_Source_Select(LOUDSPEAKER, SCART, STEREO);
      MSP_SCART1_Source_Select(SC2_IN);      
    break;
    case(TV):
      SA7114_Byte_Write(0x02, 0xc5);
      SA7114_Byte_Write(0x09, 0x40);
      SA7114_Byte_Write(0x0a, 0x72);
      SA7114_Byte_Write(0x0b, 0x35);
      SA7114_Byte_Write(0x14, SA7114_Byte_Read(0x14)&0xfc|0x02);
      ParaAddress=EE_TV_PARA;
      SEL_A=HIGH;
      SEL_B=HIGH;
      MSP_Source_Select(SCART1_DA, STEREOORAB, MONO);
      MSP_Source_Select(LOUDSPEAKER, STEREOORA, STEREO); 
      Set_Channel(Channel);  
    break;
    }
  
  Contrast=EE_MCU_Byte_Read(ParaAddress+EE_CONTRAST);
  Brightness=EE_MCU_Byte_Read(ParaAddress+EE_BRIGHTNESS);
  Saturation=EE_MCU_Byte_Read(ParaAddress+EE_SATURATION);
  Hue=EE_MCU_Byte_Read(ParaAddress+EE_HUE);
  Sharpness=EE_MCU_Byte_Read(ParaAddress+EE_SHARPNESS);

  Set_7114_Contrast(EE_MCU_Byte_Read(ParaAddress+EE_7114_CONTRAST));
  Set_7114_Luminance(EE_MCU_Byte_Read(ParaAddress+EE_7114_LUMINANCE));
  BL_VOLT=EE_MCU_Byte_Read(ParaAddress+EE_BACK_LIGHT);
  Set_Color_Temp(Color_Temp);
  Set_Contrast(Contrast);
  Set_Brightness(Brightness);
  Set_Saturation(Saturation);
  Set_Hue(Hue);
  
  }


/*===========================================================================

===========================================================================*/
void Power_Sequence(bit yes) {

  if(yes) {
    PSC1=LOW;
    DelayX10ms(1);
    LVDS_EN=HIGH;
//    STV_Byte_Write(0x0f, 0x02);//remove first line
//    STV_Byte_Write(0x11, 0x02);
    DelayX10ms(10);
//    STV_Byte_Write(0x0f, 0x00);//remove first line
//    STV_Byte_Write(0x11, 0x00);
    DelayX10ms(40);
    BL=LOW;
    DelayX10ms(10);
    AV_PD=LOW;
    DelayX10ms(50);
    MUTE=LOW;
    }
  else {
    MUTE=HIGH;
    AV_PD=HIGH;
    BL=HIGH;
    LVDS_EN=LOW;
    PSC1=HIGH;
    }

  }


/*===========================================================================

===========================================================================*/
unsigned int Channel_EEPROM_Address(void) {

  return EE_CHANNEL_AIR+TV_Mode;

  }


/*===========================================================================

===========================================================================*/
unsigned int ChannelTable_EEPROM_Address(void) {

  return EE_TV_AIR_CHANNEL_TABLE+TV_Mode*0x20;

  }


/*===========================================================================

===========================================================================*/
unsigned int ChannelLockTable_EEPROM_Address(void) {

  return EE_AIR_CHANNEL_LOCK_TABLE+TV_Mode*0x20;

  }

⌨️ 快捷键说明

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