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

📄 video.c

📁 LCDTV的source code,含周邊ic的driver code ,scaler ,
💻 C
字号:
/*******************************************************************************
  VIDEO.C
  Copyright (c) SmartASIC, Inc. All rights reserved.
*******************************************************************************/
#include <MTV230.H>
#include <DEFINE.H>
#include <MATH.H>
#define SA7114  0x40
#define FRAME_TOLORANCE 3
#define DURATION    50  //about 77 ms
#define FREQ00Hz    0x00
#define FREQ50Hz    0x01
#define FREQ60Hz    0x02
/*==============================================================================

==============================================================================*/
void SA7114_Start(void) {

  SA7114_SDA=1;
  SA7114_SCL=1;
  SA7114_SDA=0;
  SA7114_SCL=0;

  }


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

==============================================================================*/
void SA7114_Stop(void) {

  SA7114_SDA=0;
  SA7114_SCL=1;
  SA7114_SDA=1;

  }


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

==============================================================================*/
bit SA7114_Data_In(unsigned char bytedata) {

  unsigned char i;
  bit ack;

  for(i=0; i<8; i++) {
    SA7114_SDA=bytedata&0x80;
    SA7114_SCL=1;
    bytedata<<=1;
    SA7114_SCL=0;
    }
  SA7114_SDA=1;
  SA7114_SCL=1;
  ack=SA7114_SDA;
  SA7114_SCL=0;
  SA7114_SDA=0;

  return ack;

  }


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

==============================================================================*/
unsigned char SA7114_Data_Out(void) {

  unsigned char i, bytedata;

  SA7114_SDA=1;
  for(i=0; i<8; i++) {
    SA7114_SCL=1;
    bytedata<<=1;
    bytedata|=SA7114_SDA;
    SA7114_SCL=0;
    }

  return bytedata;

  }


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

==============================================================================*/
void SA7114_Acknowledge(bit ack) {

  SA7114_SDA=ack;
  SA7114_SCL=1;
  SA7114_SCL=0;

  }


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

===========================================================================*/
unsigned char SA7114_Byte_Read(unsigned char address) {

  unsigned char bytedata=0;

  Again:
    SA7114_Start();
    if(SA7114_Data_In(SA7114))
      goto Again;
    if(SA7114_Data_In(address))
      goto Again;
    SA7114_Start();
    if(SA7114_Data_In(SA7114|1))
      goto Again;
    bytedata=SA7114_Data_Out();
    SA7114_Acknowledge(1);
    SA7114_Stop();

  return bytedata;

  }


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

===========================================================================*/
void SA7114_Byte_Write(unsigned char address, unsigned char bytedata) {

  Again:
    SA7114_Start();
    if(SA7114_Data_In(SA7114))
      goto Again;
    if(SA7114_Data_In(address))
      goto Again;
    if(SA7114_Data_In(bytedata))
      goto Again;
    SA7114_Stop();

  }


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

===========================================================================*/
void Set_Contrast(unsigned char value) {

  signed int i, input, gain, next_gain;

  for(i=0; i<3; i++) {
    gain=EE_MCU_Byte_Read(ColorAddress+i);
    input=value;
    if(input>0x10) {
      input=value-0x10;
      next_gain=gain+input;
      if(next_gain>0x3f)
        input=0x3f;
      else
        input=next_gain;
      }
    else {
      input=0x10-input;
      next_gain=gain-input;
      if(next_gain<0x00)
        input=0x00;
      else
        input=next_gain;
      }
    STV_Gain(i, input);
    }

  }


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

==============================================================================*/
void Set_Brightness(unsigned char value) {

  signed int i, input, offset, next_offset;

  for(i=0; i<3; i++) {
    offset=EE_MCU_Byte_Read(ColorAddress+3+i);
    input=value;
    if(input>0x10) {
      input=input-0x10;
      next_offset=offset+input;
      if(next_offset>0xff)
        input=0xff;
      else
        input=next_offset;
      }
    else {
      input=0x10-value;
      next_offset=offset-input;
      if(next_offset<0x00)
        input=0x00;
      else
        input=next_offset;
      }
    STV_Offset(i, input);
    }

  }


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

===========================================================================*/
void Set_Saturation(unsigned char value) {

  SA7114_Byte_Write(0x0c, 14+value);

  }


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

===========================================================================*/
void Set_Hue(unsigned char value) {

  (value>50)?(value=value-50):(value=value|0xc0);

  SA7114_Byte_Write(0x0d, 13+value);

  }


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

===========================================================================*/
void Set_Sharpness(unsigned char value) {

  code unsigned char SHARPNESS_TABLE[16]={15,14,13,12,11,10,9,8,0,7,6,5,4,3,2,1};

  SA7114_Byte_Write(0x09, (SA7114_Byte_Read(0x09)&0xf0)+SHARPNESS_TABLE[value]);

  }


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

===========================================================================*/
void Set_7114_Luminance(unsigned char value) {

  SA7114_Byte_Write(0x0a, value);

  }


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

===========================================================================*/
void Set_7114_Contrast(unsigned char value) {

  SA7114_Byte_Write(0x0b, value);

  }

⌨️ 快捷键说明

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