📄 vdc_tvp5150.c
字号:
0x0F, 0x5B, 0xF5,
0x00, 0x00, 0x01,
0x01, 0x01, 0x80,
0x01, 0x30, 0xE9,
0x06, 0x41, 0x8E,
0x06, 0x70, 0x8E,
0x08, 0x06, 0x03,
0x00, 0x80, 0x00,
0x09, 0x80, 0x02,
0x0E, 0xDB, 0xFF,
0x09, 0x00, 0x81,
0x09, 0x01, 0x02,
0x0A, 0x00, 0x81,
0x0A, 0x41, 0x00,
0x01, 0x01, 0x9B,
0x08, 0x81, 0xEB,
0x01, 0x02, 0x07,
0x08, 0xC2, 0x19,
0x0E, 0x9C, 0x0A,
0x00, 0xFF, 0xFF,
0x01, 0x02, 0x00,
0x00, 0x00, 0x00,
0x08, 0x80, 0x69,
0x01, 0x32, 0x00,
0x0F, 0x5C, 0x0D,
0x00, 0x00, 0x01,
0x01, 0x02, 0x00,
0x01, 0x32, 0x69,
0x06, 0x42, 0x0E,
0x06, 0x72, 0x0E,
0x08, 0x0D, 0x04,
0x02, 0x6F, 0x03,
0x0B, 0x81, 0x83,
0x00, 0x00, 0x03,
0x08, 0x80, 0x03,
0x0E, 0xDC, 0xDF,
0x00, 0x00, 0x02,
0x08, 0x80, 0x03,
0x0E, 0xDC, 0x46,
0x02, 0x75, 0x80,
0x0B, 0x80, 0x10,
0x0F, 0x1C, 0x20,
0x0A, 0x81, 0x00,
0x0F, 0x1C, 0x22,
0x00, 0xC0, 0x00,
0x09, 0x80, 0x80,
0x0F, 0x1C, 0x22,
0x08, 0x87, 0x0E,
0x0F, 0x5C, 0x23,
0x0B, 0xC7, 0x04,
0x01, 0x00, 0x69,
0x0B, 0x80, 0x0F,
0x0A, 0x80, 0x07,
0x0E, 0xDC, 0x2A,
0x0A, 0x80, 0x02,
0x0E, 0xDC, 0x2D,
0x0F, 0x5C, 0x2E,
0x00, 0xFF, 0xFF,
0x01, 0x1D, 0x80,
0x0F, 0x5C, 0x2E,
0x08, 0x9D, 0xBB,
0x01, 0x00, 0xE9,
0x0A, 0x00, 0x88,
0x08, 0x00, 0xBB,
0x07, 0x00, 0x84,
0x00, 0x00, 0x03,
0x08, 0x80, 0x01,
0x0E, 0x1C, 0x37,
0x00, 0x00, 0x03,
0x01, 0x00, 0x80,
0x0A, 0x80, 0x82,
0x03, 0x38, 0x81,
0x00, 0x00, 0x00,
0x03, 0x35, 0x80,
0x01, 0x00, 0x16,
0x0B, 0x80, 0x03,
0x0A, 0x80, 0x02,
0x0E, 0x1C, 0x48,
0x0E, 0xDC, 0x46,
0x01, 0x00, 0x33,
0x0B, 0x80, 0x02,
0x0F, 0x1C, 0x46,
0x01, 0x32, 0x8C,
0x01, 0x33, 0x1A,
0x0F, 0x5C, 0x48,
0x02, 0x18, 0xE5,
0x02, 0x19, 0x66,
0x00, 0x00, 0x80,
0x02, 0x62, 0x81,
0x09, 0x80, 0x80,
0x0E, 0xDC, 0x55,
0x02, 0x49, 0x00,
0x03, 0x98, 0x80,
0x07, 0x00, 0x04,
0x03, 0x78, 0x00,
0x02, 0x49, 0x80,
0x03, 0x99, 0x00,
0x07, 0x00, 0x04,
0x03, 0x78, 0x80,
0x0F, 0x5C, 0xDF,
0x08, 0x81, 0x83,
0x08, 0x81, 0x02,
0x08, 0x82, 0x85,
0x01, 0x02, 0x65,
0x02, 0x67, 0x01,
0x01, 0x00, 0x01,
0x0B, 0x80, 0x01,
0x0E, 0xDC, 0x5E,
0x08, 0x01, 0x04,
0x07, 0x42, 0x01,
0x07, 0xC2, 0x81,
0x01, 0x00, 0x01,
0x0B, 0x80, 0x02,
0x0E, 0xDC, 0x65,
0x08, 0x01, 0x04,
0x08, 0x41, 0x85,
0x07, 0x42, 0x01,
0x07, 0xC2, 0x81,
0x01, 0x00, 0x01,
0x0B, 0x80, 0x04,
0x0E, 0xDC, 0x6C,
0x08, 0x01, 0x04,
0x08, 0x41, 0x85,
0x07, 0x42, 0x01,
0x07, 0xC2, 0x81,
0x01, 0x00, 0x01,
0x0B, 0x80, 0x08,
0x0E, 0xDC, 0x73,
0x08, 0x01, 0x04,
0x08, 0x41, 0x85,
0x07, 0x42, 0x01,
0x07, 0xC2, 0x81,
0x01, 0x00, 0x01,
0x0B, 0x80, 0x10,
0x0E, 0xDC, 0x7A,
0x08, 0x01, 0x04,
0x08, 0x41, 0x85,
0x07, 0x42, 0x01,
0x07, 0xC2, 0x81,
0x01, 0x00, 0x01,
0x0B, 0x80, 0x20,
0x0E, 0xDC, 0x81,
0x08, 0x01, 0x04,
0x08, 0x41, 0x85,
0x07, 0x42, 0x01,
0x07, 0xC2, 0x81,
0x01, 0x00, 0x01,
0x0B, 0x80, 0x40,
0x0E, 0xDC, 0x88,
0x08, 0x01, 0x04,
0x08, 0x41, 0x85,
0x07, 0x42, 0x01,
0x07, 0xC2, 0x81,
0x07, 0x00, 0x81,
0x0B, 0x80, 0xC0,
0x0E, 0xDC, 0x8F,
0x08, 0x01, 0x04,
0x08, 0x41, 0x85,
0x07, 0x01, 0x87,
0x07, 0x81, 0x07,
0x01, 0x00, 0x02,
0x0A, 0x80, 0x00,
0x0E, 0x1C, 0x95,
0x00, 0x00, 0x00,
0x03, 0x98, 0x80,
0x07, 0x00, 0x04,
0x03, 0x78, 0x00,
0x08, 0x81, 0x83,
0x08, 0x81, 0x02,
0x08, 0x82, 0x85,
0x01, 0x02, 0x66,
0x02, 0x67, 0x01,
0x01, 0x00, 0x01,
0x0B, 0x80, 0x01,
0x0E, 0xDC, 0xA1,
0x08, 0x01, 0x04,
0x07, 0x42, 0x01,
0x07, 0xC2, 0x81,
0x01, 0x00, 0x01,
0x0B, 0x80, 0x02,
0x0E, 0xDC, 0xA8,
0x08, 0x01, 0x04,
0x08, 0x41, 0x85,
0x07, 0x42, 0x01,
0x07, 0xC2, 0x81,
0x01, 0x00, 0x01,
0x0B, 0x80, 0x04,
0x0E, 0xDC, 0xAF,
0x08, 0x01, 0x04,
0x08, 0x41, 0x85,
0x07, 0x42, 0x01,
0x07, 0xC2, 0x81,
0x01, 0x00, 0x01,
0x0B, 0x80, 0x08,
0x0E, 0xDC, 0xB6,
0x08, 0x01, 0x04,
0x08, 0x41, 0x85,
0x07, 0x42, 0x01,
0x07, 0xC2, 0x81,
0x01, 0x00, 0x01,
0x0B, 0x80, 0x10,
0x0E, 0xDC, 0xBD,
0x08, 0x01, 0x04,
0x08, 0x41, 0x85,
0x07, 0x42, 0x01,
0x07, 0xC2, 0x81,
0x01, 0x00, 0x01,
0x0B, 0x80, 0x20,
0x0E, 0xDC, 0xC4,
0x08, 0x01, 0x04,
0x08, 0x41, 0x85,
0x07, 0x42, 0x01,
0x07, 0xC2, 0x81,
0x01, 0x00, 0x01,
0x0B, 0x80, 0x40,
0x0E, 0xDC, 0xCB,
0x08, 0x01, 0x04,
0x08, 0x41, 0x85,
0x07, 0x42, 0x01,
0x07, 0xC2, 0x81,
0x07, 0x00, 0x81,
0x0B, 0x80, 0xC0,
0x0E, 0xDC, 0xD2,
0x08, 0x01, 0x04,
0x08, 0x41, 0x85,
0x07, 0x01, 0x87,
0x07, 0x81, 0x07,
0x01, 0x00, 0x82,
0x00, 0x5A, 0xBD,
0x08, 0x80, 0x80,
0x0E, 0x1C, 0xDC,
0x01, 0x00, 0x02,
0x0A, 0x80, 0x00,
0x0E, 0x1C, 0xDC,
0x00, 0x00, 0x00,
0x03, 0x99, 0x00,
0x07, 0x00, 0x04,
0x03, 0x78, 0x80,
0x0F, 0xBF, 0xFF
};
void CVdcBitDly(void)
{
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();
}
BYTE CVdcI2CGetByte(BYTE ack)
{
BYTE r, m;
r = 0;
for (m = 0; m < 8; m++) // Each bit at a time, MSB first
{
bI2CSCL= 1;
CVdcBitDly(); // Delay
r = (r << 1) | bI2CSDA;
bI2CSCL = 0;
CVdcBitDly(); // Delay
}
// Send ACK according to 'ack'
bI2CSDA = (bit)(ack & 0x01);
CVdcBitDly(); // Delay
bI2CSCL = 1;
CVdcBitDly(); // Delay
bI2CSCL = 0;
CVdcBitDly(); // Delay
bI2CSDA = 1;
return (r);
}
void CVdcI2CSendByte(BYTE send)
{
BYTE m;
for (m = 0; m < 8; m++)
{
bI2CSDA = (bit)(send & 0x80); // Send each bit, MSB first
CVdcBitDly();
bI2CSCL = 1;
CVdcBitDly();
bI2CSCL = 0;
send = send << 1;
}
bI2CSDA = 1;
bI2CSCL = 1;
CVdcBitDly();
bI2CSCL = 0;
CVdcBitDly();
}
void CVdcI2CSendAddr(BYTE addr, BYTE index, BYTE rd)
{
bI2CSCL = 1;
bI2CSDA = 0; // Start
CVdcBitDly();
bI2CSCL = 0;
CVdcI2CSendByte(addr + rd); // Send address byte
if (0 == rd) CVdcI2CSendByte(index); // Send index byte
}
void CVdcI2CSendStop(void)
{
bI2CSDA = 0;
CVdcBitDly();
bI2CSCL = 1;
CVdcBitDly();
bI2CSDA = 1;
CVdcBitDly();
}
void CVdcI2cRead(BYTE addr, BYTE index, BYTE count)
{
BYTE n;
if (count==1)
{
CVdcI2CSendAddr(addr, index, 0);
CVdcI2CSendStop();
CVdcI2CSendAddr(addr, 0, 1);
count = count - 1;
for (n = 0; n < count; n++) pData[n] = CVdcI2CGetByte(0);
pData[count] = CVdcI2CGetByte(1);
CTimerDelayXms(1);
CVdcI2CSendStop();
CTimerDelayXms(10);
}
}
void CVdcWrite(BYTE *array)
{
BYTE len;
do
{
if (0 == array[0]) return;
len = array[0] - 3;
array = array + 1;
CVdcI2CSendAddr(array[0], array[1], 0);
array = array + 2;
do
{
CVdcI2CSendByte(*array++);
}
while (--len);
CTimerDelayXms(1);
CVdcI2CSendStop();
CTimerDelayXms(10);
}
while (1);
}
void CVdcI2cWrite(BYTE ucDeviceAddr, BYTE ucStartAddr, BYTE * pWriteArray)
{
pData[0] = 4;
pData[1] = ucDeviceAddr;
pData[2] = ucStartAddr;
pData[3] = *pWriteArray;
pData[4] = 0;
CVdcWrite(pData);
}
///////////////////////////////////////////////////
BYTE CAdjustPercentValue(BYTE srcValue, BYTE srcMax, BYTE srcMin)
{
WORD usTemp;
if (srcValue>100)
srcValue = 50;
/* This line
usTemp = (srcValue * (srcMax-srcMin)) /100 + srcMin;
*/
usTemp = srcMax-srcMin;
usTemp *= srcValue;
usTemp /= 100;
usTemp += srcMin;
return ((BYTE)usTemp);
}
BYTE CAdjustRealValue(BYTE srcItem, BYTE srcSliderValue, BYTE srcSliderMax, BYTE srcMax, BYTE srcMid, BYTE srcMin)
{
WORD usTemp;
srcItem = srcItem;
if (srcSliderValue == srcSliderMax)
return (srcMax);
if (srcSliderValue == 0)
return (srcMin);
if (srcItem == _MENU_MU_SHARPNESS) {
if (srcSliderValue<5)
return 0;
else if (srcSliderValue<10)
return 1;
else if (srcSliderValue<15)
return 2;
else
return 3;
}
if (srcSliderValue>srcSliderMax)
srcSliderValue = srcSliderMax/2;
/* This line
usTemp = (srcValue * (srcMax-srcMin)) /100 + srcMin;
*/
if (srcSliderValue > srcSliderMax/2) {
usTemp = srcMax-srcMid;
usTemp *= (srcSliderValue-srcSliderMax/2);
usTemp /= srcSliderMax/2;
usTemp += srcMid;
}
else {
usTemp = srcMid-srcMin;
usTemp *= (srcSliderValue);
usTemp /= srcSliderMax/2;
usTemp += srcMin;
}
return ((BYTE)usTemp);
}
void CAdjustVideoContrast(void)
{
BYTE ucTemp;
//ucTemp = CAdjustPercentValue(stVideoData.Contrast, _VCONTRAST_MAX, _VCONTRAST_MIN);
ucTemp = CAdjustRealValue(_MENU_MU_CONTRAST, _SLIDER_MAX_CONTRAST-stVideoData.Contrast, _SLIDER_MAX_CONTRAST,_VCONTRAST_MAX, _VCONTRAST_MID, _VCONTRAST_MIN);
//x.hu, 20050806, add
//reverse control direction
//ucTemp = (_VCONTRAST_MAX - ucTemp) + _VCONTRAST_MIN;
CVdcI2cWrite(_VIDEO_DEVICE, ADDRESS(0x0C),&ucTemp);
}
void CAdjustVideoBright(void)
{
#if (_SLIDER_MAX_BRIGHTNESS == 15)
#define DIGITAL_BRI_MIN (0x50+5)
#define DIGITAL_BRI_MAX (0x50+3*15+5)
#define DIGITAL_BRI_STEP ((DIGITAL_BRI_MAX-DIGITAL_BRI_MIN)/_SLIDER_MAX_BRIGHTNESS)
BYTE ucTemp;
/////////////////////////////
stConBriData.Brightness = DIGITAL_BRI_MIN + DIGITAL_BRI_STEP*stVideoData.Brightness;
CAdjustBrightness();
CEepromSaveBriConData();
////////////////////////////
//ucTemp = CAdjustPercentValue(stVideoData.Brightness, _VBRIGHT_MAX, _VBRIGHT_MIN);
//ucTemp = CAdjustRealValue(_MENU_MU_BRIGHT, 6/*stVideoData.Brightness*/, _SLIDER_MAX_BRIGHTNESS,_VBRIGHT_MAX, _VBRIGHT_MID, _VBRIGHT_MIN);
ucTemp = 0x68;
CVdcI2cWrite(_VIDEO_DEVICE, ADDRESS(0x09), &ucTemp);
#else
#define DIGITAL_BRI_MAX (0x50+100/2)
#define DIGITAL_BRI_MIN 0x50
#define DIGITAL_BRI_STEP 1//((DIGITAL_BRI_MAX-DIGITAL_BRI_MIN)/_SLIDER_MAX_BRIGHTNESS)
BYTE ucTemp;
/////////////////////////////
stConBriData.Brightness = DIGITAL_BRI_MIN + DIGITAL_BRI_STEP*(stVideoData.Brightness/2);
CAdjustBrightness();
CEepromSaveBriConData();
////////////////////////////
//ucTemp = CAdjustPercentValue(stVideoData.Brightness, _VBRIGHT_MAX, _VBRIGHT_MIN);
//ucTemp = CAdjustRealValue(_MENU_MU_BRIGHT, /*stVideoData.Brightness*/, _SLIDER_MAX_BRIGHTNESS,_VBRIGHT_MAX, _VBRIGHT_MID, _VBRIGHT_MIN);
ucTemp = 0x68;
CVdcI2cWrite(_VIDEO_DEVICE, ADDRESS(0x09), &ucTemp);
#endif
}
void CAdjustVideoSaturation(void)
{
BYTE ucTemp;
//ucTemp = CAdjustPercentValue(stVideoData.Saturation, _VSATURATION_MAX, _VSATURATION_MIN);
ucTemp = CAdjustRealValue(_MENU_MU_SATURATION, stVideoData.Saturation, _SLIDER_MAX_SATURATION,_VSATURATION_MAX, _VSATURATION_MID, _VSATURATION_MIN);
CVdcI2cWrite(_VIDEO_DEVICE, ADDRESS(0x0A), &ucTemp);
}
void CAdjustVideoHue(void)
{
/* BYTE ucTemp;
if (CHECK50HZ()) {
ucTemp = 0x00;
}
else{
ucTemp = CAdjustPercentValue(stVideoData.Hue, _VHUE_MAX, _VHUE_MIN);
ucTemp = ucTemp^0x80;
}
CVdcI2cWrite(_VIDEO_DEVICE, ADDRESS(0x0B), &ucTemp);
*/
BYTE ucTemp;
//ucTemp = CAdjustPercentValue(stVideoData.Hue, _VHUE_MAX, _VHUE_MIN);
if (CHECK50HZ()) {
ucTemp = 0x00;
}
else{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -