📄 1574init.c
字号:
/**--------------------------------------------------------------------------
* Name 15xxInit.c
--------------------------------------------------------------------------**/
#include "..\inc\public2.h"
#define WR_CVD1_BYTE 14
#define WR_1574 45
#define EEPROM_WRID 0xA0
#define L44_WRID 0x28
xdata char DEV_Inf[16] _at_ 0x0090; //can not be initialized
// data in progeam "main()"
//-------------------------------------------------------------------
//CVD1 Control register__ADD,DATA(By I2C)
//-------------------------------------------------------------------
code unsigned char CVD1_INITTab[12] =
{// Reg.# Value
0x3F, 0x00, 0x03, 0x00, 0x05, 0x64, 0x06, 0x8A, 0x11, 0xB9,
0x83, 0x89
};
code unsigned char CVD1_NTSCTab[WR_CVD1_BYTE*2] =
{// Reg.# Value
0x00, 0x00, 0x01, 0x01, 0x02, 0x6F, 0x0C, 0x8A, 0x18, 0x21,
0x19, 0xF0, 0x1A, 0x7C, 0x1B, 0x1F, 0x2E, 0x82, 0x30, 0x22,
0x31, 0x61, 0x39, 0x0A, 0x82, 0x42, 0x87, 0x10
};
code unsigned char CVD1_PALMTab[WR_CVD1_BYTE*2] =
{// Reg.# Value
0x00, 0x04, 0x01, 0x01, 0x02, 0x6F, 0x0C, 0x8A, 0x18, 0x21,
0x19, 0xE6, 0x1A, 0xEF, 0x1B, 0xA4, 0x2E, 0x82, 0x30, 0x22,
0x31, 0x61, 0x39, 0x0A, 0x82, 0x42, 0x87, 0x10
};
code unsigned char CVD1_PALTab[WR_CVD1_BYTE*2] =
{// Reg.# Value
0x00, 0x32, 0x01, 0x00, 0x02, 0x6F, 0x0C, 0x67, 0x18, 0x2A,
0x19, 0x09, 0x1A, 0x8A, 0x1B, 0xCB, 0x2E, 0x84, 0x30, 0x2A,
0x31, 0xC1, 0x39, 0x1A, 0x82, 0x52, 0x87, 0x08
};
code unsigned char CVD1_SECAMTab[WR_CVD1_BYTE*2] =
{// Reg.# Value
0x00, 0x38, 0x01, 0x00, 0x02, 0x4F, 0x0C, 0x67, 0x18, 0x28,
0x19, 0xA3, 0x1A, 0x3B, 0x1B, 0xB3, 0x2E, 0x84, 0x30, 0x2A,
0x31, 0xC1, 0x39, 0x1A, 0x82, 0x52, 0x87, 0x08
};
//-------------------------------------------------------------------
// TCON Register Address and Data
//-------------------------------------------------------------------
#ifdef CPT_PANEL //CPT(CLAA070WA01)---AU(A070FW03 V1)---InnoLux(AT070TN04)--
code unsigned char TCON_RegVal[WR_1574*2]={
// Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule
0x00, 0x41, 0x01, 0x3F, 0x03, 0x0D, 0x04, 0x14, 0x06, 0xD8,
0x30, 0x48, 0x31, 0x12, 0x32, 0x00, 0x33, 0x38, 0x34, 0x00,
0x35, 0x30, 0x36, 0x01, 0x3B, 0x0D, 0x3D, 0x01, 0x3F, 0x0C,
0x41, 0x02, 0x43, 0x0A, 0x45, 0xC1, 0x46, 0x00, 0x47, 0xC2,
0x48, 0x00, 0x49, 0x12, 0x4A, 0x00, 0x4B, 0x01, 0x4C, 0x00,
0x4D, 0x12, 0x4E, 0x00, 0x53, 0x18, 0x55, 0x17, 0x57, 0x18,
0x59, 0x17, 0x68, 0x10, 0x71, 0x09, 0x74, 0x6E, 0x75, 0x00,
0x76, 0x8A, 0x77, 0x00, 0x78, 0x01, 0x79, 0x00, 0x7A, 0xA3,
0x7B, 0x00, 0x7C, 0x00, 0x7D, 0x84, 0x7F, 0x80, 0x8A, 0x58
};
#endif
#ifdef HYDIS_PANEL //Hydis(HT07W31)-------------------------------------------
code unsigned char TCON_RegVal[WR_1574*2]={
// Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule
0x00, 0x41, 0x01, 0x3F, 0x03, 0x0C, 0x04, 0x0C, 0x06, 0xD8,
0x30, 0x48, 0x31, 0x12, 0x32, 0x00, 0x33, 0x38, 0x34, 0x00,
0x35, 0x30, 0x36, 0x01, 0x3B, 0x0D, 0x3D, 0x01, 0x3F, 0x0C,
0x41, 0x02, 0x43, 0x0A, 0x45, 0xBF, 0x46, 0x00, 0x47, 0xC2,
0x48, 0x00, 0x49, 0x12, 0x4A, 0x00, 0x4B, 0x01, 0x4C, 0x00,
0x4D, 0x12, 0x4E, 0x00, 0x53, 0x18, 0x55, 0x17, 0x57, 0x18,
0x59, 0x17, 0x68, 0x10, 0x71, 0x09, 0x74, 0x6E, 0x75, 0x00,
0x76, 0x8A, 0x77, 0x00, 0x78, 0x01, 0x79, 0x00, 0x7A, 0xA3,
0x7B, 0x00, 0x7C, 0x00, 0x7D, 0x84, 0x7F, 0x80, 0x8A, 0x58
};
#endif
#ifdef LG_PANEL //LG(LB070W02)---------------------------------------------
code unsigned char TCON_RegVal[] ={
// Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule
0x00, 0x41, 0x01, 0x3F, 0x03, 0x0D, 0x04, 0x18, 0x06, 0xD8,
0x30, 0xC8, 0x31, 0x12, 0x32, 0x00, 0x33, 0x38, 0x34, 0x00,
0x35, 0x30, 0x36, 0x01, 0x3B, 0x06, 0x3D, 0x01, 0x3F, 0x00,
// 0x35, 0x30, 0x36, 0x01, 0x3B, 0x08, 0x3D, 0x01, 0x3F, 0x00
0x41, 0x01, 0x43, 0x00, 0x45, 0xC1, 0x46, 0x00, 0x47, 0xC2,
// 0x41, 0x03, 0x43, 0x00, 0x45, 0xC1, 0x46, 0x00, 0x47, 0xC2
0x48, 0x00, 0x49, 0x12, 0x4A, 0x00, 0x4B, 0x01, 0x4C, 0x00,
0x4D, 0x12, 0x4E, 0x00, 0x53, 0x17, 0x55, 0x15, 0x57, 0x17,
0x59, 0x15, 0x68, 0x10, 0x71, 0xA3, 0x74, 0x0A, 0x75, 0x00,
0x76, 0x8A, 0x77, 0x00, 0x78, 0x01, 0x79, 0x00, 0x7A, 0xA3,
0x7B, 0x00, 0x7C, 0x00, 0x7D, 0xC0, 0x7F, 0x80, 0x8A, 0x59
};
#endif
#ifdef PVI_PANEL //PVI(PW045XS1), (PW070XS7)--------------------------------
code unsigned char TCON_RegVal[WR_1574*2]={
// Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule
0x00, 0x41, 0x01, 0x3F, 0x03, 0x0D, 0x04, 0x14, 0x06, 0xD8,
0x30, 0x48, 0x31, 0x12, 0x32, 0x00, 0x33, 0x13, 0x34, 0x00,
0x35, 0x30, 0x36, 0x01, 0x3B, 0x0E, 0x3D, 0x07, 0x3F, 0x0C,
0x41, 0x02, 0x43, 0x0A, 0x45, 0xC3, 0x46, 0x00, 0x47, 0xC5,
0x48, 0x00, 0x49, 0x12, 0x4A, 0x00, 0x4B, 0x01, 0x4C, 0x00,
0x4D, 0x12, 0x4E, 0x00, 0x53, 0x19, 0x55, 0x17, 0x57, 0x19,
0x59, 0x17, 0x68, 0x10, 0x71, 0x09, 0x74, 0x6E, 0x75, 0x00,
0x76, 0x8A, 0x77, 0x00, 0x78, 0x01, 0x79, 0x00, 0x7A, 0xA3,
0x7B, 0x00, 0x7C, 0x00, 0x7D, 0x84, 0x7F, 0x80, 0x8A, 0x58
};
#endif
#ifdef SAMSUNG_PANEL//Samsung(LTS700WQ-F02)-------------------------------------
code unsigned char TCON_RegVal[WR_1574*2]={
// Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule
0x00, 0x41, 0x01, 0x3F, 0x03, 0x0D, 0x04, 0x0E, 0x06, 0xD8,
0x30, 0x48, 0x31, 0x12, 0x32, 0x00, 0x33, 0x38, 0x34, 0x00,
0x35, 0x30, 0x36, 0x01, 0x3B, 0x0F, 0x3D, 0x10, 0x3F, 0x19,
0x41, 0x10, 0x43, 0x19, 0x45, 0xC1, 0x46, 0x00, 0x47, 0xC2,
0x48, 0x00, 0x49, 0x12, 0x4A, 0x00, 0x4B, 0x01, 0x4C, 0x00,
0x4D, 0x12, 0x4E, 0x00, 0x53, 0x18, 0x55, 0x17, 0x57, 0x18,
0x59, 0x17, 0x68, 0x80, 0x71, 0xA3, 0x74, 0x00, 0x75, 0x00,
0x76, 0x38, 0x77, 0x00, 0x78, 0xA3, 0x79, 0x00, 0x7A, 0x01,
0x7B, 0x00, 0x7C, 0x00, 0x7D, 0x40, 0x7F, 0x80, 0x8A, 0x58
};
#endif
/*#ifdef TOSHIBA_PANEL //Toshiba(LTA070B343A)----------------------------------
code unsigned char TCON_RegVal[WR_1574*2]={
// Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule
// 0x00, 0x41, 0x01, 0x3F, 0x03, 0x0D, 0x04, 0x0F, 0x06, 0xD8,
0x00, 0x41, 0x01, 0x3F, 0x03, 0X11, 0x04, 0X38, 0x06, 0xD8,
0x30, 0x48, 0x31, 0x10, 0x32, 0x00, 0x33, 0x13, 0x34, 0x00,
0x35, 0x30, 0x36, 0x01, 0x3B, 0x0C, 0x3D, 0x01, 0x3F, 0x0C,
0x41, 0x05, 0x43, 0x17, 0x45, 0xC1, 0x46, 0x00, 0x47, 0xC3,
0x48, 0x00, 0x49, 0x12, 0x4A, 0x00, 0x4B, 0x01, 0x4C, 0x00,
0x4D, 0x12, 0x4E, 0x00, 0x53, 0x16, 0x55, 0x14, 0x57, 0x16,
0x59, 0x14, 0x68, 0x10, 0x71, 0x09, 0x74, 0x6E, 0x75, 0x00,
0x76, 0x8A, 0x77, 0x00, 0x78, 0x01, 0x79, 0x00, 0x7A, 0xA3,
0x7B, 0x00, 0x7C, 0x00, 0x7D, 0x84, 0x7F, 0x80, 0x8A, 0x58
};
#endif
*/
#ifdef TOSHIBA_PANEL //Toshiba(LTA070B343A)----------------------------------
code unsigned char TCON_RegVal[WR_1574*2]={
/* // Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule Reg.# Vaule
0x00, 0x41, 0x01, 0x3F, 0x03, 0x0D, 0x04, 0x0F, 0x06, 0xD8,
0x30, 0x48, 0x31, 0x10, 0x32, 0x00, 0x33, 0x13, 0x34, 0x00,
0x35, 0x30, 0x36, 0x01, 0x3B, 0x0C, 0x3D, 0x01, 0x3F, 0x0C,
0x41, 0x05, 0x43, 0x17, 0x45, 0xC1, 0x46, 0x00, 0x47, 0xC3,
0x48, 0x00, 0x49, 0x12, 0x4A, 0x00, 0x4B, 0x01, 0x4C, 0x00,
0x4D, 0x12, 0x4E, 0x00, 0x53, 0x16, 0x55, 0x14, 0x57, 0x16,
0x59, 0x14, 0x68, 0x10, 0x71, 0x09, 0x74, 0x6E, 0x75, 0x00,
0x76, 0x8A, 0x77, 0x00, 0x78, 0x01, 0x79, 0x00, 0x7A, 0xA3,
0x7B, 0x00, 0x7C, 0x00, 0x7D, 0x84, 0x7F, 0x80, 0x8A, 0x58
*/
0x20, 0x20, 0x00, 0x41, 0x01, 0x3F, 0x03, 0x0D, 0x04, 0x16,
0x06, 0xD8, 0x30, 0x48, 0x31, 0x10, 0x32, 0x00, 0x33, 0x13,
0x34, 0x00, 0x35, 0x30, 0x36, 0x01, 0x3B, 0x0D, 0x3D, 0x15,
0x3F, 0x1E, 0x41, 0x17, 0x43, 0x1E, 0x45, 0xC1, 0x46, 0x00,
0x47, 0xC3, 0x48, 0x00, 0x49, 0x12, 0x4A, 0x00, 0x4B, 0x18,
0x4C, 0x00, 0x4D, 0x12, 0x4E, 0x00, 0x53, 0x14, 0x55, 0x12,
0x57, 0x14, 0x59, 0x12, 0x68, 0x10, 0x71, 0xA3, 0x74, 0x6E,
0x75, 0x00, 0x76, 0x8A, 0x77, 0x00, 0x78, 0x01, 0x79, 0x00,
0x7A, 0xA3, 0x7B, 0x00, 0x7C, 0x00, 0x7D, 0x84, 0x7F, 0x80,
0x8A, 0x58
};
#endif
//-------------------------------------------------------------------------------
extern void OSD_Init(void);
//--- Function Prototype Define ----------------
void All_Init(void);
void init_clock(void);
void init_PWM(void);
BYTE CVD1_ReadWrite(BYTE, BYTE, BYTE);
/**--------------------------------------------------------------------------
* Name void All_Init(void)
*
* Description Init all.
* Timer1->mode2,Timer0->mode1
* Baud rate=38400 in 14.318Mhz
*
* Return
* DATE Author Description
* ===========================================================================
* 2004/06/24 Eson W.
**/
void All_Init()
{
char i;
SYS_RST=0; //Reset 15xx //###---
//### |
//Init. UART var. //### |
UART_RxInUse = 0; //Init Rx for buffer 0 //### |
//the Rx buffer is double buffer //### |
Rx_Index = Data_Length = //Init the length and index //### |
Tx_Index = Tx_Length = //### |
UARTFlag = 0; //### |
//### |
init_clock(); //Setting 8051 baud rate and timer clock //### |
//### |
//Init the device information data //### |
DEV_Inf[0] ='1'; DEV_Inf[1] ='5'; DEV_Inf[2] ='7'; DEV_Inf[3] ='4'; //### |
DEV_Inf[4] ='0'; DEV_Inf[5] ='0'; DEV_Inf[6] ='0'; DEV_Inf[7] ='0'; //### |
DEV_Inf[8] ='1'; DEV_Inf[9] ='2'; DEV_Inf[10]='2'; DEV_Inf[11]='8'; //### |
DEV_Inf[12]='I'; DEV_Inf[13]='N'; DEV_Inf[14]='N'; DEV_Inf[15]='O'; //### |
//### |
// DELAY(20); //Mask by KMHo 2004-11-17 //### |
// ***************************************************** //### |
// *** Please Check the Init. Reg. don't before Here *** //### |
// ***************************************************** //### |
SYS_RST=1; //Reset pin to HI 15xx will normal working //###---
/*
#ifdef TOSHIBA_PANEL
SHDN_VGH=0;
SHDN_L5V=0;
SHDN_VGL=0;
SHDN_VEE=0;
#else
SHDN_L5V = SHDN_VEE = SHDN_VGL = SHDN_VGH = 0; //Control Panel Power
#endif
*/
NTPASEL = 0;
I2C_WriteByte(L44_WRID, 0x20, 0xC0); //Turn OFF Screen //***---
//*** |
for(i=0; i<WR_1574; i++) //Set TCON Reg. //*** |
I2C_WriteByte(L44_WRID, TCON_RegVal[i*2], TCON_RegVal[i*2+1]); //*** |
for (i=0; i<6; i++) //*** |
CVD1_ReadWrite(0x01, CVD1_INITTab[i*2], CVD1_INITTab[i*2+1]); //*** |
for(i=0; i<WR_CVD1_BYTE; i++) //*** |
CVD1_ReadWrite(0x01, CVD1_NTSCTab[i*2], CVD1_NTSCTab[i*2+1]); //*** |
//*** |
OSD_Init(); //Initial 15xx's OSD //*** |
I2C_WriteByte(L44_WRID, 0x20, 0x40); //Turn ON Screen //***---
}
/**--------------------------------------------------------------------------
* Name void init_clock(void)
*
* Description Init clock,
* Timer1->mode2,Timer0->mode1
* Baud rate=38400 in 14.318Mhz
*
* Return
* DATE Author Description
* ===========================================================================
* 2004/06/24 Eson W.
**/
void init_clock(void)
{
SCON=0x50; //
TMOD=0x21; //TIMER1 working in mode 2
//Timer0 working in Mode 1
TH1=0xFF; //Baud rate 38400 in 14.318Mhz
TH0=0x9E; //Timer0 working in Mode 1 and set 20m sec.
TL0=0x58; //Working Cry=14.318MHz 1/14.318M * 12 = 0.8 us
// 20ms = 0.8 * 25000
// TH0 = (65536 - 25000) / 256 = 0x9E
// TL0 = (65536 - 25000) % 256 = 0x58
TI=0;
RI=0;
TR1=1; //Enable TIMER1
TR0=1; //Enable TIMER0
IE=0x92; //Setup UART and Timer0 IRQ
// bit7:Enable All IRQ setting,EA=1
// bit6:Reserve
// bit5:Enable TIMER2 IRQ ,ET2=0
// bit4:Enable Serial port,ES=1
// bit3:Enable TIMER1 IRQ ,ET1=1
// bit2:Enable External/INT1,EX1=0
// bit1:Enable TIMER0 IRQ ,ET0=1
// bit0:Enable External/INT0,EX0=0
}
/**--------------------------------------------------------------------------
* Name BYTE CVD1_ReadWrite(BYTE wr_type, BYTE addr, BYTE value)
* BYTE wr_type; //0x00: for read value from Reg.
* //0x01: for write value to Reg.
* BYTE addr; //which on Reg. will read/write
* BYTE value; //buffer for read/write
*
* Description TV Decoder is indirect Reg. in 1574.
* There are 2Reg. one for TV Decoder address port (0x90)
* other for TV Decoder data port (0x91)
* This function usages by I2C
* Flow Chart
*
* Return None
*
* DATE Author Description
* ===========================================================================
* 2004-09-13 K.M. Ho This is first time implement
**/
BYTE CVD1_ReadWrite(BYTE wr_type, BYTE addr, BYTE value)
{
I2C_WriteByte(L44_WRID, 0x90, addr);
if (wr_type) I2C_WriteByte(L44_WRID, 0x91, value);
else value = I2C_ReadByte(L44_WRID, 0x91);
return(value);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -