📄 video.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 + -