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

📄 hx8824.c

📁 一个LCD TV的源程序, 用的是realtek的IC
💻 C
📖 第 1 页 / 共 4 页
字号:
    I2CWriteByte(HX8824_ADDR, 0x96, 0x40);   // 320
    I2CWriteByte(HX8824_ADDR, 0x97, 0x01);
    I2CWriteByte(HX8824_ADDR, 0x98, 0x07);   // 263
    I2CWriteByte(HX8824_ADDR, 0x99, 0x01);
    I2CWriteByte(HX8824_ADDR, 0x9A, 0x03);   // 03
    I2CWriteByte(HX8824_ADDR, 0x9B, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x9C, 0x12);   // 18
    I2CWriteByte(HX8824_ADDR, 0x9D, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x9E, 0xF0);   // 240
    I2CWriteByte(HX8824_ADDR, 0x9F, 0x00);
    //I2CWriteByte(SAA7111_ADDR, 0x08, 0x88);    // PAL
    I2CWriteByte(HX8824_ADDR, 0x12, 0xBB);
    I2CWriteByte(HX8824_ADDR, 0x13, 0x00);
    //I2CWriteByte(HX8824_ADDR, 0x14, 0x00);
    //I2CWriteByte(HX8824_ADDR, 0x15, 0x00);
    //I2CWriteByte(HX8824_ADDR, 0x16, 0x00);
    //I2CWriteByte(HX8824_ADDR, 0x17, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x19, 0x01);
    I2CWriteByte(HX8824_ADDR, 0x26, 0x00);
    //*****************  PLL ********************************************************
    I2CWriteByte(HX8824_ADDR, 0xD0, 0x21);  // P1
    I2CWriteByte(HX8824_ADDR, 0xD1, 0x0E);  // P2
    I2CWriteByte(HX8824_ADDR, 0xD2, 0x07);  // N
    I2CWriteByte(HX8824_ADDR, 0xD3, 0xFE);  // M: 255 -1
    I2CWriteByte(HX8824_ADDR, 0xD4, 0x00);  // M
#endif

//****************************************************************************************
#if mode8060_8060
    bVideo = 1;
    S1 = 0;
    S2 = 1;
    Mode = 12;
    I2CWriteByte(HX8824_ADDR, 0x10, 0x1C);   // input format select
    I2CWriteByte(HX8824_ADDR, 0x11, 0x07);
    I2CWriteByte(HX8824_ADDR, 0x20, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x21, 0x10);
    I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
    I2CWriteByte(HX8824_ADDR, 0x23, 0x0F);
    I2CWriteByte(HX8824_ADDR, 0x20, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x21, 0x10);
    I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
    I2CWriteByte(HX8824_ADDR, 0x23, 0x1F);
    I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x25, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x25, 0x04);
    I2CWriteByte(HX8824_ADDR, 0xA0, 0x11);
    I2CWriteByte(HX8824_ADDR, 0xA1, 0x27);
    I2CWriteByte(HX8824_ADDR, 0xA2, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x00, 0x20);
    I2CWriteByte(HX8824_ADDR, 0x01, 0x04);
    I2CWriteByte(HX8824_ADDR, 0x02, 0x58);
    I2CWriteByte(HX8824_ADDR, 0x03, 0x02);
    I2CWriteByte(HX8824_ADDR, 0x90, 0x20);
    I2CWriteByte(HX8824_ADDR, 0x91, 0x04);
    I2CWriteByte(HX8824_ADDR, 0x92, 0x80);
    I2CWriteByte(HX8824_ADDR, 0x93, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x94, 0xD8);
    I2CWriteByte(HX8824_ADDR, 0x95, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x96, 0x20);
    I2CWriteByte(HX8824_ADDR, 0x97, 0x03);
    I2CWriteByte(HX8824_ADDR, 0x98, 0x74);
    I2CWriteByte(HX8824_ADDR, 0x99, 0x02);
    I2CWriteByte(HX8824_ADDR, 0x9A, 0x04);
    I2CWriteByte(HX8824_ADDR, 0x9B, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x9C, 0x1B);
    I2CWriteByte(HX8824_ADDR, 0x9D, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x9E, 0x58);
    I2CWriteByte(HX8824_ADDR, 0x9F, 0x02);
    //*****************  PLL ********************************************************
    I2CWriteByte(HX8824_ADDR, 0xD0, 0x08);  // P1
    I2CWriteByte(HX8824_ADDR, 0xD1, 0x08);  // P2
    I2CWriteByte(HX8824_ADDR, 0xD2, 0x09);  // N
    I2CWriteByte(HX8824_ADDR, 0xD3, 0x2B);  // M: 300 -1
    I2CWriteByte(HX8824_ADDR, 0xD4, 0x01);  // M
#endif
//****************************************************************************************
#if mode7224_4827
   bVideo = 1;
    S1 = 0;
    S2 = 1;
    Mode = 13;
    I2CWriteByte(HX8824_ADDR, 0x00, 0xD0);
    I2CWriteByte(HX8824_ADDR, 0x01, 0x02);
    I2CWriteByte(HX8824_ADDR, 0x02, 0xF3);
    I2CWriteByte(HX8824_ADDR, 0x03, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x10, 0x1C);  // input format select
    I2CWriteByte(HX8824_ADDR, 0x11, 0x0F);  // 656
    I2CWriteByte(HX8824_ADDR, 0x20, 0x4D);  // (243/272)*4096 = 0x0E4B
    I2CWriteByte(HX8824_ADDR, 0x21, 0x0E);
    I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
    I2CWriteByte(HX8824_ADDR, 0x23, 0x0F);
    I2CWriteByte(HX8824_ADDR, 0x20, 0x00);   // (720/480)*4096 = 0x1800
    I2CWriteByte(HX8824_ADDR, 0x21, 0x18);
    I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
    I2CWriteByte(HX8824_ADDR, 0x23, 0x1F);
    I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x25, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x25, 0x04);
    I2CWriteByte(HX8824_ADDR, 0x26, 0x01);
    I2CWriteByte(HX8824_ADDR, 0x29, 0x01);  //
    I2CWriteByte(HX8824_ADDR, 0xA0, 0x67);  //
    I2CWriteByte(HX8824_ADDR, 0xA1, 0x02);  //
    I2CWriteByte(HX8824_ADDR, 0xA2, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x90, 0x15);//  527
    I2CWriteByte(HX8824_ADDR, 0x91, 0x02);
    I2CWriteByte(HX8824_ADDR, 0x92, 0x29);//  41
    I2CWriteByte(HX8824_ADDR, 0x93, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x94, 0x2B);//  43
    I2CWriteByte(HX8824_ADDR, 0x95, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x96, 0xE0);//  480
    I2CWriteByte(HX8824_ADDR, 0x97, 0x01);
    I2CWriteByte(HX8824_ADDR, 0x98, 0x30);//  297
    I2CWriteByte(HX8824_ADDR, 0x99, 0x01);
    I2CWriteByte(HX8824_ADDR, 0x9A, 0x0A);//  10
    I2CWriteByte(HX8824_ADDR, 0x9B, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x9C, 0x1D);//  12
    I2CWriteByte(HX8824_ADDR, 0x9D, 0x00);
    I2CWriteByte(HX8824_ADDR, 0x9E, 0x10);//  272
    I2CWriteByte(HX8824_ADDR, 0x9F, 0x01);
    //*****************  PLL ********************************************************
    I2CWriteByte(HX8824_ADDR, 0xD0, 0x29);  // P1   clk_o = 9.4MHz
    I2CWriteByte(HX8824_ADDR, 0xD1, 0x1B);  // P2   clk_m = 14.1MHz
    I2CWriteByte(HX8824_ADDR, 0xD2, 0x09);  // N
    I2CWriteByte(HX8824_ADDR, 0xD3, 0x48);  // M:
    I2CWriteByte(HX8824_ADDR, 0xD4, 0x01);  // M
#endif
//****************************************************************************************
}

/* ================================================================
    Name    : Select_Video_Input
    Purpose : According Pass Variable to change Input Mux Path
    Passed  : None
    Notes   : None
   ================================================================ */

void Select_Video_Input(Byte VideoSrc)
{
    switch(VideoSrc)
    {
        // From Video Decoder
        case _AV:
        case _YC:
        	//I2CWrtCNByte(HX8824_ADDR, &HX8824_Input_Format[2][0], HX8824_MAIN_INP_CLK, 2);
            break;

        // From ADC YUV, ADC Component
//        case _Component:
//        case _VGA_IN:
//             I2CWrtCNByte(HX8824_ADDR, &HX8824_Input_Format[1][0], HX8824_MAIN_INP_CLK, 2);
//             break;

		// DVI Input
		case  _DVI:
             //I2CWrtCNByte(HX8824_ADDR, &HX8824_Input_Format[0][0], HX8824_MAIN_INP_CLK, 2);
             break;
    }
}

/* ================================================================
    Name    : Initial PLL
    Purpose : clock generator
    Passed  : None
    Notes   : None
   ================================================================ */
void Init_PLL(void)
{
#if EX_PLL
    I2CWriteByte(HX8824_ADDR, 0xE0, 0x1E);  // use external clk_m and clk_o -->0x1C; internal:-->0x10
    I2CWriteByte(PLL_ADDR, 0x0E, 0x1F);
    I2CWriteByte(PLL_ADDR, 0x0B, 0x0A);   // CLKM = 29.94 MHz
    I2CWriteByte(PLL_ADDR, 0x14, 0x26);
    I2CWriteByte(PLL_ADDR, 0x15, 0xF0);
    I2CWriteByte(PLL_ADDR, 0x16, 0x5D);
    I2CWriteByte(PLL_ADDR, 0x09, 0x0C);   // CLKO = 33.3 MHz
    I2CWriteByte(PLL_ADDR, 0x11, 0x08);
    I2CWriteByte(PLL_ADDR, 0x12, 0xA3);
    I2CWriteByte(PLL_ADDR, 0x13, 0x4C);
#endif
#if IN_PLL
    I2CWriteByte(HX8824_ADDR, 0xE0, 0x13);  // use external clk_m and clk_o -->0x1C; internal:-->0x10
    I2CWriteByte(HX8824_ADDR, 0xD0, 0x08);
    I2CWriteByte(HX8824_ADDR, 0xD1, 0x09);
    I2CWriteByte(HX8824_ADDR, 0xD2, 0x07);
    I2CWriteByte(HX8824_ADDR, 0xD3, 0xC7);
    I2CWriteByte(HX8824_ADDR, 0xD4, 0x00);
#endif

}

/* ================================================================
    Name    : Initial SAA7111
    Purpose :
    Passed  : None
    Notes   : None
   ================================================================ */
void Init_SAA7111(void)
{
    I2CWriteByte(SAA7111_ADDR, 0x02, 0xC0);
    I2CWriteByte(SAA7111_ADDR, 0x03, 0x33);
    I2CWriteByte(SAA7111_ADDR, 0x04, 0x00);
    I2CWriteByte(SAA7111_ADDR, 0x05, 0x00);
    I2CWriteByte(SAA7111_ADDR, 0x06, 0xEB);
    I2CWriteByte(SAA7111_ADDR, 0x07, 0xE0);
    I2CWriteByte(SAA7111_ADDR, 0x08, 0xC8);
    I2CWriteByte(SAA7111_ADDR, 0x09, 0x41);
    I2CWriteByte(SAA7111_ADDR, 0x0A, 0xD0); //0x95
    I2CWriteByte(SAA7111_ADDR, 0x0B, 0x47); //0x48
    I2CWriteByte(SAA7111_ADDR, 0x0C, 0x40);
    I2CWriteByte(SAA7111_ADDR, 0x0D, 0x00);
    I2CWriteByte(SAA7111_ADDR, 0x0E, 0x01);
    I2CWriteByte(SAA7111_ADDR, 0x10, 0xC0);
    I2CWriteByte(SAA7111_ADDR, 0x11, 0x0D);
    I2CWriteByte(SAA7111_ADDR, 0x12, 0x00);
    I2CWriteByte(SAA7111_ADDR, 0x13, 0x40);
}

/* ================================================================
    Name    : Initial SAA7114
    Purpose :
    Passed  : None
    Notes   : None
   ================================================================ */
void Init_SAA7114(void)
{
code unsigned char T7114[136][2]=
				{{0x01,0x08},{0x02,0xc4},{0x03,0x20},{0x04,0x00},{0x05,0x00},{0x06,0xeb},{0x07,0xe0},
         			 {0x08,0xF8},{0x09,0x40},{0x0a,0x80},{0x0b,0x44},{0x0c,0x50},{0x0d,0x00},{0x0e,0x89},
				 {0x0f,0x2a},{0x10,0x01},{0x11,0x00},{0x12,0xdf},{0x13,0x40},{0x14,0x08},{0x15,0x11},
				 {0x16,0x01},{0x17,0x00},{0x18,0x40},{0x19,0x80},{0x40,0x00},{0x41,0xff},{0x42,0xff},
				 {0x43,0xff},{0x44,0xff},{0x45,0xff},{0x46,0xff},{0x47,0xff},{0x48,0xff},{0x49,0xff},
				 {0x4a,0xff},{0x4b,0xff},{0x4c,0xff},{0x4d,0xff},{0x4e,0xff},{0x4f,0xff},{0x50,0xff},
				 {0x51,0xff},{0x52,0xff},{0x53,0xff},{0x54,0xff},{0x55,0xff},{0x56,0xff},{0x57,0xff},
				 {0x58,0x40},{0x59,0x47},{0x5a,0x06},{0x5b,0x83},{0x5d,0x00},{0x5e,0x00},{0x60,0x00},
				 {0x61,0x00},{0x62,0x00},{0x80,0x10},{0x83,0x01},{0x84,0x45},{0x85,0x00},{0x86,0x45},
				 {0x87,0x01},{0x88,0xf8},{0x8f,0x00},{0x90,0x00},{0x91,0x08},{0x92,0x10},{0x93,0x80},
				 {0x94,0x02},{0x95,0x00},{0x96,0xd0},{0x97,0x02},{0x98,0x0D},{0x99,0x00},{0x9a,0xF2},
				 {0x9b,0x00},{0x9c,0xd0},{0x9d,0x02},{0x9e,0xF0},{0x9f,0x00},{0xa0,0x01},{0xa1,0x00},
				 {0xa2,0x00},{0xa4,0x80},{0xa5,0x40},{0xa6,0x40},{0xa8,0x00},{0xa9,0x04},{0xaa,0x00},
				 {0xac,0x00},{0xad,0x02},{0xae,0x00},{0xb0,0x00},{0xb1,0x04},{0xb2,0x00},{0xb3,0x04},
				 {0xb4,0x00},{0xb8,0x00},{0xbc,0x00},{0xc0,0x00},{0xc1,0x08},{0xc2,0x10},{0xc3,0x80},
				 {0xc4,0x00},{0xc5,0x00},{0xc6,0xd0},{0xc7,0x02},{0xc8,0x0C},{0xc9,0x00},{0xca,0xf2},
				 {0xcb,0x00},{0xcc,0xd0},{0xcd,0x02},{0xce,0xf0},{0xcf,0x00},{0xd0,0x00},{0xd1,0x00},
				 {0xd2,0x00},{0xd4,0x80},{0xd5,0x40},{0xd6,0x40},{0xd8,0x00},{0xd9,0x04},{0xda,0x20},
				 {0xdc,0x00},{0xdd,0x02},{0xde,0x00},{0xe0,0x00},{0xe1,0x04},{0xe2,0x00},{0xe3,0x04},
				 {0xe4,0x01},{0xe8,0x00},{0xec,0x00}};
/*
  code unsigned char T7114[149][2]={{0x01,0x08},{0x02,0xc4},{0x03,0x00},{0x04,0x00},{0x05,0x00},{0x06,0xeb},{0x07,0xe0},
				    {0x08,0xf8},{0x09,0x80},{0x0a,0x90},{0x0b,0x4A},{0x0c,0x4E},{0x0d,0x00},{0x0e,0x86},
				    {0x0f,0xaa},{0x10,0x0e},{0x11,0x08},{0x12,0xdf},{0x13,0x00},{0x14,0x06},{0x15,0x05},
				    {0x16,0x05},{0x17,0x82},{0x18,0x40},{0x19,0x80},{0x09,0x40},{0x40,0x00},{0x41,0xff},
				    {0x42,0xff},{0x43,0xff},{0x44,0xff},{0x45,0xff},{0x46,0xff},{0x47,0xff},{0x48,0xff},
				    {0x49,0xff},{0x4a,0xff},{0x4b,0xff},{0x4c,0xff},{0x4d,0xff},{0x4e,0xff},{0x4f,0xff},
				    {0x50,0xff},{0x51,0xff},{0x52,0xff},{0x53,0xff},{0x54,0xff},{0x55,0xff},{0x56,0xff},
				    {0x57,0xff},{0x58,0x00},{0x59,0x00},{0x5a,0x00},{0x5b,0x00},{0x5d,0x00},{0x5e,0x00},
				    {0x60,0x00},{0x61,0x00},{0x62,0x00},{0x88,0xf8},{0x83,0x01},{0x84,0x45},{0x85,0x00},
				    {0x86,0x40},{0x87,0x01},{0x8f,0x00},{0x90,0x00},{0x91,0x08},{0x92,0x10},{0x80,0x16},
				    {0x93,0x40},{0x94,0x00},{0x95,0x00},{0x96,0xd0},{0x97,0x02},{0x98,0x00},{0x99,0x00},
				    {0x9a,0x04},{0x9b,0x01},{0x9c,0xd0},{0x9d,0x02},{0x9e,0x04},{0x9f,0x01},{0xa0,0x01},
				    {0xa1,0x00},{0xa2,0x00},{0xa4,0x80},{0xa5,0x40},{0xa6,0x40},{0xa8,0x00},{0xa9,0x04},
				    {0xaa,0x20},{0xac,0x00},{0xad,0x02},{0xae,0x10},{0xb0,0x00},{0xb1,0x04},{0xb2,0x00},
				    {0xb3,0x04},{0xb4,0x00},{0xb8,0x00},{0xb9,0x00},{0xba,0x00},{0xbb,0x00},{0xbc,0x00},
				    {0xbd,0x00},{0xbe,0x00},{0xbf,0x00},{0xc0,0x00},{0xc1,0x08},{0xc2,0x10},{0xc3,0x40},
				    {0xc4,0x00},{0xc5,0x00},{0xc6,0xd0},{0xc7,0x02},{0xc8,0x00},{0xc9,0x00},{0xca,0xf0},
				    {0xcb,0x00},{0xcc,0xd0},{0xcd,0x02},{0xce,0xf0},{0xcf,0x00},{0xd0,0x01},{0xd1,0x00},
        		{0xd2,0x00},{0xd4,0x00},{0xd5,0x00},{0xd6,0xd0},{0xd8,0x00},{0xd9,0x04},{0xda,0x00},
        	  {0xdc,0x00},{0xdd,0x02},{0xde,0x00},{0xe0,0x00},{0xe1,0x04},{0xe2,0x00},{0xe3,0x04},
            {0xe4,0x01},{0xe8,0x00},{0xe9,0x00},{0xea,0x00},{0xeb,0x00},{0xec,0x00},{0xed,0x00},
            {0xee,0x00},{0xef,0x00}};
*/
  Byte i;
  for(i = 0; i < 136; i++)
    I2CWriteByte(SAA7114_ADDR, T7114[i][0], T7114[i][1]);
  I2CWriteByte(SAA7114_ADDR, 0x88, 0x88); // Power save control
  I2CWriteByte(SAA7114_ADDR, 0x88, 0xf8);
}

⌨️ 快捷键说明

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