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

📄 scaler.lst

📁 车载SCALER模块源程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 710   3                                      H_SYNC_Temp = 0xffff;
 711   3                              else
 712   3                                      H_Counter = PixelRate * 512;
 713   3                      }
 714   2                      else
 715   2                      {
 716   3                              LocalTimer = 25;
 717   3                              while(LocalTimer > 0){
 718   4                                      ch = ReadIIC563(0x0df) & 0x3f;
 719   4                                      PixelRate = ch;
 720   4                                      PixelRate <<= 8;
 721   4                                      ch = ReadIIC563(0x0de);
 722   4                                      PixelRate += ch;
 723   4                                      PixelRate <<= 8;
 724   4                                      ch = ReadIIC563(0x0dd);
 725   4                                      PixelRate += ch;
 726   4                                      if(abs(PixelRate - H_Counter) > 2){
 727   5                                              H_Counter = PixelRate;
 728   5                                              LocalTimer = 25;
 729   5                                      }
 730   4                                      if(DetectBacklight())   //waiting for pll stable
C51 COMPILER V7.06   SCALER                                                                10/16/2007 19:09:01 PAGE 13  

 731   4                                              break;
 732   4                              }
 733   3                              H_Counter = PixelRate;
 734   3                      }
 735   2                      temp = ((float)FuncBuf[pCLOCK] * 536870912) / PixelRate;
 736   2                      PixelRate = temp;
 737   2                      for(k; k>0; k--)
 738   2                              PixelRate <<= 1;
 739   2                      WriteIIC563(0x0d2,(unsigned char)PixelRate);
 740   2                      WriteIIC563(0x0d3,(unsigned char)(PixelRate>>8));
 741   2                      WriteIIC563(0x0d4,(unsigned char)(PixelRate>>16));
 742   2              }
 743   1              WriteIIC563(0x0d7,(Byte)FuncBuf[pCLOCK]);
 744   1              WriteIIC563(0x0d8,(Byte)(FuncBuf[pCLOCK]>>8));
 745   1              if((SyncMode == 1)||(SyncMode == 2)||(SyncMode == 5)||(SyncMode == 6)){ //H+V SOG
 746   2                      WriteIIC563(0xd5,0x09);
 747   2              }
 748   1              else{
 749   2              #if 0
                              if((HV_Pol & BIT_4) == 0)
                                      WriteIIC563(0x0d5,0x03&(~BIT_3));
                              else
                                      WriteIIC563(0x0d5,0x03|BIT_3);
                      #else
 755   2                      WriteIIC563(0x0d5,0x0b);
 756   2              #endif
 757   2              }
 758   1      }
 759          
 760          void SetDPLL(unsigned long dclk)
 761          {
 762   1              Byte i;
 763   1              unsigned long temp;
 764   1              unsigned long code DpllTab[4]={80000000,40000000,20000000,0}; //050428,Eason
 765   1              for(i=0;i<4;i++)
 766   1                      if(dclk > DpllTab[i])
 767   1                              break;
 768   1              WriteIIC563(0x0f1,0x10+i);
 769   1              if(PanelTwoPixelPerClk == 1)    //Jacky 20050107
 770   1                      WriteIIC563(0x1fb,i * 2);
 771   1              else
 772   1                      WriteIIC563(0x1fb,i & 0xFE );
 773   1              switch(i)
 774   1              {
 775   2                      case 0:
 776   2                              temp = ((float)dclk / 1000) * 131072 / REFCLK;
 777   2                              break;
 778   2                      case 1:
 779   2                              temp = ((float)dclk / 1000) * 131072 / REFCLK * 2;
 780   2                              break;
 781   2                      case 2:
 782   2                              temp = ((float)dclk / 1000) * 131072 / REFCLK * 4;
 783   2                              break;
 784   2                      case 3:
 785   2                              temp = ((float)dclk / 1000) * 131072 / REFCLK * 8;
 786   2                              break;
 787   2              };
 788   1              WriteIIC563(0x0f2,(unsigned char)temp);
 789   1              WriteIIC563(0x0f3,(unsigned char)(temp >> 8));
 790   1              WriteIIC563(0x0f4,(unsigned char)(temp >> 16));
 791   1              WriteIIC563(0x0f0,0x03);
 792   1      }
C51 COMPILER V7.06   SCALER                                                                10/16/2007 19:09:01 PAGE 14  

 793          void SetHP(void)
 794          {
 795   1      // Horizontal Start
 796   1              WriteWordIIC563(0x034,FuncBuf[pHPOSITION]);
 797   1      }
 798          /*==========================================
 799          ==========================================*/
 800          void SetVP(void)
 801          {
 802   1      // Vertical Start
 803   1              if(Interlance){
 804   2                      WriteWordIIC563(0x030,FuncBuf[pVPOSITION]);
 805   2                      if(V_SYNC < 550)
 806   2                              WriteWordIIC563(0x02e,FuncBuf[pVPOSITION]-1);
 807   2                      else
 808   2                              WriteWordIIC563(0x02e,FuncBuf[pVPOSITION]);
 809   2              }else
 810   1      //              WriteWordIIC563(0x02e,0x0050);
 811   1                      WriteWordIIC563(0x02e,FuncBuf[pVPOSITION]);
 812   1      }
 813          /*==========================================
 814          ==========================================*/
 815          /*
 816          void SetSharpness(void)
 817          {
 818                  Word code H_Sharp[]={
 819                          0x1f,0x1e,0x1d,0x1c,0x1b,0x1a,0x19,0x18,
 820                          0x17,0x16,0x15,0x14,0x13,0x12,0x11,0x10,
 821                          0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,
 822                          0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
 823                  };
 824                  WriteIIC563(0x060,H_Sharp[FuncBuf[pSHARPNESS]]);
 825                  WriteIIC563(0x066,FuncBuf[pSHARPNESS]/4);
 826          }
 827          */
 828          /*==========================================
 829          ==========================================*/
 830          void SetBrightness(void)
 831          {
 832   1      /*
 833   1              unsigned short value;
 834   1      
 835   1      #define BACKLIGHT_50    ((maxBACKLIGHT-minBACKLIGHT)/2+minBACKLIGHT)
 836   1      
 837   1              if(FuncBuf[pBRIGHTNESS]>BACKLIGHT_50)           // max=111, min=18, 50%=46+18=64
 838   1              {       
 839   1                      value = FuncBuf[pBRIGHTNESS];
 840   1                      value = (value-BACKLIGHT_50);
 841   1              
 842   1                      //PWM9_REG = 3*value/5+60;              // evan modify date 060214
 843   1              
 844   1                      PWM9_REG = 7*value/5+60;
 845   1              
 846   1                      WriteIIC563(0x061,0);
 847   1                      WriteIIC563(0x062,0);           
 848   1              }
 849   1              else
 850   1              {
 851   1                      PWM9_REG = 60;
 852   1                      value = 0x100 - (BACKLIGHT_50-FuncBuf[pBRIGHTNESS])*25/40;
 853   1                      WriteIIC563(0x061,0);
 854   1                      WriteIIC563(0x062,(Byte)value);
C51 COMPILER V7.06   SCALER                                                                10/16/2007 19:09:01 PAGE 15  

 855   1              }
 856   1      */      
 857   1      }
 858          /*==========================================
 859          ==========================================*/
 860          void SetContrast(void)
 861          {
 862   1              Word value,k;
 863   1              
 864   1              FuncBuf[pRCOLOR]=0x7f;
 865   1              FuncBuf[pGCOLOR]=0x7f;
 866   1              FuncBuf[pBCOLOR]=0x7f;
 867   1              FuncBuf[pCONTRAST]=0x7f;
 868   1      #if ContrastBlock == sRGBGain
              //      WriteIIC563(0x3C0,0x7c); 
              //      WriteIIC563(0x3C4,0x80);//level0);  
              //      WriteIIC563(0x3C5,0x80);//level1);   
              //      WriteIIC563(0x3C6,0x80);//level2);
                      sRGB(200,200,200);
              #else
 875   1              
 876   1              k = FuncBuf[pCONTRAST] + 100;           //78 ---- 178
 877   1              value = FuncBuf[pRCOLOR];
 878   1              value = (unsigned short)value * k / 128;
 879   1              WriteIIC563(0x061,0x0d);
 880   1              WriteIIC563(0x063,value);
 881   1              value = FuncBuf[pGCOLOR];
 882   1              value = (unsigned short)value * k / 128;
 883   1              WriteIIC563(0x061,0x0e);
 884   1              WriteIIC563(0x063,value);
 885   1              value = FuncBuf[pBCOLOR];
 886   1              value = (unsigned short)value * k / 128;
 887   1              WriteIIC563(0x061,0x0f);
 888   1              WriteIIC563(0x063,value);
 889   1      
 890   1      #endif
 891   1       }
 892          /*==========================================
 893          ==========================================*/
 894          void ForceToBackground(Byte color_r,Byte color_g,Byte color_b)
 895          {
 896   1              unsigned char temp;
 897   1              if((ForceToBack == 0)||(FactMode!= 0)){
 898   2                      ForceToBack = 1;
 899   2                      WriteIIC563(0x16b,color_r);
 900   2                      WriteIIC563(0x16c,color_g);
 901   2                      WriteIIC563(0x16d,color_b);
 902   2                      temp = ReadIIC563(0x159);
 903   2                      //WriteIIC563(0x159,(temp&0xc0|0x07));  //RGB
 904   2                      WriteIIC563(0x159,(temp&0xc0)); //RGB
 905   2                      WriteIIC563(0x154,0x02);
 906   2              }
 907   1      }
 908          /*==========================================
 909          ==========================================*/
 910          void SetDisplayNormal(void)
 911          {
 912   1              Byte ch;
 913   1              if(SyncMode == 3)
 914   1                      {
 915   2                              ;
 916   2                      }
C51 COMPILER V7.06   SCALER                                                                10/16/2007 19:09:01 PAGE 16  

 917   1              else
 918   1                      {
 919   2                      WriteIIC563(0x1a9,0x00);
 920   2                      ch = ReadIIC563(0x101);
 921   2                      WriteIIC563(0x101,ch|BIT_5);    //chip warm reset
 922   2                      //Sleep(20);
 923   2                      WriteIIC563(0x101,ch);  //chip warm reset
 924   2                      }
 925   1      #if DVImode == DEmode
 926   1              // Jacky 20040623 For DE mode scaler shut down
 927   1              if(SyncMode == 3)       //DVI
 928   1              {
 929   2                      WriteIIC563(0x1a9,0x00);        //disable IRQ interrupt
 930   2                      ch = ReadIIC563(0x196);
 931   2                      WriteIIC563(0x196,0x94);
 932   2                      Sleep(20);
 933   2                      WriteIIC563(0x196,ch&(~BIT_7));
 934   2              }
 935   1      #endif
 936   1              Sleep(80);
 937   1              Sleep(50);
 938   1              //-------------------------
 939   1              WriteIIC563(0x1ab,0x3f);                //clear IRQ
 940   1              WriteIIC563(0x1ac,0x1f);
 941   1              WriteIIC563(0x1a9,0x3c);
 942   1              LoadADC_Gain();
 943   1              if(SyncMode == 3)       //DVI
 944   1              {
 945   2                      WriteIIC563(0x068,0x00);
 946   2                      WriteIIC563(0x06a,0x00);
 947   2              }
 948   1              else
 949   1              {
 950   2                      WriteIIC563(0x068,0x7a);

⌨️ 快捷键说明

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