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

📄 function.lst

📁 一个LCD TV的源程序, 用的是realtek的IC
💻 LST
📖 第 1 页 / 共 5 页
字号:
 459   2                  I2CWriteByte(HX8824_ADDR, 0x25, 0x00);
 460   2                  I2CWriteByte(HX8824_ADDR, 0x24, 0x50);
 461   2                  I2CWriteByte(HX8824_ADDR, 0x25, 0x04);
 462   2                  //I2CWriteByte(HX8824_ADDR, 0xA0, 0x00);  // 0x88
 463   2                  //I2CWriteByte(HX8824_ADDR, 0xA1, 0x15);  // 0x13
 464   2                  //I2CWriteByte(HX8824_ADDR, 0xA2, 0x00);
 465   2                      //**************** PLL ************************************************
 466   2                  I2CWriteByte(HX8824_ADDR, 0xD0, 0x08);
 467   2                  I2CWriteByte(HX8824_ADDR, 0xD1, 0x08);
 468   2                  I2CWriteByte(HX8824_ADDR, 0xD2, 0x07);
 469   2                  I2CWriteByte(HX8824_ADDR, 0xD3, 0xC7);
 470   2                  I2CWriteByte(HX8824_ADDR, 0xD4, 0x00);
 471   2              break;
 472   2              case 1:   // full screen
 473   2                  I2CWriteByte(HX8824_ADDR, 0x20, 0x00);
 474   2                  I2CWriteByte(HX8824_ADDR, 0x21, 0x10);
 475   2                  I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
 476   2                  I2CWriteByte(HX8824_ADDR, 0x23, 0x0F);
 477   2                  I2CWriteByte(HX8824_ADDR, 0x20, 0xCC);
 478   2                  I2CWriteByte(HX8824_ADDR, 0x21, 0x0C);
 479   2                  I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
 480   2                  I2CWriteByte(HX8824_ADDR, 0x23, 0x1F);
C51 COMPILER V7.07   FUNCTION                                                              09/26/2006 08:56:43 PAGE 9   

 481   2                  I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
 482   2                  I2CWriteByte(HX8824_ADDR, 0x25, 0x00);
 483   2                  I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
 484   2                  I2CWriteByte(HX8824_ADDR, 0x25, 0x04);
 485   2                  I2CWriteByte(HX8824_ADDR, 0xA0, 0xe2);  // 88  e2
 486   2                  I2CWriteByte(HX8824_ADDR, 0xA1, 0x13);  // 17  13
 487   2                  I2CWriteByte(HX8824_ADDR, 0xA2, 0x00);
 488   2              //*****************  PLL ********************************************************
 489   2                  I2CWriteByte(HX8824_ADDR, 0xD0, 0x03);
 490   2                  I2CWriteByte(HX8824_ADDR, 0xD1, 0x04);
 491   2                  I2CWriteByte(HX8824_ADDR, 0xD2, 0x08);
 492   2                  I2CWriteByte(HX8824_ADDR, 0xD3, 0x63);
 493   2                  I2CWriteByte(HX8824_ADDR, 0xD4, 0x00);
 494   2              break;
 495   2              default:
 496   2              break;
 497   2          }
 498   1      }
 499          
 500          /* -------------------------------------------------------------------
 501            Name    : NTSC Set_Border
 502            Purpose : Set Border in VGA mode display
 503            Passed  : +/-
 504            Returns :
 505            Notes   :
 506            ------------------------------------------------------------------- */
 507          void NTSC_SetBorder(Byte S)
 508          {
 509   1          switch(S)
 510   1          {
 511   2              case 0:   // border screen
 512   2                  I2CWriteByte(HX8824_ADDR, 0x20, 0x00);
 513   2                  I2CWriteByte(HX8824_ADDR, 0x21, 0x12);
 514   2                  I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
 515   2                  I2CWriteByte(HX8824_ADDR, 0x23, 0x1F);
 516   2                  I2CWriteByte(HX8824_ADDR, 0x24, 0x50);
 517   2                  I2CWriteByte(HX8824_ADDR, 0x25, 0x00);
 518   2                  I2CWriteByte(HX8824_ADDR, 0x24, 0x50);
 519   2                  I2CWriteByte(HX8824_ADDR, 0x25, 0x04);
 520   2                      //**************** PLL ************************************************
 521   2                  I2CWriteByte(HX8824_ADDR, 0xD1, 0x07);
 522   2              break;
 523   2              case 1:   // full screen
 524   2                  I2CWriteByte(HX8824_ADDR, 0x20, 0x65);
 525   2                  I2CWriteByte(HX8824_ADDR, 0x21, 0x0E);
 526   2                  I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
 527   2                  I2CWriteByte(HX8824_ADDR, 0x23, 0x1F);
 528   2                  I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
 529   2                  I2CWriteByte(HX8824_ADDR, 0x25, 0x00);
 530   2                  I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
 531   2                  I2CWriteByte(HX8824_ADDR, 0x25, 0x04);
 532   2              //*****************  PLL ********************************************************
 533   2                  I2CWriteByte(HX8824_ADDR, 0xD1, 0x09);
 534   2              break;
 535   2              default:
 536   2              break;
 537   2          }
 538   1      }
 539          
 540          /* -------------------------------------------------------------------
 541            Name    : PAL Set_Border
 542            Purpose : Set Border in VGA mode display
C51 COMPILER V7.07   FUNCTION                                                              09/26/2006 08:56:43 PAGE 10  

 543            Passed  : +/-
 544            Returns :
 545            Notes   :
 546            ------------------------------------------------------------------- */
 547          void PAL_SetBorder(Byte S)
 548          {
 549   1          switch(S)
 550   1          {
 551   2              case 0:   // border screen
 552   2                  I2CWriteByte(HX8824_ADDR, 0x20, 0x00);
 553   2                  I2CWriteByte(HX8824_ADDR, 0x21, 0x12);
 554   2                  I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
 555   2                  I2CWriteByte(HX8824_ADDR, 0x23, 0x1F);
 556   2                  I2CWriteByte(HX8824_ADDR, 0x24, 0x50);
 557   2                  I2CWriteByte(HX8824_ADDR, 0x25, 0x00);
 558   2                  I2CWriteByte(HX8824_ADDR, 0x24, 0x50);
 559   2                  I2CWriteByte(HX8824_ADDR, 0x25, 0x04);
 560   2                      //**************** PLL ************************************************
 561   2                  I2CWriteByte(HX8824_ADDR, 0xD1, 0x0B);
 562   2              //**************** CCIR 601 setting ***********************************
 563   2                  I2CWriteByte(HX8824_ADDR, 0x11, 0x0F);  // input format CCIR601
 564   2                  I2CWriteByte(HX8824_ADDR, 0x10, 0x1C);  // input format internal Href
 565   2                  I2CWriteByte(HX8824_ADDR, 0x12, 0x7A);  // input format Href position
 566   2                  I2CWriteByte(HX8824_ADDR, 0x13, 0x00);  // input format Href position
 567   2                  I2CWriteByte(HX8824_ADDR, 0x14, 0x00);  // input format V position
 568   2                  I2CWriteByte(HX8824_ADDR, 0x15, 0x00);  // input format V position
 569   2                  I2CWriteByte(HX8824_ADDR, 0x16, 0x00);  // input format V position
 570   2                  I2CWriteByte(HX8824_ADDR, 0x17, 0x00);  // input format V position
 571   2      
 572   2              break;
 573   2              case 1:   // full screen
 574   2                  I2CWriteByte(HX8824_ADDR, 0x20, 0x65);
 575   2                  I2CWriteByte(HX8824_ADDR, 0x21, 0x0E);
 576   2                  I2CWriteByte(HX8824_ADDR, 0x22, 0xFF);
 577   2                  I2CWriteByte(HX8824_ADDR, 0x23, 0x1F);
 578   2                  I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
 579   2                  I2CWriteByte(HX8824_ADDR, 0x25, 0x00);
 580   2                  I2CWriteByte(HX8824_ADDR, 0x24, 0x00);
 581   2                  I2CWriteByte(HX8824_ADDR, 0x25, 0x04);
 582   2              //*****************  PLL ********************************************************
 583   2                  I2CWriteByte(HX8824_ADDR, 0xD1, 0x0E);
 584   2              //***************** CCIR656 setting *********************************************
 585   2                  I2CWriteByte(HX8824_ADDR, 0x11, 0x0F);  // input format CCIR656
 586   2                  I2CWriteByte(HX8824_ADDR, 0x10, 0x1C);  // input format external href
 587   2                  I2CWriteByte(HX8824_ADDR, 0x12, 0x7A);  // input format Href position
 588   2                  I2CWriteByte(HX8824_ADDR, 0x13, 0x00);  // input format Href position
 589   2                  I2CWriteByte(HX8824_ADDR, 0x14, 0x00);  // input format V position
 590   2                  I2CWriteByte(HX8824_ADDR, 0x15, 0x00);  // input format V position
 591   2                  I2CWriteByte(HX8824_ADDR, 0x16, 0x00);  // input format V position
 592   2                  I2CWriteByte(HX8824_ADDR, 0x17, 0x00);  // input format V position
 593   2      
 594   2              break;
 595   2              default:
 596   2              break;
 597   2          }
 598   1      }
 599          
 600          /* -------------------------------------------------------------------
 601            Name    : Change Video Frequency
 602            Purpose :
 603            Passed  :
 604            Returns :
C51 COMPILER V7.07   FUNCTION                                                              09/26/2006 08:56:43 PAGE 11  

 605            Notes   :
 606            ------------------------------------------------------------------- */
 607          void Change_Video_Frequency(void)
 608          {
 609   1        code unsigned char _60Hz7114[6][2] = {{0x0E,0x89},{0x5a,0x06},{0x9a,0xF6},{0x9B,0x00},{0x9e,0xF6},
 610   1                                               {0x9F,0x00}};
 611   1        code unsigned char _50Hz7114[6][2] = {{0x0E,0x81},{0x5a,0x03},{0x9a,0x26},{0x9B,0x01},{0x9e,0x26},
 612   1                                               {0x9F,0x01},};
 613   1        Byte i;
 614   1        if(b60hz) { // NTSC
 615   2          for(i = 0; i < 6; i++)
 616   2            I2CWriteByte(SAA7114_ADDR, _60Hz7114[i][0], _60Hz7114[i][1]);
 617   2              if (bSource == 0)
 618   2              I2CWriteByte(SAA7114_ADDR, 0x09, I2CReadByte(SAA7114_ADDR, 0x09) & 0x7F); // check if composite
 619   2              else                                                                                      
 620   2              I2CWriteByte(SAA7114_ADDR, 0x09, I2CReadByte(SAA7114_ADDR, 0x09) | 0x80); // check if S-video           
 621   2          I2CWriteByte(SAA7114_ADDR, 0x09, I2CReadByte(SAA7114_ADDR, 0x09) | 0x40); // disable YCOMB
 622   2          I2CWriteByte(SAA7114_ADDR, 0x0e, I2CReadByte(SAA7114_ADDR, 0x0e) | 0x09); //
 623   2          I2CWriteByte(SAA7114_ADDR, 0x0f, 0x2a);
 624   2          I2CWriteByte(SAA7114_ADDR, 0x10, 0x0e);
 625   2          }
 626   1        else { // PAL
 627   2          for(i = 0; i < 6; i++)
 628   2            I2CWriteByte(SAA7114_ADDR, _50Hz7114[i][0], _50Hz7114[i][1]);
 629   2              if (bSource == 0)
 630   2              I2CWriteByte(SAA7114_ADDR, 0x09, I2CReadByte(SAA7114_ADDR, 0x09) & 0x7F); // check if composite
 631   2              else                                                                                      
 632   2              I2CWriteByte(SAA7114_ADDR, 0x09, I2CReadByte(SAA7114_ADDR, 0x09) | 0x80); // check if S-video
 633   2          I2CWriteByte(SAA7114_ADDR, 0x09, I2CReadByte(SAA7114_ADDR, 0x09) | 0x40);
 634   2          I2CWriteByte(SAA7114_ADDR, 0x0e, I2CReadByte(SAA7114_ADDR, 0x0e) & 0xf7);
 635   2          I2CWriteByte(SAA7114_ADDR, 0x0e, I2CReadByte(SAA7114_ADDR, 0x0e) | 0x01);
 636   2          I2CWriteByte(SAA7114_ADDR, 0x0f, 0x2a);
 637   2          I2CWriteByte(SAA7114_ADDR, 0x10, 0x06);
 638   2          }
 639   1        }
 640          
 641          
 642          /* -------------------------------------------------------------------
 643            Name    : VGA Non Linear Scaling
 644            Purpose :
 645            Passed  : no.
 646            Returns :
 647            Notes   :
 648            ------------------------------------------------------------------- */
 649          void VGA_Non_Linear_Scaling(Byte S)
 650          {
 651   1          Byte i;
 652   1          code unsigned char VGA_Non_Linear[3][20][2] = {{// no need to write Y direction
 653   1                                                {0x20,0x00},{0x21,0x0C},{0x22,0x64},{0x23,0x10}, // X1
 654   1                                                {0x20,0xCC},{0x21,0x0C},{0x22,0xC8},{0x23,0x20}, // X2
 655   1                                                {0x20,0x99},{0x21,0x0D},{0x22,0xC8},{0x23,0x30}, // X3
 656   1                                                {0x20,0xCC},{0x21,0x0C},{0x22,0xC8},{0x23,0x40}, // X4
 657   1                                                {0x20,0x00},{0x21,0x0C},{0x22,0x64},{0x23,0x50}},// X5
 658   1                                                {
 659   1                                                {0x20,0x33},{0x21,0x0B},{0x22,0x64},{0x23,0x10}, // X1
 660   1                                                {0x20,0xCC},{0x21,0x0C},{0x22,0xC8},{0x23,0x20}, // X2
 661   1                                                {0x20,0x66},{0x21,0x0E},{0x22,0xC8},{0x23,0x30}, // X3
 662   1                                                {0x20,0xCC},{0x21,0x0C},{0x22,0xC8},{0x23,0x40}, // X4
 663   1                                                {0x20,0x33},{0x21,0x0B},{0x22,0x64},{0x23,0x50}},// X5
 664   1                                                {
 665   1                                                {0x20,0x99},{0x21,0x09},{0x22,0x64},{0x23,0x10}, // X1
 666   1                                                {0x20,0xCC},{0x21,0x0C},{0x22,0xC8},{0x23,0x20}, // X2
C51 COMPILER V7.07   FUNCTION                                                              09/26/2006 08:56:43 PAGE 12  

 667   1                                                {0x20,0x00},{0x21,0x10},{0x22,0xC8},{0x23,0x30}, // X3
 668   1                                                {0x20,0xCC},{0x21,0x0C},{0x22,0xC8},{0x23,0x40}, // X4
 669   1                                                {0x20,0x99},{0x21,0x09},{0x22,0x64},{0x23,0x50}} // X5
 670   1      
 671   1                                               };
 672   1          for(i = 0; i < 20; i++)
 673   1            I2CWriteByte(HX8824_ADDR, VGA_Non_Linear[S][i][0], VGA_Non_Linear[S][i][1]);
 674   1      }
 675          
 676          /* -------------------------------------------------------------------
 677            Name    : NTSC Non Linear Scaling
 678            Purpose :
 679            Passed  : no.
 680            Returns :
 681            Notes   :
 682            ------------------------------------------------------------------- */
 683          void NTSC_Non_Linear_Scaling(Byte S)
 684          {
 685   1          Byte i;
 686   1          code unsigned char NTSC_Non_Linear[1][20][2] = {{// no need to write Y direction
 687   1                                                {0x20,0x99},{0x21,0x0D},{0x22,0x64},{0x23,0x10}, // X1
 688   1                                                {0x20,0x66},{0x21,0x0E},{0x22,0xc8},{0x23,0x20}, // X2
 689   1                                                {0x20,0x33},{0x21,0x0F},{0x22,0xc8},{0x23,0x30}, // X3
 690   1                                                {0x20,0x66},{0x21,0x0E},{0x22,0xc8},{0x23,0x40}, // X4
 691   1                                                {0x20,0x99},{0x21,0x0D},{0x22,0x64},{0x23,0x50}}// X5
 692   1                                               };
 693   1          for(i = 0; i < 20; i++)
 694   1            I2CWriteByte(HX8824_ADDR, NTSC_Non_Linear[S][i][0], NTSC_Non_Linear[S][i][1]);
 695   1      }

⌨️ 快捷键说明

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