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

📄 autoadj.i

📁 NOVATEK公司的LCD_CONTROLLER源代码 液晶显示器驱动板源代码NT68521
💻 I
📖 第 1 页 / 共 3 页
字号:
   WriteIIC_HW(0xB0,0x26,0x00); WriteIIC_HW(0xB0,0x27,0x00); for(m=0; m<3; m++){ for(k=OffSet; k<128; k=k+8){ i = 0x0f + m; WriteIIC_HW(0xB0,i,k); WaitSetup(5); Timer3 = 10; i = 0x19 + m * 0x10; WriteIIC_HW(0xB0,0x20,i); while((ReadIIC_HW(0xB0,0x20) & 0x01) && Timer3 != 0){ CheckModeChange(); if((flag2 & 0x01) != 0) return; } if(Timer3 == 0){ flag2 |= 0x01; return; } j = 0; Temp = 0; for(i=0; i<8; i++){ WriteIIC_HW(0xB0,0x24,i); value = ReadIIC_HW(0xB0,0x23); PhaseResult = value; PhaseResult <<= 8; value = ReadIIC_HW(0xB0,0x22); PhaseResult += value; PhaseResult <<= 8; value = ReadIIC_HW(0xB0,0x21); PhaseResult += value; if(PhaseResult > Temp){ Temp = PhaseResult; j = i; } } if(Temp > 0x300){ i = 0x0f + m; j = k+j; WriteIIC_HW(0xB0,i,j); break; } } if(k == 128){ flag2 |= 0x01; return; } for(n=0; n<8; n++){ i = 0x0f + m; WriteIIC_HW(0xB0,i,k+n); WaitSetup(5); Timer3 = 10; i = 0x19 + m * 0x10; WriteIIC_HW(0xB0,0x20,i); while((ReadIIC_HW(0xB0,0x20) & 0x01) && Timer3 != 0){ CheckModeChange(); if((flag2 & 0x01) != 0) return; } if(Timer3 == 0){ flag2 |= 0x01; return; } j = 0; Temp = 0; for(i=0; i<8; i++){ WriteIIC_HW(0xB0,0x24,i); value = ReadIIC_HW(0xB0,0x23); PhaseResult = value; PhaseResult <<= 8; value = ReadIIC_HW(0xB0,0x22); PhaseResult += value; PhaseResult <<= 8; value = ReadIIC_HW(0xB0,0x21); PhaseResult += value; if(PhaseResult > Temp){ Temp = PhaseResult; j = i; } } if(j == 0){ break; } } i = 0x0f + m; j = k+n; WriteIIC_HW(0xB0,i,j); } Write24C16(0xfa,ReadIIC_HW(0xB0,0x0f)); Write24C16(0xfb,ReadIIC_HW(0xB0,0x10)); Write24C16(0xfc,ReadIIC_HW(0xB0,0x11)); }  void SetADC_Gain(unsigned char OffSet) { unsigned char i,j,k,m,n,value; unsigned long PhaseResult,Temp; WriteIIC_HW(0xB0,0x26,0x00); WriteIIC_HW(0xB0,0x27,0xf8); for(m=0; m<3; m++){ for(k=OffSet; k>7; k=k-8){ i = 0x02 + m * 2; WriteIIC_HW(0xB0,i,k); WaitSetup(5); Timer3 = 10; i = 0x19 + m * 0x10; WriteIIC_HW(0xB0,0x20,i); while((ReadIIC_HW(0xB0,0x20) & 0x01) && Timer3 != 0){ CheckModeChange(); if((flag2 & 0x01) != 0) return; } if(Timer3 == 0){ flag2 |= 0x01; return; } j = 0; Temp = 0; for(i=0; i<8; i++){ WriteIIC_HW(0xB0,0x24,i); value = ReadIIC_HW(0xB0,0x23); PhaseResult = value; PhaseResult <<= 8; value = ReadIIC_HW(0xB0,0x22); PhaseResult += value; PhaseResult <<= 8; value = ReadIIC_HW(0xB0,0x21); PhaseResult += value; if(PhaseResult > Temp){ Temp = PhaseResult; j = i; } } if(Temp > 0x300){ i = 0x02 + m * 2; j = k+j; break; } } if(k == 0){ flag2 |= 0x01; return; } for(n=0; n<16; n++){ i = 0x02 + m * 2; WriteIIC_HW(0xB0,i,k-n); WaitSetup(5); Timer3 = 10; i = 0x19 + m * 0x10; WriteIIC_HW(0xB0,0x20,i); while((ReadIIC_HW(0xB0,0x20) & 0x01) && Timer3 != 0){ CheckModeChange(); if((flag2 & 0x01) != 0) return; } if(Timer3 == 0){ flag2 |= 0x01; return; } j = 0; Temp = 0; for(i=0; i<8; i++){ WriteIIC_HW(0xB0,0x24,i); value = ReadIIC_HW(0xB0,0x23); PhaseResult = value; PhaseResult <<= 8; value = ReadIIC_HW(0xB0,0x22); PhaseResult += value; PhaseResult <<= 8; value = ReadIIC_HW(0xB0,0x21); PhaseResult += value; if(PhaseResult > Temp){ Temp = PhaseResult; j = i; } } if(j == 7){ break; } }		 i = 0x02 + m * 2; j = k-n; WriteIIC_HW(0xB0,i,j); } R_ADC = ReadIIC_HW(0xB0,0x02); Write24C16(0xfd,R_ADC); G_ADC = ReadIIC_HW(0xB0,0x04); Write24C16(0xfe,G_ADC); B_ADC = ReadIIC_HW(0xB0,0x06); Write24C16(0xff,B_ADC); }  void AutoColor(void) { flag2 &= ~0x01; WriteWordIIC_HW(0xB0,0x18,HP_Start - 20); SetADC_Offset(0x20); if((flag2 & 0x01) != 0x00){ goto Error; } WriteWordIIC_HW(0xB0,0x18,HP_Start); SetADC_Gain(0xa0); Error: if((flag2 & 0x01) != 0){ LoadADC_Gain(); } }  void AutoClockByPhase(bit h) { bit R_L,U_D; unsigned char k,temp; unsigned short i,GoodClk; xdata unsigned long MaxMin,Value; if((ModePoint < 31)&&(h == 1)){ i = 0x104 + (ModePoint * 8); HTotal = MCU_DataMap[i]; i++; HTotal <<= 8; HTotal += MCU_DataMap[i]; } GoodClk = HTotal; SetADC_PLL(); WaitSetup(40); if((flag2 & 0x01) != 0) return; MaxMin = CheckPhaseData(); temp = TempValue; if((flag2 & 0x01) != 0) return; U_D = 0; R_L = 1; for(k=0; k<16; k++){ if(R_L == 1){ HTotal += 2; SetADC_PLL(); WaitSetup(40); if((flag2 & 0x01) != 0) return; Value = CheckPhaseData(); if((flag2 & 0x01) != 0) return; if(MaxMin < Value){ GoodClk = HTotal; MaxMin = Value; temp = TempValue; U_D = 1; } else{ if(U_D == 0){ R_L = 0; HTotal -= 2; U_D = 1; } else{ break; } } } else{ HTotal -= 2; SetADC_PLL(); WaitSetup(40); if((flag2 & 0x01) != 0) return; Value = CheckPhaseData(); if((flag2 & 0x01) != 0) return; if(MaxMin < Value){ GoodClk = HTotal; MaxMin = Value; temp = TempValue; U_D = 1; } else{ if(U_D == 0){ R_L = 1; HTotal += 2; U_D = 1; } else{ break; } } } } HTotal = GoodClk; SetADC_PLL(); ADC_Phase = (temp + 24) & 0x3f; Repeat = 32; SetADC_Phase(); }  unsigned long CheckPhaseData(void) { unsigned char zz,ch; xdata unsigned long Value,MinValueTemp,MaxValueTemp; MaxValueTemp = 0; MinValueTemp = 0xffffffff; ADC_Phase = 0; SetADC_Phase(); WriteIIC_HW(0xB0,0x20,0x01);   Timer3 = 10; for(ADC_Phase=4; ADC_Phase<0x42; ADC_Phase = ADC_Phase + 4){ while((ReadIIC_HW(0xB0,0x20) & 0x01) && Timer3 != 0){ CheckModeChange(); if((flag2 & 0x01) != 0) return 0; } SetADC_Phase(); WriteIIC_HW(0xB0,0x20,0x01); Timer3 = 10; Value = 0x00000000; for(zz=0x24; zz>0x20; zz--){ ch = ReadIIC_HW(0xB0,zz); Value  = Value << 8; Value  |= ch; } if(Value < MinValueTemp){ MinValueTemp = Value; TempValue = (ADC_Phase - 4) & 0x3f; } if(Value > MaxValueTemp){ MaxValueTemp = Value; } }  Value = MaxValueTemp - MinValueTemp;  return Value; }  void CheckRCV(void) { unsigned char i; if(RI == 1){ i = SBUF; RI = 0; CheckCmd(i); } }  void CheckCmd(unsigned char i) { while(TI == 0){} SBUF = i; TI = 0; if(i == 13){		  while(TI == 0){} printf("\n"); switch(rwbuf){ case 0x00: printf("\r\n"); printf("W0 aaaa dd : Write 24C16\r\n"); printf("R0 aaaa    : Read  24C16\r\n"); printf("W1 aaaa dd : Write Scaler\r\n"); printf("R1 aaaa    : Read  Scaler\r\n"); printf("W2 aaaa dd : Write rgbGain\r\n"); printf("R2 aaaa    : Read  rgbGain\r\n"); printf("W3 aaaa dd : Write SAA7114\r\n"); printf("R3 aaaa    : Read  SAA7114\r\n"); printf("R4 0       : Auto Black Level\r\n"); printf("R4 1       : Auto White Level\r\n"); printf("R4 2       : Auto Color\r\n"); printf("R4 3       : Set 6500K\r\n"); printf("R4 4       : Set 7500K\r\n"); printf("R4 5       : Set 9300K\r\n"); printf("R4 6       : Resive\r\n"); printf("R4 7       : DDC Write Enable\r\n"); printf("R4 8       : Disble Report Status\r\n"); printf("R4 9       : Enable Report Status\r\n"); printf("W4 0 dd    : Set IIC BaudRate\r\n"); printf("   aaaa    : 16/8  bit Address\r\n"); printf("   dd      : 8     bit Data\r\n"); printf("Enter Key  : For help!\r\n"); while(1); break; case 0xe0: Write24C16(abuf,dbuf); printf("EEPROM: 0x%x = 0x%x\r\n",abuf,(unsigned short)dbuf); break; case 0xc1: dbuf = Read24C16(abuf); printf("EEPROM: 0x%x = 0x%x\r\n",abuf,(unsigned short)dbuf); break; case 0xe2: abuf &= 0x0ff; WriteIIC_HW(0xB0,(unsigned char)abuf,dbuf); printf("Scaler: 0x%x = 0x%x\r\n",abuf,(unsigned short)dbuf); break; case 0xc3: abuf &= 0x0ff; dbuf = ReadIIC_HW(0xB0,(unsigned char)abuf); printf("Scaler: 0x%x = 0x%x\r\n",abuf,(unsigned short)dbuf); break; case 0xe4: abuf &= 0x03; switch(abuf){ case 0: R_Gain = dbuf; break; case 1: G_Gain = dbuf; break; case 2: B_Gain = dbuf; break; } printf("rgbGain : %x = %x\r\n",(unsigned short)abuf,(unsigned short)dbuf); sRGB(); CmdTxBuffer[0] = 0x5a; break; case 0xc5: abuf &= 0x03; switch(abuf){ case 0: dbuf = R_Gain; break; case 1: dbuf = G_Gain; break; case 2: dbuf = B_Gain; break; } printf("rgbGain : %x = %x\r\n",(unsigned short)abuf,(unsigned short)dbuf); break; case 0xe6: abuf &= 0x0ff; WriteIIC_HW(0x42,(unsigned char)abuf,dbuf); printf("SAA7114: 0x%x = 0x%x\r\n",abuf,(unsigned short)dbuf); break; case 0xc7: abuf &= 0x0ff; dbuf = ReadIIC_HW(0x42,(unsigned char)abuf); printf("SAA7114: 0x%x = 0x%x\r\n",abuf,(unsigned short)dbuf); break; case 0xc9: abuf &= 0x0ff; switch(abuf){ case 0: flag3 &= ~0x01;	  flag3 &= ~0x04;	      SetADC_Offset(0x00); printf("Set Dark OK!\r\n"); CmdTxBuffer[0] = 0x5a; break; case 1:		  SetADC_Gain(0xf8); printf("Set white OK!\r\n"); CmdTxBuffer[0] = 0x5a; break; case 2:		  AutoColor(); printf("Set Auto Color OK!\r\n"); CmdTxBuffer[0] = 0x5a; break; case 3:		  Write24C16(0xee,R_Gain);	  Write24C16(0xef,G_Gain); Write24C16(0xf0,B_Gain); printf("Write USER\r\n"); Write24C16(0xf1,R_Gain);	  Write24C16(0xf2,G_Gain); Write24C16(0xf3,B_Gain); printf("Write 6500K\r\n"); CmdTxBuffer[0] = 0x5a; break; case 4:		  Write24C16(0xf4,R_Gain);	  Write24C16(0xf5,G_Gain); Write24C16(0xf6,B_Gain); printf("Write 7500K\r\n"); CmdTxBuffer[0] = 0x5a; break; case 5:		  Write24C16(0xf7,R_Gain);	  Write24C16(0xf8,G_Gain); Write24C16(0xf9,B_Gain); printf("Write 9300K\r\n"); CmdTxBuffer[0] = 0x5a; break; case 6:		  AutoTune();  printf("Auto adjust\r\n"); CmdTxBuffer[0] = 0x5a; break; case 8: flag3 &= ~0x04;		  printf("Disable Report Status\r\n"); break; case 9: flag3 |= 0x04;		  printf("Report Status\r\n"); break; } break; case 0xe8:		  dbuf &= 0x03; dbuf <<= 2; IIC_BaudRate = dbuf; printf("Set IIC Baudrate: %x\r\n",(unsigned short)dbuf); break; default: RcvError(); return; break; } rwbuf = 0; abuf = 0; dbuf = 0; printf("OK\r\n"); return; } if((rwbuf & 0x80) == 0){	  switch(i){ case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: i = i & 0x0f; i = i << 1; rwbuf = rwbuf + i; rwbuf |= 0x80; break; case 0x57:		  case 0x77:		  rwbuf &= 0xfe; break; case 0x52:		  case 0x72:		  rwbuf |= 0x01; break; default: printf("\r\n"); RcvError(); break; } } else{		  if(i == 0x20){ if((rwbuf & 0x40) == 0){ rwbuf |= 0x40; } else{ if((rwbuf & 0x20) == 0){ rwbuf |= 0x20; } else{ RcvError(); } } return; } if((i > 0x2f)&&(i < 0x3a)){ i &= 0x0f; } else{ if(i > 0x60){ i = i - 0x20; } if(i > 0x40){ i = i - 0x07; } if((i > 0x39)&&(i < 0x40)){ i &= 0x0f; } else{ RcvError(); return; } } if((rwbuf & 0x60) == 0x40){ abuf <<= 4; abuf += i; } if((rwbuf & 0x60) == 0x60){ dbuf <<= 4; dbuf += i; } } }  void RcvError(void) { while(TI == 0){} printf("\nError\r\n"); rwbuf = 0; abuf = 0; dbuf = 0; }  

⌨️ 快捷键说明

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