📄 1574init.c
字号:
/**--------------------------------------------------------------------------
* Name 15xxInit.c
--------------------------------------------------------------------------**/
#include "..\inc\public2.h"
#define WR_CVD1_BYTE 14
#define WR_1574 49
#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[16] =
{// Reg.# Value
0x3F, 0x00, 0x03, 0x00, 0x05, 0x64, 0x06, 0x8A, 0X08, 0X78, 0X09, 0X1C, 0x11, 0xB9,
0x83, 0x89
};
code unsigned char CVD1_NTSCTab[WR_CVD1_BYTE*2] =
{// Reg.# Value
0x00, 0x00, 0x01, 0x09, 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, 0x08, 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
//-------------------------------------------------------------------
/*
code unsigned char GAMMATAL[]=
{
// GAMMA TABLE
// 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
0x00,0x00,0x00,0x06,0x06,0x06,0x0F,0x0F,0x0F,0x18,0x18,0x18,0x20,0x20,0x20,0x26, // 0x0000
0x26,0x26,0x2D,0x2D,0x2D,0x35,0x35,0x35,0x3B,0x3B,0x3B,0x41,0x41,0x41,0x46,0x46, // 0x0010
0x46,0x4B,0x4B,0x4B,0x50,0x50,0x50,0x55,0x55,0x55,0x59,0x59,0x59,0x5C,0x5C,0x5C, // 0x0020
0x60,0x60,0x60,0x63,0x63,0x63,0x66,0x66,0x66,0x6A,0x6A,0x6A,0x6C,0x6C,0x6C,0x6E, // 0x0030
0x6E,0x6E,0x6F,0x6F,0x6F,0x71,0x71,0x71,0x72,0x72,0x72,0x75,0x75,0x75,0x77,0x77, // 0x0040
0x77,0x78,0x78,0x78,0x7A,0x7A,0x7A,0x7A,0x7A,0x7A,0x7B,0x7B,0x7B,0x7C,0x7C,0x7C, // 0x0050
0x7D,0x7D,0x7D,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x80,0x80,0x80,0x81,0x81,0x81,0x81, // 0x0060
0x81,0x81,0x81,0x81,0x81,0x82,0x82,0x82,0x81,0x81,0x81,0x82,0x82,0x82,0x81,0x81, // 0x0070
0x81,0x81,0x81,0x81,0x82,0x82,0x82,0x81,0x81,0x81,0x82,0x82,0x82,0x83,0x83,0x83, // 0x0080
0x81,0x81,0x81,0x82,0x82,0x82,0x81,0x81,0x81,0x82,0x82,0x82,0x82,0x82,0x82,0x81, // 0x0090
0x81,0x81,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x81,0x81,0x81,0x81,0x81, // 0x00A0
0x81,0x80,0x80,0x80,0x82,0x82,0x82,0x82,0x82,0x82,0x81,0x81,0x81,0x82,0x82,0x82, // 0x00B0
0x83,0x83,0x83,0x84,0x84,0x84,0x85,0x85,0x85,0x84,0x84,0x84,0x84,0x84,0x84,0x84, // 0x00C0
0x84,0x84,0x84,0x84,0x84,0x87,0x87,0x87,0x86,0x86,0x86,0x86,0x86,0x86,0x86,0x86, // 0x00D0
0x86,0x87,0x87,0x87,0x88,0x88,0x88,0x86,0x86,0x86,0x88,0x88,0x88,0x89,0x89,0x89, // 0x00E0
0x89,0x89,0x89,0x8A,0x8A,0x8A,0x8A,0x8A,0x8A,0x8B,0x8B,0x8B,0x8B,0x8B,0x8B,0x8D, // 0x00F0
0x8D,0x8D,0x8C,0x8C,0x8C,0x8D,0x8D,0x8D,0x8E,0x8E,0x8E,0x8F,0x8F,0x8F,0x90,0x90, // 0x0100
0x90,0x90,0x90,0x90,0x90,0x90,0x90,0x91,0x91,0x91,0x91,0x91,0x91,0x94,0x94,0x94, // 0x0110
0x94,0x94,0x94,0x93,0x93,0x93,0x96,0x96,0x96,0x96,0x96,0x96,0x98,0x98,0x98,0x96, // 0x0120
0x96,0x96,0x98,0x98,0x98,0x9A,0x9A,0x9A,0x9B,0x9B,0x9B,0x99,0x99,0x99,0x9B,0x9B, // 0x0130
0x9B,0x9C,0x9C,0x9C,0x9E,0x9E,0x9E,0x9E,0x9E,0x9E,0x9F,0x9F,0x9F,0xA0,0xA0,0xA0, // 0x0140
0xA1,0xA1,0xA1,0xA3,0xA3,0xA3,0xA3,0xA3,0xA3,0xA3,0xA3,0xA3,0xA5,0xA5,0xA5,0xA5, // 0x0150
0xA5,0xA5,0xA5,0xA5,0xA5,0xA6,0xA6,0xA6,0xA6,0xA6,0xA6,0xA8,0xA8,0xA8,0xA9,0xA9, // 0x0160
0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xA9,0xAB,0xAB,0xAB,0xAB,0xAB,0xAB,0xAD,0xAD,0xAD, // 0x0170
0xAD,0xAD,0xAD,0xAD,0xAD,0xAD,0xAF,0xAF,0xAF,0xAF,0xAF,0xAF,0xB0,0xB0,0xB0,0xB2, // 0x0180
0xB2,0xB2,0xB2,0xB2,0xB2,0xB3,0xB3,0xB3,0xB3,0xB3,0xB3,0xB4,0xB4,0xB4,0xB4,0xB4, // 0x0190
0xB4,0xB4,0xB4,0xB4,0xB4,0xB4,0xB4,0xB6,0xB6,0xB6,0xB7,0xB7,0xB7,0xB7,0xB7,0xB7, // 0x01A0
0xB7,0xB7,0xB7,0xB8,0xB8,0xB8,0xBA,0xBA,0xBA,0xBB,0xBB,0xBB,0xBA,0xBA,0xBA,0xBA, // 0x01B0
0xBA,0xBA,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBC,0xBC,0xBC,0xBA,0xBA,0xBA,0xBC,0xBC, // 0x01C0
0xBC,0xBC,0xBC,0xBC,0xBD,0xBD,0xBD,0xBE,0xBE,0xBE,0xBD,0xBD,0xBD,0xBE,0xBE,0xBE, // 0x01D0
0xBE,0xBE,0xBE,0xBF,0xBF,0xBF,0xBE,0xBE,0xBE,0xBF,0xBF,0xBF,0xBE,0xBE,0xBE,0xC0, // 0x01E0
0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0xC2,0xC2, // 0x01F0
0xC2,0xC1,0xC1,0xC1,0xC2,0xC2,0xC2,0xC2,0xC2,0xC2,0xC3,0xC3,0xC3,0xC2,0xC2,0xC2, // 0x0200
0xC2,0xC2,0xC2,0xC1,0xC1,0xC1,0xC2,0xC2,0xC2,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC2, // 0x0210
0xC2,0xC2,0xC3,0xC3,0xC3,0xC4,0xC4,0xC4,0xC4,0xC4,0xC4,0xC5,0xC5,0xC5,0xC4,0xC4, // 0x0220
0xC4,0xC5,0xC5,0xC5,0xC4,0xC4,0xC4,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC5,0xC5,0xC5, // 0x0230
0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,0xC7,0xC7,0xC7,0xC8,0xC8,0xC8,0xC7,0xC7,0xC7,0xC8, // 0x0240
0xC8,0xC8,0xC9,0xC9,0xC9,0xC9,0xC9,0xC9,0xC9,0xC9,0xC9,0xC9,0xC9,0xC9,0xC9,0xC9, // 0x0250
0xC9,0xCA,0xCA,0xCA,0xCA,0xCA,0xCA,0xCB,0xCB,0xCB,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC, // 0x0260
0xCD,0xCD,0xCD,0xCE,0xCE,0xCE,0xCD,0xCD,0xCD,0xCE,0xCE,0xCE,0xCE,0xCE,0xCE,0xCF, // 0x0270
0xCF,0xCF,0xD0,0xD0,0xD0,0xD0,0xD0,0xD0,0xD2,0xD2,0xD2,0xD2,0xD2,0xD2,0xD3,0xD3, // 0x0280
0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD3,0xD4,0xD4,0xD4,0xD6,0xD6,0xD6,0xD6,0xD6,0xD6, // 0x0290
0xD7,0xD7,0xD7,0xD7,0xD7,0xD7,0xD8,0xD8,0xD8,0xD9,0xD9,0xD9,0xDA,0xDA,0xDA,0xDA, // 0x02A0
0xDA,0xDA,0xDC,0xDC,0xDC,0xDD,0xDD,0xDD,0xDE,0xDE,0xDE,0xDE,0xDE,0xDE,0xE0,0xE0, // 0x02B0
0xE0,0xE1,0xE1,0xE1,0xE1,0xE1,0xE1,0xE3,0xE3,0xE3,0xE5,0xE5,0xE5,0xE6,0xE6,0xE6, // 0x02C0
0xE7,0xE7,0xE7,0xE9,0xE9,0xE9,0xEB,0xEB,0xEB,0xEA,0xEA,0xEA,0xEC,0xEC,0xEC,0xEE, // 0x02D0
0xEE,0xEE,0xEF,0xEF,0xEF,0xF1,0xF1,0xF1,0xF2,0xF2,0xF2,0xF4,0xF4,0xF4,0xF6,0xF6, // 0x02E0
0xF6,0xF7,0xF7,0xF7,0xFA,0xFA,0xFA,0xFA,0xFA,0xFA,0xFC,0xFC,0xFC,0xFF,0xFF,0xFF, // 0x02F0
};
*/
#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, 0x0F, 0x06, 0xD8,
0x00, 0x41, 0x01, 0x3F, 0x03, 0X11, 0x04, 0X38, 0x06, 0xD8,
0X24, 0X10, 0X25, 0X30, 0X26, 0X10,0x23, 0Xff,
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, 0x29,
0x48, 0x01, 0x49, 0x12, 0x4A, 0x00, 0x4B, 0x01, 0x4C, 0x00,
0x4D, 0x12, 0x4E, 0x00, 0x53, 0x16, 0x55, 0x14, 0x57, 0x16,
0x59, 0x14, 0x68, 0x00, 0x71, 0x09, 0x74, 0x6E, 0x75, 0x00,
0x76, 0x8A, 0x77, 0x00, 0x78, 0x01, 0x79, 0x00, 0x7A, 0xA3,
0x7B, 0x00, 0x7C, 0x00, 0x7D, 0x80, 0x7F, 0x80, 0x8A, 0x58 //for new panel
// 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,
0x00, 0x41, 0x01, 0x3F, 0x02, 0X01,0x03, 0X14, 0x04, 0X14, 0x06, 0xD8,
0X24, 0X10, 0X25, 0X30, 0X26, 0X10,
0x30, 0xc0, 0x31, 0x07, 0x32, 0x00, 0x33, 0x13, 0x34, 0x00,
0x35, 0x30, 0x36, 0x01, 0x3B, 0x0C, 0x3D, 0x01, 0x3F, 0x0C,
0x41, 0x05, 0x43, 0x17, 0x45, 0x51, 0x46, 0x00, 0x47, 0x29,
0x48, 0x00, 0x49, 0x12, 0x4A, 0x00, 0x4B, 0x01, 0x4C, 0x00,
0x4D, 0x12, 0x4E, 0xe7, 0x53, 0x03, 0x55, 0x01, 0x57, 0x03,
0x59, 0x01, 0x68, 0x00, 0x71, 0xb9, 0x74, 0x6E, 0x75, 0x00,
0x76, 0x8A, 0x77, 0x00, 0x78, 0x01, 0x79, 0x00, 0x7A, 0xA3,
0x7B, 0x00, 0x7C, 0x00, 0x7D, 0x80, 0x7F, 0x80, 0x8A, 0x75 //for new panel
// 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()
{
unsigned int j;
unsigned char i;
j=0;
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 //***---
I2C_WriteByte(L44_WRID, 0x21, 0xff); //Turn ON 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<8; 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 //***---
/*
I2C_WriteByte(L44_WRID, 0x11, 0xF4); //access gamma table
for(j=0; j<768; j++)
{
i= GAMMATAL[j];
I2C_WriteByte(L44_WRID, 0x1B, i); //R
// I2C_WriteByte(L44_WRID, 0x1B, i); //G
// I2C_WriteByte(L44_WRID, 0x1B, i); //B
}
I2C_WriteByte(L44_WRID, 0x11, 0xFa); //enable gamma table
*/
}
/**--------------------------------------------------------------------------
* 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 + -