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

📄 autoadj.i

📁 NOVATEK公司的LCD_CONTROLLER源代码 液晶显示器驱动板源代码NT68521
💻 I
📖 第 1 页 / 共 3 页
字号:
 void OSD_Y_Down(void); void SharpnessUp(void); void SharpnessDown(void); void RGB_Up(void); void RGB_Down(void); void OSD_TimerUp(void); void OSD_TimerDown(void); void ColorTempUp(void); void ColorTempDown(void); void LanguageUp(void); void LanguageDown(void); void ResetEEPROM(void); void SaturationUp(void); void SaturationDown(void); void TintUp(void); void TintDown(void); void SharpnessDown(void); void CH_SystemUp(void); void CH_SystemDown(void); void InverterUp(void); void InverterDown(void); void SourceSelect(void);  #line 9 "SRC\AutoAdj.C" /0   #line 1 "SRC\MODEHANDLE.H" /0    void GetCounter(void); void CheckFreq(void); void GetMode(void); void SetUserMode(void); void SyncSource(void); void NoSync(void); void SetMinMax(void); void CheckModeChange(void); void GoToSeparateSync(void); void GoToCompositeSync(void); void CheckSOG(void);  #line 10 "SRC\AutoAdj.C" /0   #line 1 "SRC\8051.H" /0     sfr ACC    = 0xE0; sfr B      = 0xF0; sfr PSW    = 0xD0; sfr SP     = 0x81; sfr DPL    = 0x82; sfr DPH    = 0x83; sfr P0     = 0x80; sfr P1     = 0x90; sfr P2     = 0xA0; sfr P3     = 0xB0; sfr IE     = 0xA8; sfr IP     = 0xB8; sfr PCON   = 0x87; sfr TCON   = 0x88; sfr TMOD   = 0x89; sfr TL0    = 0x8A; sfr TL1    = 0x8B; sfr TH0    = 0x8C; sfr TH1    = 0x8D; sfr T2CON  = 0xC8; sfr RCAP2L = 0xCA; sfr RCAP2H = 0xCB; sfr TL2    = 0xCC; sfr TH2    = 0xCD; sfr SCON   = 0x98; sfr SBUF   = 0x99;     sbit CY    = 0xD7; sbit AC    = 0xD6; sbit F0    = 0xD5; sbit RS1   = 0xD4; sbit RS0   = 0xD3; sbit OV    = 0xD2; sbit P     = 0xD0;  sbit TF1   = 0x8F; sbit TR1   = 0x8E; sbit TF0   = 0x8D; sbit TR0   = 0x8C; sbit IE1   = 0x8B; sbit IT1   = 0x8A; sbit IE0   = 0x89; sbit IT0   = 0x88;  sbit TF2   = 0xCF; sbit EXF2  = 0xCE; sbit RCLK  = 0xCD; sbit TCLK  = 0xCC; sbit EXEN2 = 0xCB; sbit TR2   = 0xCA; sbit CT2   = 0xC9; sbit CPRL2 = 0xC8;  sbit SM0   = 0x9F; sbit SM1   = 0x9E; sbit SM2   = 0x9D; sbit REN   = 0x9C; sbit TB8   = 0x9B; sbit RB8   = 0x9A; sbit TI    = 0x99; sbit RI    = 0x98;  sbit EA    = 0xAF; sbit ET2   = 0xAD; sbit ES    = 0xAC; sbit ET1   = 0xAB; sbit EX1   = 0xAA; sbit ET0   = 0xA9; sbit EX0   = 0xA8;  sbit PT2   = 0xBD; sbit PS    = 0xBC; sbit PT1   = 0xBB; sbit PX1   = 0xBA; sbit PT0   = 0xB9; sbit PX0   = 0xB8;    sbit P00 = 0x80; sbit P01 = 0x81; sbit P02 = 0x82; sbit P03 = 0x83; sbit P04 = 0x84; sbit P05 = 0x85; sbit P06 = 0x86; sbit P07 = 0x87;  sbit P10 = 0x90; sbit P11 = 0x91; sbit P12 = 0x92; sbit P13 = 0x93; sbit P14 = 0x94; sbit P15 = 0x95; sbit P16 = 0x96; sbit P17 = 0x97;  sbit P20 = 0xA0; sbit P21 = 0xA1; sbit P22 = 0xA2; sbit P23 = 0xA3; sbit P24 = 0xA4; sbit P25 = 0xA5; sbit P26 = 0xA6; sbit P27 = 0xA7;  sbit P30 = 0xB0; sbit P31 = 0xB1; sbit P32 = 0xB2; sbit P33 = 0xB3; sbit ISCL = 0xB4; sbit ISDA = 0xB5; sbit P36 = 0xB6; sbit P37 = 0xB7; #line 11 "SRC\AutoAdj.C" /0   #line 1 "SRC\SRGB.H" /0     int sine(unsigned char alpha); int cosine(unsigned char alpha); void product(int *first, int * second, int *result); void sRGB(void);  #line 12 "SRC\AutoAdj.C" /0   #line 1 "SRC\ROM_MAP.H" /0    extern code unsigned char MCU_DataMap[]; extern code unsigned char DDC_Tab[];  #line 13 "SRC\AutoAdj.C" /0   #line 1 "SRC\SAA7114.H" /0      void SAA7114Init(void); void WritePageSAA7114(unsigned char addr1,unsigned char addr2); void CheckColorSystem(void); void CheckVideo(void); void SetVideoBrightness(void); void SetVideoContrast(void); void SetVideoSaturation(void); void SetVideoTint(void); void SetVideoSharpness(void); void SetAV_System(void);  #line 14 "SRC\AutoAdj.C" /0   void AutoTune(void) { xdata unsigned short HP_Temp,VP_Temp,addr; if(H_SYNC_Temp == 0xffff) goto Error1; HP_Temp = HP_Start; VP_Temp = VP_Start; NonFullScreen = 0; flag2 &= ~0x01; AutoPosition(); if(H_SYNC_Temp == 0xffff) goto Error1; if((flag2 & 0x01) != 0x00){ if(NonFullScreen == 0){ goto Error1; } } AutoClock(); if(H_SYNC_Temp == 0xffff) goto Error1; if((flag2 & 0x01) != 0x00){ if(NonFullScreen == 0){ goto Error; } else{ flag2 &= ~0x01; AutoClockByPhase(1); } } else{ AutoClockByPhase(0); } if(H_SYNC_Temp == 0xffff) goto Error1; AutoPhaseFineTune(); if(H_SYNC_Temp == 0xffff) goto Error1; if((flag2 & 0x01) != 0x00) goto Error; AutoPosition(); if(H_SYNC_Temp == 0xffff) goto Error1; if(((flag2 & 0x01) != 0x00)&&(NonFullScreen == 1)){	  if(ModePoint < 31){ addr = 0x101 + (ModePoint * 8); VP_Temp = MCU_DataMap[addr]; addr++; HP_Temp = MCU_DataMap[addr]; HP_Temp <<= 8; addr++; HP_Temp += MCU_DataMap[addr]; } HP_Start = HP_Temp; VP_Start = VP_Temp; SetHP(); SetVP(); flag2 &= ~0x01; } Error: if((flag2 & 0x01) != 0x00){	  if(H_SYNC_Temp != 0xffff){ ForceToBackground(0);	  LoadModeDependentSettings(); SetADC_PLL(); SetADC_Phase(); SetScaler(); WriteIIC_HW(0xB0,0x95,0x00); SetDisplayNormal(); if((flag3 & 0x04) != 0x00){ printf("AutoTune fail\r\n"); } } } else{		  SaveModeDependentSettings(); SetMinMax(); if((flag3 & 0x04) != 0x00){ printf("AutoTune OK\r\n"); } } Error1: RepeatTimer = 100; Repeat = 0xff; }  void AutoPosition(void) { unsigned short temph,tempv; if((flag3 & 0x04) != 0x00){ printf("AutoPosition\r\n"); } WriteIIC_HW(0xB0,0x2E,HP_Min);    WriteIIC_HW(0xB0,0x3C,0x00);    WriteIIC_HW(0xB0,0x2F,0x30);    WriteIIC_HW(0xB0,0x30,0x30);    WriteIIC_HW(0xB0,0x31,0x30);     CheckModeChange(); if((flag2 & 0x01) != 0) return;  WriteIIC_HW(0xB0,0x1F,0x00); if(SyncMode == 3){	  WriteIIC_HW(0xB0,0x1E,0x19); } else{ WriteIIC_HW(0xB0,0x1E,0x09); } Timer3 = 10; while(!(ReadIIC_HW(0xB0,0x1F) & 0x01) && Timer3 != 0){ CheckModeChange(); if((flag2 & 0x01) != 0) return; } if(Timer3 != 0){				  tempv = ReadWordIIC_HW(0xB0,0x32) & 0x07ff; temph = ReadWordIIC_HW(0xB0,0x36) & 0x07ff; if((flag3 & 0x04) != 0x00){ printf("VP_Start = %d\r\n",tempv); printf("HP_Start = %d\r\n",temph); } if((tempv > 0xff) || (temph > (HTotal-H_Act))){ flag2 |= 0x01;			  NonFullScreen = 1; if((flag3 & 0x04) != 0x00){ printf("AutoPosition fail\r\n"); } } else{ HP_Start = temph; VP_Start = tempv; } } else{ flag2 |= 0x01;			  if((flag3 & 0x04) != 0x00){ printf("AutoPosition fail\r\n"); } } SetHP(); SetVP(); }  void AutoClock(void) { unsigned char H_Difference,i,Compare,k; unsigned short PLL_Divider,V_Act; unsigned short H_Ref; if((flag2 & 0x01) != 0x00) return; if((flag3 & 0x04) != 0x00){ printf("AutoClock\r\n"); } V_Act = ReadWordIIC_HW(0xB0,0x34) & 0x07ff; if(VTotal > (V_Act + 190)){ flag2 |= 0x01; NonFullScreen = 1; if((flag3 & 0x04) != 0x00){ printf("Nono full screen V\r\n"); } return; } if((flag3 & 0x40) != 0){ V_Act <<= 1; } PLL_Divider = ReadWordIIC_HW(0xB0,0x38) & 0x07ff;  if((flag3 & 0x04) != 0x00){ printf("V_Act = %d\r\n",V_Act); printf("H_Act = %d\r\n",PLL_Divider); } for(i=0; i<14; i++){		  if(V_Act > V_ActiveTab[i]) H_Ref = V_Act - V_ActiveTab[i]; else H_Ref = V_ActiveTab[i] - V_Act; if(H_Ref < 5){			  H_Ref = H_ActiveTab[i]; if((i == 1)&&(Read24C16(0xd3) != 0)) H_Ref = 640; if(PLL_Divider > H_Ref){ PLL_Divider = PLL_Divider - H_Ref; Compare = 0; } else{ PLL_Divider =  H_Ref - PLL_Divider; Compare = 1; } if(PLL_Divider > (H_Ref >> 3)){			  if((i == 2) && (Compare == 0)){ i = 11; H_Ref = 848; }  } PLL_Divider = 0x106 + (ModePoint * 8); if(i != Read24C16(PLL_Divider)){		  Write24C16(PLL_Divider,i); SetScaler(); } break; } } if((i == 14)||(V_Act < 340)){ flag2 |= 0x01; NonFullScreen = 1; if((flag3 & 0x04) != 0x00){ printf("Nono full screen V\r\n"); } return; } k = i;  WriteWordIIC_HW(0xB0,0x3A,H_Ref);  if(HTotal <= H_Ref){ HTotal = H_Ref + HP_Start; SetADC_PLL(); if((flag3 & 0x02) != 0){ flag2 |= 0x01; return; } } for(i=0; i<0x20; i++){ WriteIIC_HW(0xB0,0x1F,0x00); WriteIIC_HW(0xB0,0x1E,0x09); Timer3 = 10; while(!(ReadIIC_HW(0xB0,0x1F) & 0x01) && Timer3 != 0){ CheckModeChange(); if((flag2 & 0x01) != 0) return; } if(Timer3 == 0){ flag2 |= 0x01; return; } H_Act = ReadWordIIC_HW(0xB0,0x38) & 0x07ff; H_Difference = ReadIIC_HW(0xB0,0x1F); Compare = (H_Difference & 0x0C) >> 2; H_Difference = (H_Difference & 0xF0) >> 4; if((flag3 & 0x04) != 0x00){	 printf("PLL_Divider = %d\r\n",PLL_Divider); printf("H_Act = %d\r\n",H_Act); printf("H_Difference = %d\r\n",(unsigned short)H_Difference); } if(Compare==0x01){ break;   } if(Compare==0x00){   HTotal = HTotal + H_Difference; if(HTotal > 2048){ i = 0xff; break; } } if(Compare == 0x02){   HTotal = HTotal - H_Difference; if(HTotal < H_Ref){ i = 0xff; break; } } SetADC_PLL(); if((flag3 & 0x02) != 0){ flag2 |= 0x01; return; } } if(i == 0xff){ NonFullScreen = 1; flag2 |= 0x01; if((flag3 & 0x04) != 0x00){ printf("Nono full screen H\r\n"); } } else{  HTotal = (HTotal + 2) & 0xfffc; #line 306 "SRC\AutoAdj.C" /1  #line 308 "SRC\AutoAdj.C" /0 SetADC_PLL(); if((flag3 & 0x02) != 0){ flag2 |= 0x01; return; } if((flag3 & 0x04) != 0x00){ printf("H_Total = %d\r\n",HTotal); } } }  void AutoPhaseFineTune(void) { unsigned char   qq,yy,zz,uu,i; unsigned long   Phase_0, Phase_1, Phase_2, Phase_Pre3, Phase_Now3, Phase_Delta; unsigned char   value; if((flag2 & 0x01) != 0x00) return; if((flag3 & 0x04) != 0x00){ printf("Auto Phase Fine Tune\r\n"); }  Phase_1 = 0x00000000;     Phase_2 = 0x00000000;     Phase_Pre3 = 0x00000000;     Phase_Delta = 0xffffffff;      qq = ADC_Phase;  WriteIIC_HW(0xB0,0x20,0x01);   Timer3 = 100;  for(yy=1; yy<Repeat; yy++){ while((ReadIIC_HW(0xB0,0x20) & 0x01) && Timer3 != 0){ CheckModeChange(); if((flag2 & 0x01) != 0) return; } ADC_Phase = (qq + yy) & 0x3f; SetADC_Phase(); WriteIIC_HW(0xB0,0x20,0x01);   Timer3 = 100; Phase_Now3  = 0x00000000; for (zz=0x24; zz>0x20; zz--){ value = ReadIIC_HW(0xB0,zz); Phase_Now3  = Phase_Now3 << 8; Phase_Now3  |= value; } i = (ADC_Phase - 1) & 0x3f; if((flag3 & 0x04) != 0x00) printf("Phase %d = %x %x\r\n",(unsigned short)i,(unsigned short)(Phase_Now3>>16),(unsigned short)Phase_Now3);	 Phase_2 = Phase_1;    Phase_1 = Phase_0; Phase_0 = Phase_Now3; Phase_Now3 = (Phase_0>>1) + (Phase_1>>1) + (Phase_2>>2);   if(yy < 4){ Phase_Pre3  = Phase_Now3;     } else{ if(Phase_Now3 > Phase_Pre3){ Phase_Pre3  = Phase_Now3 - Phase_Pre3; } else{ Phase_Pre3  = Phase_Pre3 - Phase_Now3;    } if(Phase_Pre3 < Phase_Delta){ uu = i;            Phase_Delta = Phase_Pre3; } Phase_Pre3  = Phase_Now3;     }      } ADC_Phase = (uu - 2) & 0x3f; SetADC_Phase(); if((flag3 & 0x04) != 0x00) printf("Phase ok = %d\r\n",(unsigned short)ADC_Phase); }  void SetADC_Offset(unsigned char OffSet) { unsigned char i,j,k,m,n,value; unsigned long PhaseResult,Temp; 

⌨️ 快捷键说明

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