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

📄 lcd_func.lst

📁 Realtek 公司的RTD2523A芯片原厂source code,没有被修改过的。
💻 LST
📖 第 1 页 / 共 5 页
字号:
 902   1          unsigned char   ucTemp  = 0;
 903   1          unsigned char   ucRate  = (unsigned long)RTD_XTAL * usADC_Clock / usStdHS / 1000; // Pixel clock in MH
             -z
 904   1      
 905   1          do
 906   1          {
 907   2              if (ucRate > ADC_Gain_FineTune[ucTemp][0])
 908   2              {
 909   3                  ucRed   = ADC_Gain_FineTune[ucTemp][1];
 910   3                  ucGreen = ADC_Gain_FineTune[ucTemp][2];
 911   3                  ucBlue  = ADC_Gain_FineTune[ucTemp][3];
 912   3                  break;
 913   3              }
 914   2      
 915   2              if (0 == ADC_Gain_FineTune[ucTemp][0])  break;
 916   2          }
 917   1          while (++ucTemp);
 918   1      
C51 COMPILER V6.20c  LCD_FUNC                                                              04/15/2004 12:59:09 PAGE 16  

 919   1          ucTemp  = 50;
 920   1      
 921   1      #if (ANALOG_CONTRAST)
 922   1          
 923   1          if (100 < stGUD0.CONTRAST)	stGUD0.CONTRAST = 50;
 924   1      	
 925   1          ucTemp  = (unsigned int)stGUD0.CONTRAST * 9 / 10;
 926   1          ucRed   = Set_Contrast_Gain(ucTemp, ucRed);
 927   1          ucGreen = Set_Contrast_Gain(ucTemp, ucGreen);
 928   1          ucBlue  = Set_Contrast_Gain(ucTemp, ucBlue); 
 929   1      
 930   1      #endif
 931   1      
 932   1          SetColorGainOffset(GRNGAIN_E1, stGUD2.AD_G_GAIN, ucGreen);
 933   1      
 934   1      #if (SWAP_RED_BLUE)
                  SetColorGainOffset(REDGAIN_E0, stGUD2.AD_B_GAIN, ucBlue);
                  SetColorGainOffset(BLUGAIN_E2, stGUD2.AD_R_GAIN, ucRed);
              #else
 938   1          SetColorGainOffset(REDGAIN_E0, stGUD2.AD_R_GAIN, ucRed);
 939   1          SetColorGainOffset(BLUGAIN_E2, stGUD2.AD_B_GAIN, ucBlue);
 940   1      #endif
 941   1      }
 942          
 943          void SetADC_Offset(void)
 944          {
 945   1      	unsigned char   ucRed, ucGreen, ucBlue;
 946   1      
 947   1          unsigned char   ucTemp  = 0;
 948   1          unsigned char   ucRate  = (unsigned long)RTD_XTAL * usADC_Clock / usStdHS / 1000; // Pixel clock in MH
             -z
 949   1      
 950   1          do
 951   1          {
 952   2              if (ucRate > ADC_Offset_FineTune[ucTemp][0])
 953   2              {
 954   3                  ucRed   = ADC_Offset_FineTune[ucTemp][1];
 955   3                  ucGreen = ADC_Offset_FineTune[ucTemp][2];
 956   3                  ucBlue  = ADC_Offset_FineTune[ucTemp][3];
 957   3                  break;
 958   3              }
 959   2      
 960   2              if (0 == ADC_Offset_FineTune[ucTemp][0])  break;
 961   2          }
 962   1          while (++ucTemp);
 963   1      
 964   1          SetColorGainOffset(GRNOFST_E4, stGUD2.AD_G_OFFSET, ucGreen);
 965   1      
 966   1      #if (SWAP_RED_BLUE)
                  SetColorGainOffset(REDOFST_E3, stGUD2.AD_B_OFFSET, ucBlue);
                  SetColorGainOffset(BLUOFST_E5, stGUD2.AD_R_OFFSET, ucRed);
              #else
 970   1          SetColorGainOffset(REDOFST_E3, stGUD2.AD_R_OFFSET, ucRed);
 971   1          SetColorGainOffset(BLUOFST_E5, stGUD2.AD_B_OFFSET, ucBlue);
 972   1      #endif
 973   1      }
 974          
 975          void SetADC_GainOffset(void)
 976          {
 977   1          if (0 == usADC_Clock || 0 == usStdHS)   return;
 978   1      
 979   1          SetADC_Gain();
C51 COMPILER V6.20c  LCD_FUNC                                                              04/15/2004 12:59:09 PAGE 17  

 980   1          SetADC_Offset();
 981   1      }
 982          
 983          #if (VIDEO_CHIP != VDC_NONE)
              void SetVDC_Color(void)
              {
                  if (SOURCE_YUV == (stGUD1.INPUT_SOURCE & 0x07))
                  {
                      Data[0] = 6;
                      Data[1] = ADDR_VIDEO;
                      Data[2] = VDC_BRIGHT_YUV_CTRL;
                      Data[3] = ((LP_VIDEO_MODE_USER_DATA)&stMUD)->VBRIGHT;
                      Data[4] = ((LP_VIDEO_MODE_USER_DATA)&stMUD)->VCONTRAST   ^ 0x80;
                      Data[5] = ((LP_VIDEO_MODE_USER_DATA)&stMUD)->VSATURATION ^ 0x80;
                      I2CWrite(Data);
                  }
                  else
                  {
                      Data[0] = 7;
                      Data[1] = ADDR_VIDEO;
                      Data[2] = VDC_BRIGHT_CTRL;
                      Data[3] = ((LP_VIDEO_MODE_USER_DATA)&stMUD)->VBRIGHT;
                      Data[4] = ((LP_VIDEO_MODE_USER_DATA)&stMUD)->VCONTRAST   ^ 0x80;
                      Data[5] = ((LP_VIDEO_MODE_USER_DATA)&stMUD)->VSATURATION ^ 0x80;
                      Data[6] = ((LP_VIDEO_MODE_USER_DATA)&stMUD)->VHUE        ^ 0x80;
                      I2CWrite(Data);
                  }
              }
              #endif
1009          
1010          #if (MCU_TYPE == MCU_STD8051)
1011          
1012          void Wait_For_Event(unsigned char event)
1013          {
1014   1          unsigned char   ucDelayCnt  = 80;   // 80ms timeout
1015   1          unsigned char   ucProtect   = 24;   // 24ms protect
1016   1      
1017   1          RTDSetByte(STATUS1_1F, 0x00);       // Clear status (status register will be cleared after write)
1018   1          
1019   1          bNotify_Timer1_Int  = 0;
1020   1          
1021   1          Data[0] = 0;
1022   1          Data[1] = 0;
1023   1          TR1     = 1;
1024   1          do
1025   1          {
1026   2              if (bNotify_Timer1_Int)
1027   2              {
1028   3                  bNotify_Timer1_Int  = 0;
1029   3      
1030   3                  if (Data[1] & (EVENT_IVS | EVENT_IEN_START))
1031   3                  {
1032   4                      Data[1]     = 0;
1033   4                      ucProtect   = 24;
1034   4                  }
1035   3                  else if (ucProtect)
1036   3                  {
1037   4                      ucProtect   = ucProtect - 1;
1038   4                  }
1039   3      
1040   3                  if (--ucDelayCnt)   TR1 = 1;
1041   3              }
C51 COMPILER V6.20c  LCD_FUNC                                                              04/15/2004 12:59:09 PAGE 18  

1042   2      
1043   2              RTDRead(STATUS1_1F, 1, N_INC);  // Read Status1 
1044   2            
1045   2              Data[1] |= (Data[0] & (EVENT_IVS | EVENT_IEN_START));
1046   2              Data[0] &= event;
1047   2          }
1048   1          while (0 == Data[0] && 0 != ucDelayCnt);
1049   1      }
1050          
1051          
1052          #else
              
              void Wait_For_Event(unsigned char event)
              {
                  unsigned char   ucDelayCnt  = 80;   // 80ms timeout
                  unsigned char   ucProtect   = 24;   // 24ms protect
              
              	RTDSetByte(STATUS1_1F,0x00);          // Clear status (status register will be cleared after write)
                  
                  bNotify_Timer1_Int  = 0;
                  
                  Data[0] = 0;
                  Data[1] = 0;
                  do
                  {
                      if (bNotify_Timer1_Int)
                      {
                          bNotify_Timer1_Int  = 0;
              
                          if (Data[1] & (EVENT_IVS | EVENT_IEN_START))
                          {
                              Data[1]     = 0;
                              ucProtect   = 24;
                          }
                          else if (ucProtect)
                          {
                              ucProtect   = ucProtect - 1;
                          }
              
                          ucDelayCnt  -= 1;
                      }
              
                      RTDRead(STATUS1_1F, 1, N_INC);  // Read Status1 
                    
                      Data[1] |= (Data[0] & (EVENT_IVS | EVENT_IEN_START));
                      Data[0] &= event;
                  }
                  while (0 == Data[0] && 0 != ucDelayCnt);
              }
              
              #endif
1093          
1094          void Set_Background_Color(unsigned char Red, unsigned char Green, unsigned char Blue)
1095          {
1096   1          RTDSetBit(OVL_CTRL_6D,0x3f, 0x00); //Red
1097   1          RTDSetByte(BGCOLOR_CONTROL_6C, Red);
1098   1      
1099   1          RTDSetBit(OVL_CTRL_6D,0x3f, 0x40); //Green
1100   1          RTDSetByte(BGCOLOR_CONTROL_6C, Green);
1101   1      
1102   1          RTDSetBit(OVL_CTRL_6D,0x3f, 0x80); //Blue
1103   1          RTDSetByte(BGCOLOR_CONTROL_6C, Blue);
C51 COMPILER V6.20c  LCD_FUNC                                                              04/15/2004 12:59:09 PAGE 19  

1104   1      }
1105          
1106          ///////////////////////////////////////////////////////////////////////////////////////////////
1107          
1108          void Save_GUD0(void)
1109          {
1110   1          Data[0]     = 11;
1111   1          Data[1]     = ADDR_EROM1;
1112   1          Data[2]     = 0xE0;
1113   1          Data[3]     = stGUD0.CONTRAST;
1114   1          Data[4]     = stGUD0.BRIGHT;
1115   1          Data[5]     = stGUD0.RTD_R_CONTRAST;
1116   1          Data[6]     = stGUD0.RTD_G_CONTRAST;
1117   1          Data[7]     = stGUD0.RTD_B_CONTRAST;
1118   1          Data[8]     = stGUD0.RTD_R_BRIGHT;
1119   1          Data[9]     = stGUD0.RTD_G_BRIGHT;
1120   1          Data[10]    = stGUD0.RTD_B_BRIGHT;
1121   1          I2CWrite(Data);
1122   1      
1123   1          Delay_Xms(SET_2404_DELAY);
1124   1      }
1125          
1126          void Load_GUD0(void)
1127          {
1128   1          I2CRead(ADDR_EROM1, 0xE0 , 8);
1129   1      
1130   1          stGUD0.CONTRAST         = Data[0];
1131   1          stGUD0.BRIGHT           = Data[1];
1132   1          stGUD0.RTD_R_CONTRAST   = Data[2];
1133   1          stGUD0.RTD_G_CONTRAST   = Data[3];
1134   1          stGUD0.RTD_B_CONTRAST   = Data[4];
1135   1          stGUD0.RTD_R_BRIGHT     = Data[5];
1136   1          stGUD0.RTD_G_BRIGHT     = Data[6];
1137   1          stGUD0.RTD_B_BRIGHT     = Data[7];
1138   1      }
1139          
1140          void Save_GUD1(void)
1141          {
1142   1          Data[0]     = 9;
1143   1          Data[1]     = ADDR_EROM1;
1144   1          Data[2]     = 0xE8;
1145   1          Data[3]     = stGUD1.FUNCTION;
1146   1          Data[4]     = stGUD1.INPUT_SOURCE;
1147   1          Data[5]     = stGUD1.FILTER;
1148   1          Data[6]     = stGUD1.OSD_POSH;
1149   1          Data[7]     = stGUD1.OSD_POSV;
1150   1          Data[8]     = stGUD1.OSD_TIMEOUT;
1151   1          I2CWrite(Data);
1152   1      
1153   1          Delay_Xms(SET_2404_DELAY);
1154   1      }
1155          
1156          void Load_GUD1(void)
1157          {
1158   1          I2CRead(ADDR_EROM1, 0xE8 , 6);
1159   1          
1160   1          stGUD1.FUNCTION         = Data[0];
1161   1          stGUD1.INPUT_SOURCE     = Data[1];
1162   1          stGUD1.FILTER           = Data[2];
1163   1          stGUD1.OSD_POSH         = Data[3];
1164   1          stGUD1.OSD_POSV         = Data[4];
1165   1          stGUD1.OSD_TIMEOUT      = Data[5];
C51 COMPILER V6.20c  LCD_FUNC                                                              04/15/2004 12:59:09 PAGE 20  

1166   1      
1167   1      }
1168          
1169          void Save_GUD2(void)
1170          {
1171   1          Data[0]     = 9;
1172   1          Data[1]     = ADDR_EROM1;
1173   1          Data[2]     = 0xF0;
1174   1          Data[3]     = stGUD2.AD_R_GAIN;
1175   1          Data[4]     = stGUD2.AD_G_GAIN;
1176   1          Data[5]     = stGUD2.AD_B_GAIN;
1177   1          Data[6]     = stGUD2.AD_R_OFFSET;
1178   1          Data[7]     = stGUD2.AD_G_OFFSET;
1179   1          Data[8]     = stGUD2.AD_B_OFFSET;
1180   1      
1181   1          I2CWrite(Data);
1182   1          Delay_Xms(SET_2404_DELAY);
1183   1      }
1184          
1185          void Load_GUD2(void)
1186          {
1187   1          I2CRead(ADDR_EROM1, 0xF0 , 6);
1188   1          
1189   1          stGUD2.AD_R_GAIN    = Data[0];
1190   1          stGUD2.AD_G_GAIN    = Data[1];
1191   1          stGUD2.AD_B_GAIN    = Data[2];
1192   1          stGUD2.AD_R_OFFSET  = Data[3];
1193   1          stGUD2.AD_G_OFFSET  = Data[4];
1194   1          stGUD2.AD_B_OFFSET  = Data[5];
1195   1      }
1196          
1197          void Save_GUD3(void)
1198          {
1199   1          Data[0]     = 7;
1200   1          Data[1]     = ADDR_EROM1;
1201   1          Data[2]     = 0xF8;
1202   1          Data[3]     = stGUD3.VOLUME;
1203   1          Data[4]     = stGUD3.CURR_CHANNEL;

⌨️ 快捷键说明

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