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

📄 modehandle.i

📁 NOVATEK公司的LCD_CONTROLLER源代码 液晶显示器驱动板源代码NT68521
💻 I
📖 第 1 页 / 共 3 页
字号:
                                                #line 1760 "SRC\PANEL.H" /0                                                               #line 1827 "SRC\PANEL.H" /1                                                                                                      #line 1890 "SRC\PANEL.H" /0  #line 10 "SRC\ModeHandle.C" /0   #line 1 "SRC\AUTOADJ.H" /0    void AutoTune(void); void AutoPosition(void); void AutoClock(void); void AutoPhase(void); void AutoPhaseFineTune(void); void SetADC_Offset(unsigned char OffSet); void SetADC_Gain(unsigned char OffSet); void WriteADC_Offset(unsigned char r,unsigned char g,unsigned char b); void AutoColor(void);  void CheckRCV(void); void RcvError(void); void CheckCmd(unsigned char i); void ReadHistogram(void); void AutoClockByPhase(bit h); unsigned long CheckPhaseData(void);  #line 11 "SRC\ModeHandle.C" /0   #line 1 "SRC\OSD.H" /0                                                                                          extern code unsigned char IconPosition[]; extern code unsigned char ClearLine1[]; extern code unsigned char ClearLine2[]; extern code unsigned char ClearLine3[]; extern code unsigned char MenuItem[]; extern code unsigned char *SourceTab[];  void OsdInit(void); void Osd2Init(void); void Osd3Init(void); void Osd4Init(void); void LoadFont(void); void ShowMainMenu(void); void MainMenu(void); void ClearOSD(void); void OSD_OFF(void); void ShowSubMenu(void); void ValueUp(void); void ValueDown(void); void ShowT_Bar(void); void ShowBrightness(void); void ShowContrast(void); void ShowClock(void); void ShowPhase(void); void ShowHP(void); void ShowVP(void); void ShowNO_YES(unsigned char i); void SetPosition(void); void ShowVersion(void); void ClearText(void); void ShowOutOfRange(void); void ShowNoSync(void); void ShowDisconnector(void); void SaveData(void); void ShowAutoAdj1(void); void ShowAutoAdj(void); void ShowRGB(void); void ShowOSD_X(void); void ShowOSD_Y(void); void ShowOSD_Timer(void); void ShowColorTemperature(void); void ShowLanguage(void); void SelectItem(void); void WriteSequenceScaler(unsigned char addr,unsigned char *p); void WriteStringScaler(unsigned char Attr,unsigned char *p); void WriteXY_StrScaler(unsigned char Attr,unsigned char x,unsigned char y,unsigned char *p); void FillLineAttr(unsigned char x,unsigned char y,unsigned char l,unsigned short Attr); void UnselectIcon(void); void WriteXY_CStrScaler(unsigned char Attr,unsigned char x,unsigned char y,unsigned char w,unsigned char *p); void CheckRGB(void); void ShowMisceMenu(void); void ShowInverter(void); void ShowSaturation(void); void ShowTint(void); void ShowSharpness(void); void SetMovePosition(void); void ShowVolume(); void DirectVolume(); void ShowValue(unsigned char Attr,unsigned char value); void ShowSliderBar(unsigned char x,unsigned char y,unsigned char value); void ShowFreq(void); void ShowResolution(void); void ShowNum(unsigned char Attr,unsigned char xx,unsigned char yy,unsigned char value); void ShowInputSource(void); void VideoMenu(void); void ShowVideoMenu(void); void ShowVideoSubMenu(void); void VideoValueUp(void); void VideoValueDown(void); void VideoUnSelectIcon(void); void VideoSelectItem(void);  enum{ NotSaveSaveFlag, BrightnessSaveFlag, ContrastSaveFlag, ClockSaveFlag, PhaseSaveFlag, HP_SaveFlag, VP_SaveFlag,  R_GainSaveFlag, G_GainSaveFlag, B_GainSaveFlag, VolumeSaveFlag,  OSD_X_SaveFlag, OSD_Y_SaveFlag, OSD_TimerSaveFlag, SaturationSaveFlag, TintSaveFlag, SharpnessSaveFlag, InverterSaveFlag, Osd_ControlSaveFlag     };   enum{ BrightnessNode, ContrastNode, PhaseNode, ClockNode, HP_Node, VP_Node, RecallNode, ColorTempNode, R_GainNode, G_GainNode, B_GainNode, LanguageNode, MisceNode, ExitMainMenuNode, ExitMisceMenuNode, OSD_X_Node, OSD_Y_Node, OSD_TimerNode, OSD_RotationNode, OSD_FlipNode, OSD_MirrorNode, AutoColorNode, SaturationNode, TintNode, SharpnessNode };	    enum{ AvBrightnessNode, AvContrastNode, AvSaturationNode, AvTintNode, AvSharpnessNode, AvLanguageNode, AvRecallNode, AvOSD_X_Node, AvOSD_Y_Node, AvOSD_TimerNode, AvExitMainMenuNode };	  #line 12 "SRC\ModeHandle.C" /0   #line 1 "SRC\ROM_MAP.H" /0    extern code unsigned char MCU_DataMap[]; extern code unsigned char DDC_Tab[];  #line 13 "SRC\ModeHandle.C" /0     void GetCounter(void) { unsigned char value,temp; unsigned long Freq;   value = INTHV_FLG & 0x47;		  if(value != 0){ INTHV_FLG = 0xc7; flag1 |= 0x01;  HV_Pol = 0; value = HVI_REG & 0x03; if((value & 0x01) != 0) HV_Pol |= 0x20; if((value & 0x02) != 0) HV_Pol |= 0x10;  temp = HCNT_LB; value = HCNT_HB; if((value & 0x80) != 0){ H_SYNC = 0; flag1 &= ~0x01; } else{ H_SYNC = value & 0x0f; H_SYNC <<= 8; H_SYNC = H_SYNC | temp; if((H_SYNC == 0x0fff)||(H_SYNC == 0)){ H_SYNC = 0; flag1 &= ~0x01; } else{ Freq = (unsigned long)H_SYNC * 100000; H_SYNC = (unsigned int)(((Freq / 32768) + 5) / 10); } }  temp = VCNT_LB; value = VCNT_HB; if((value & 0x80) != 0){ V_SYNC = 0; flag1 &= ~0x01; } else{ V_SYNC = value & 0x3f; V_SYNC <<= 8; V_SYNC = V_SYNC | temp; if((V_SYNC == 0x3fff)||(V_SYNC == 0)){ V_SYNC = 0; flag1 &= ~0x01; } else{ Freq = (unsigned long)12500000 / V_SYNC + 5; V_SYNC = Freq / 10; } } } else{ if((MUTE_CTRL & 0x30) != 0x30){ flag1 &= ~0x01; } } }  void CheckFreq(void) {  Timer3 = 100; do{ GetCounter(); if(((flag1 & 0x01)==0)||(Timer3 == 0)){ NoSync(); return; } else{ if((flag1 & 0x08) != 0){ if((SyncMode == 2) && ((flag2 & 0x10) == 0)){ flag1 &= ~0x01; flag2 |= 0x10; return; } ScalerPowerUp(); } } if(HV_Pol_Temp != HV_Pol){ BackLightOff(); ForceToBackground(0);	  HV_Pol_Temp = HV_Pol; Timer4 = 50; OSD_OFF(); flag1 |= 0x10; if((flag3 & 0x04) != 0x00) printf("HV_Pol Change\r\n"); } if(H_SYNC_Temp > H_SYNC){ if((H_SYNC_Temp - H_SYNC) > 10){ BackLightOff(); ForceToBackground(0);	  H_SYNC_Temp = H_SYNC; Timer4 = 50; OSD_OFF(); flag1 |= 0x10; if((flag3 & 0x04) != 0x00) printf("H_SYNC Change %d\r\n",(unsigned short)H_SYNC); } } else{ if((H_SYNC - H_SYNC_Temp) > 10){ BackLightOff(); ForceToBackground(0);	  H_SYNC_Temp = H_SYNC; Timer4 = 50; OSD_OFF(); flag1 |= 0x10; if((flag3 & 0x04) != 0x00) printf("H_SYNC Change %d\r\n",(unsigned short)H_SYNC); } } if(V_SYNC_Temp > V_SYNC){ if((V_SYNC_Temp - V_SYNC) > 10){ BackLightOff(); ForceToBackground(0);	  V_SYNC_Temp = V_SYNC; Timer4 = 50; OSD_OFF(); flag1 |= 0x10; if((flag3 & 0x04) != 0x00) printf("V_SYNC Change %d\r\n",(unsigned short)V_SYNC); } } else{ if((V_SYNC - V_SYNC_Temp) > 10){ BackLightOff(); ForceToBackground(0);	  V_SYNC_Temp = V_SYNC; Timer4 = 50; OSD_OFF(); flag1 |= 0x10; if((flag3 & 0x04) != 0x00) printf("V_SYNC Change %d\r\n",(unsigned short)V_SYNC); } } }while(Timer4 != 0); if((flag1 & 0x10) != 0){ flag1 &= ~0x10; GetMode(); SetMinMax(); CheckModeChange(); if(H_SYNC_Temp == 0xffff){ return; } if((flag3 & 0x02) == 0){ SetDisplayNormal(); if(Read24C16(0xdb) != 0){   BackLightOn();  AutoTune(); }  SetVolume(); } else{ ShowOutOfRange(); BackLightOn(); }     }  else{ if(((flag3 & 0x02) != 0)&&(PoSvTimer < 400)&&(PoSvTimer > 0)){ ShowOutOfRange(); } }  }  void GetMode(void) { unsigned char ch; unsigned short i,j,value; #line 204 "SRC\ModeHandle.C" /1                #line 220 "SRC\ModeHandle.C" /0 ModePoint = 0; VTotal = (unsigned short)(((unsigned long)H_SYNC * 1000)/ V_SYNC); for(j=0; j< 4*50; j=j+4){ i = j; ch = Read24C16(i);	  value = ch; value = value << 8; i++; ch = Read24C16(i); value = value + ch; i++; if((H_SYNC < (value + 10))&&(H_SYNC > (value - 10))){ ch = Read24C16(i);	  value = ch & 0x0f; value = value << 8; ch = ch & 0x30; i++; if(ch == HV_Pol){ ch = Read24C16(i);	  value = value + ch; i++; if((V_SYNC < (value + 10))&&(V_SYNC > (value - 10))){ if((flag3 & 0x04) != 0x00){ printf("Mode %d\r\n",(unsigned short)ModePoint); } break; } } } ModePoint++; } if(ModePoint >= 50){ if((flag3 & 0x04) != 0x00){ printf("user's mode\r\n"); } SetUserMode(); } LoadModeDependentSettings(); i = 0x106 + (ModePoint * 8); i = Read24C16(i); VP_Max = (unsigned char)(VTotal - V_ActiveTab[i] + 20); if(VP_Max < VP_Start) VP_Max = (unsigned char)VP_Start; if((flag3 & 0x04) != 0x00){ printf("HV_Pol= %x\r\n",(unsigned short)HV_Pol); printf("H_SYNC= %d\r\n",H_SYNC); printf("V_SYNC= %d\r\n",V_SYNC); printf("VP_Max = %d\r\n",(unsigned short)VP_Max); }  SetADC_PLL(); if((flag3 & 0x02) == 0){ SetScaler(); if(SyncMode != 3){ SetADC_Phase(); SetSharpness(); } } #line 288 "SRC\ModeHandle.C" /1     #line 293 "SRC\ModeHandle.C" /0 if((SyncMode == 3) && ((PortD & 0x04) != 0))	  AutoPosition();  }  void SetUserMode(void) { code unsigned short Vt_Tab[]={ 500,600,700,768,850,950,1050,1080 };  code unsigned char UserTimeTab[]={ 0x00,0x10,0x00,0x60,0x03,0x84,0x01,0x10,	  0x00,0x10,0x00,0x50,0x06,0x80,0x02,0x10,	  0x00,0x10,0x00,0x98,0x04,0x18,0x03,0x10,	  0x00,0x10,0x00,0xe0,0x06,0xc0,0x0c,0x10,	  0x00,0x10,0x00,0xd0,0x05,0x40,0x05,0x10,	  0x00,0x10,0x00,0xd0,0x06,0x40,0x06,0x10,	  0x00,0x10,0x00,0xe0,0x06,0xc0,0x07,0x10,	  0x00,0x10,0x00,0xf8,0x06,0x98,0x08,0x10,	  0x00,0x2e,0x01,0x30,0x08,0x70,0x09,0x10		  };  unsigned short addr; unsigned char i,j,k; if((flag3 & 0x04) != 0x00){ printf("Vtotal = %d\r\n",VTotal); }	 if((flag3 & 0x40) != 0){ addr = VTotal << 1; } else{ addr = VTotal; } j = 8; for(i=0; i<8; i++){ if(addr < Vt_Tab[i]){ j = i; break; } } j = j * 8; ModePoint = Read24C16(0xd2); ModePoint++; if(ModePoint >= 50){ ModePoint = 31 - 1; } Write24C16(0xd2,ModePoint); if((flag3 & 0x04) != 0x00){ printf("UserModePoint =  %d\r\n",(unsigned short)ModePoint); } addr = 0x100 + (ModePoint * 8); for(i=0; i<8; i++){ k = UserTimeTab[j]; Write24C16(addr,k); if((flag3 & 0x04) != 0x00){ printf("Data %x = %x\r\n",(unsigned short)i,(unsigned short)k); } addr++; j++; } addr = ModePoint * 4; k = H_SYNC >> 8; Write24C16(addr,k); addr++; k = H_SYNC; Write24C16(addr,k); addr++; k = V_SYNC >> 8; k |= HV_Pol; Write24C16(addr,k); addr++; k = V_SYNC; Write24C16(addr,k); addr = 0x290 + (ModePoint << 1); j = j - 4; k = UserTimeTab[j]; Write24C16(addr,k); addr++; j++; k = UserTimeTab[j]; Write24C16(addr,k); }  void SyncSource(void) { unsigned char value; if((flag1 & 0x08) != 0){ if((PoSvTimer == 0)&&((PortC & 0x40) == 0)){ if((flag3 & 0x01) == 0){ if(Read24C16(0xdc) == 0){ PoSvTimer = 500; } else{ PowerSaving(); LED_GrnOff(); LED_RedOn(); } } else{ OSD_OFF();			  PoSvTimer = 500; value = ReadIIC_HW(0xB0,0x4d) & 0x1f; value >>= 2; if(++value > 7) value = 0; flag1 &= ~0x02;		  ForceToBackground(value);	  } }  else if(((PortD & 0x20) != 0)&&(PoSvTimer < 400)&&((flag3 & 0x01) == 0)){ if(PoSvTimer == 0){ ScalerPowerUp(); } else{ PoSvTimer = 500; ShowDisconnector(); if((PortC & 0x40) != 0){ BackLightOn(); } } return; } else if(((PortD & 0x20) == 0)&&((flag2 & 0x04) != 0)&&((flag3 & 0x01) == 0)){ flag1 &= ~0x08;		  NoSync(); }  switch(SyncMode){ case 0x00:		  value = MUTE_CTRL & 0x30; if(value == 0x00){	  CheckSOG(); } else if(value == 0x20){	  GoToCompositeSync(); } break; case 0x01:		  value = MUTE_CTRL & 0x30; if(value == 0x00){	  CheckSOG(); } else if(value == 0x20){	  GoToSeparateSync(); } break; case 0x02:		  GoToSeparateSync(); break; case 0x03:		  DIG_SEL(); HVI_REG = 0xE0;	  #line 448 "SRC\ModeHandle.C" /1  #line 450 "SRC\ModeHandle.C" /0 WriteIIC_HW(0xB0,0x12,0x81);  WriteIIC_HW(0xB0,0x86,0xc0); WriteIIC_HW(0xB0,0x87,0xc0); WriteIIC_HW(0xB0,0xd5,0x00); WriteIIC_HW(0xB0,0xe5,0xc0); WriteIIC_HW(0xB0,0xe6,0x03); WriteIIC_HW(0xB0,0xf8,7); if(0 == 0){ WriteIIC_HW(0xB0,0xfe,0x02); } else if(0 == 1){ WriteIIC_HW(0xB0,0xfe,0xc0); } else{ WriteIIC_HW(0xB0,0xfe,0xc1); } if((flag3 & 0x04) != 0x00){ printf("DVI Input\r\n"); } break; } Timer3 = 50; while(Timer3 != 0){ CheckKey(); } } }  void GoToSeparateSync(void) { DIG_Off(); HVI_REG = 0xE0;	  WriteIIC_HW(0xB0,0x01,(0x48 | 0x01));  WriteIIC_HW(0xB0,0x86,0xc0); WriteIIC_HW(0xB0,0x87,0xc0); WriteIIC_HW(0xB0,0xd5,0x00); WriteIIC_HW(0xB0,0xe6,0x03); WriteIIC_HW(0xB0,0xf8,7); if(0 == 0){ WriteIIC_HW(0xB0,0xfe,0x02); } else if(0 == 1){ WriteIIC_HW(0xB0,0xfe,0xc0); } else{ WriteIIC_HW(0xB0,0xfe,0xc1); } SyncMode = 0; if((flag3 & 0x04) != 0x00){ printf("Separate Sync\r\n"); } }  void GoToCompositeSync(void) { HVI_REG = 0xA0;	  WriteIIC_HW(0xB0,0x01,(0xd8 | 0x01));  WriteIIC_HW(0xB0,0x86,0xc0); WriteIIC_HW(0xB0,0x87,0x80); WriteIIC_HW(0xB0,0xd5,0x00); WriteIIC_HW(0xB0,0xe6,0x03); WriteIIC_HW(0xB0,0xf8,7); if(0 == 0){ WriteIIC_HW(0xB0,0xfe,0x02); } else if(0 == 1){ WriteIIC_HW(0xB0,0xfe,0xc0); } else{ WriteIIC_HW(0xB0,0xfe,0xc1); } SyncMode = 1; if((flag3 & 0x04) != 0x00){ printf("Composite Sync\r\n"); } }  void CheckSOG(void) { WriteIIC_HW(0xB0,0x01,(0xd8 | 0x01));  WriteIIC_HW(0xB0,0x86,0xe0); WriteIIC_HW(0xB0,0x87,0x00); WriteIIC_HW(0xB0,0xd5,0x04); WriteIIC_HW(0xB0,0xe6,0x7f); WriteIIC_HW(0xB0,0xf8,(7|0x80)); if(0 == 0){ WriteIIC_HW(0xB0,0xfe,0x12); } else if(0 == 1){ WriteIIC_HW(0xB0,0xfe,0xd0); } else{ WriteIIC_HW(0xB0,0xfe,0xd1); } SYNC_REG = 0x40; Sleep(40); Timer1 = 40; H_SYNC = 0; V_SYNC = 0; while(Timer1 != 0){ if((PortC & 0x04) == 0){ V_SYNC++; } else{ H_SYNC++; } } H_SYNC >>= 2; SYNC_REG = 0x60; if(H_SYNC > V_SYNC){ HVI_REG = 0x20;	  SyncMode = 2; if((flag3 & 0x04) != 0x00){ printf("Sync on green\r\n"); } } else{ GoToSeparateSync(); } }  void NoSync(void) { if((flag1 & 0x08) == 0){ OSD_Control &= ~0x01; WriteIIC_HW(0xB0,0x95,OSD_Control); flag1 |= 0x08; flag2 &= 0xe1; flag3 &= ~0x02;		  BackLightOff(); ForceToBackground(0);	  PoSvTimer = 500; if((flag3 & 0x04) != 0x00){ printf("NoSync\r\n"); } } else if((PoSvTimer < 300)&&(PoSvTimer > 0)&&((flag2 & 0x02)==0)){  flag2 |= 0x02; ShowNoSync(); if((PortC & 0x40) != 0){ BackLightOn(); } } }  void SetMinMax(void) { #line 603 "SRC\ModeHandle.C" /1                                                        #line 659 "SRC\ModeHandle.C" /0 unsigned short i,k; unsigned char w;  i = 0x290 + (ModePoint << 1); k = Read24C16(i); i++; k <<= 8; k += Read24C16(i); w = HPW_REG; w = (unsigned long)H_SYNC * k / (120000 / w);  w = (w + 4) & 0xf8; HP_Max = k - H_Act - w;  if(HP_Start > HP_Max){ HP_Max = HP_Start; } HP_Min = (unsigned char)((k * 3) / 100); if(HP_Start < HP_Min){ HP_Min = HP_Start; } if((HP_Start + H_Act) < (k - 50)){ Clk_Min = k - 50; Clk_Max = k + 50; } else{ Clk_Min = HP_Start + H_Act; Clk_Max = Clk_Min + 100; } if((flag3 & 0x04) != 0x00){ printf("HPW = %d\r\n",(unsigned short)w); printf("HP_Max = %d\r\n",HP_Max); printf("HP_Min = %d\r\n",(unsigned short)HP_Min); printf("Clk_Max = %d\r\n",Clk_Max); printf("Clk_Min = %d\r\n",Clk_Min); }  }  void CheckModeChange(void) { #line 701 "SRC\ModeHandle.C" /1       #line 708 "SRC\ModeHandle.C" /0 unsigned char value,temp; unsigned long Freq; if(PowerStatus > 0x80) return; if(((INTHV_FLG & 0x07) != 0)||((MUTE_CTRL & 0x30) != 0x30)){ BackLightOff(); flag2 |= 0x01; H_SYNC_Temp = 0xffff; V_SYNC_Temp = 0xffff; return; }  flag1 |= 0x01;  temp = VCNT_LB; value = VCNT_HB; if((value & 0x80) != 0){ V_SYNC = 0; flag1 &= ~0x01; } else{ V_SYNC = value & 0x3f; V_SYNC <<= 8; V_SYNC = V_SYNC | temp; if((V_SYNC == 0x3fff)||(V_SYNC == 0)){ V_SYNC = 0; flag1 &= ~0x01; } else{ Freq = (unsigned long)12500000 / V_SYNC + 5; V_SYNC = Freq / 10; } } if(V_SYNC_Temp > V_SYNC){ if((V_SYNC_Temp - V_SYNC) > 3){ BackLightOff(); flag2 |= 0x01; H_SYNC_Temp = 0xffff; V_SYNC_Temp = 0xffff; return; } } else{ if((V_SYNC - V_SYNC_Temp) > 3){ BackLightOff(); flag2 |= 0x01; H_SYNC_Temp = 0xffff; V_SYNC_Temp = 0xffff; return; } }  }

⌨️ 快捷键说明

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