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

📄 lcd_func.lst

📁 Realtek 公司的RTD2523A芯片原厂source code,没有被修改过的。
💻 LST
📖 第 1 页 / 共 5 页
字号:
1204   1          Data[5]     = stGUD3.PREV_CHANNEL;
1205   1          Data[6]     = stGUD3.TV_SETTING;
1206   1      
1207   1          I2CWrite(Data);
1208   1          Delay_Xms(SET_2404_DELAY);
1209   1      }
1210          
1211          void Load_GUD3(void)
1212          {
1213   1          I2CRead(ADDR_EROM1, 0xF8 , 4);
1214   1          
1215   1          stGUD3.VOLUME       = Data[0];
1216   1          stGUD3.CURR_CHANNEL = Data[1];
1217   1          stGUD3.PREV_CHANNEL = Data[2];
1218   1          stGUD3.TV_SETTING   = Data[3];
1219   1      }
1220          
1221          /*
1222          // Not used in standard code
1223          void Save_GUD4(void)
1224          {
1225              Data[0]     = 12;
1226              Data[1]     = ADDR_EROM1;
1227              Data[2]     = 0xD0;
C51 COMPILER V6.20c  LCD_FUNC                                                              04/15/2004 12:59:09 PAGE 21  

1228              Data[3]     = stGUD4.C1_R;
1229              Data[4]     = stGUD4.C1_G;
1230              Data[5]     = stGUD4.C1_B;
1231              Data[6]     = stGUD4.C2_R;
1232              Data[7]     = stGUD4.C2_G;
1233              Data[8]     = stGUD4.C2_B;
1234              Data[9]     = stGUD4.C3_R;
1235              Data[10]    = stGUD4.C3_G;
1236          	Data[11]    = stGUD4.C3_B;
1237              I2CWrite(Data);
1238          
1239              Delay_Xms(SET_2404_DELAY);
1240          }
1241          */
1242          
1243          void Load_GUD4(void)
1244          {
1245   1          I2CRead(ADDR_EROM1, 0xD0 , 9);
1246   1      
1247   1          stGUD4.C1_R   = Data[0];
1248   1          stGUD4.C1_G   = Data[1];
1249   1          stGUD4.C1_B   = Data[2];
1250   1          stGUD4.C2_R   = Data[3];
1251   1          stGUD4.C2_G   = Data[4];
1252   1          stGUD4.C2_B   = Data[5];
1253   1          stGUD4.C3_R   = Data[6];
1254   1          stGUD4.C3_G   = Data[7];
1255   1      	stGUD4.C3_B   = Data[8];
1256   1      }
1257          
1258          
1259          void Save_MUD(unsigned char mode_num)
1260          {
1261   1          if (0 == mode_num || 64 < mode_num)  return;
1262   1          
1263   1          Data[0] = 7;
1264   1          Data[1] = ADDR_EROM0;
1265   1          Data[2] = (mode_num - 1) << 2;	        
1266   1          Data[3] = stMUD.H_POSITION;
1267   1          Data[4] = stMUD.V_POSITION;
1268   1          Data[5] = stMUD.CLOCK;
1269   1          Data[6] = (stMUD.PHASE & 0x7c);// | (stMUD.P_Code - 0x19);
1270   1          I2CWrite(Data);
1271   1          
1272   1          Delay_Xms(SET_2404_DELAY);
1273   1      }
1274          
1275          void Load_MUD(unsigned char mode_num)
1276          {
1277   1          if (0 == mode_num || 64 < mode_num)  return;
1278   1      
1279   1          I2CRead(ADDR_EROM0, (mode_num - 1) << 2, 4);
1280   1      
1281   1          stMUD.H_POSITION    = Data[0];
1282   1          stMUD.V_POSITION    = Data[1];
1283   1          stMUD.CLOCK         = Data[2];
1284   1          stMUD.PHASE         = Data[3] & 0x7c;
1285   1      //	stMUD.P_Code        = (Data[3] & 0x03) + 0x19;
1286   1      
1287   1      	
1288   1      }
1289          
C51 COMPILER V6.20c  LCD_FUNC                                                              04/15/2004 12:59:09 PAGE 22  

1290          void Init_GUD(void)     // GU <= Default
1291          {
1292   1          stGUD0.CONTRAST         = INIT_EEPROM0[3];
1293   1          stGUD0.BRIGHT           = INIT_EEPROM0[4];
1294   1          stGUD0.RTD_R_CONTRAST   = INIT_EEPROM0[5];
1295   1          stGUD0.RTD_G_CONTRAST   = INIT_EEPROM0[6];
1296   1          stGUD0.RTD_B_CONTRAST   = INIT_EEPROM0[7];
1297   1          stGUD0.RTD_R_BRIGHT     = INIT_EEPROM0[8];
1298   1          stGUD0.RTD_G_BRIGHT     = INIT_EEPROM0[9];
1299   1          stGUD0.RTD_B_BRIGHT     = INIT_EEPROM0[10];
1300   1      
1301   1          stGUD1.FUNCTION         = INIT_EEPROM0[11];
1302   1          stGUD1.INPUT_SOURCE     = INIT_EEPROM0[12];
1303   1          stGUD1.FILTER           = INIT_EEPROM0[13];
1304   1          stGUD1.OSD_POSH         = INIT_EEPROM0[14];
1305   1          stGUD1.OSD_POSV         = INIT_EEPROM0[15];
1306   1          stGUD1.OSD_TIMEOUT      = INIT_EEPROM0[16];
1307   1      
1308   1          stGUD2.AD_R_GAIN        = INIT_EEPROM1[3];
1309   1          stGUD2.AD_G_GAIN        = INIT_EEPROM1[4];
1310   1          stGUD2.AD_B_GAIN        = INIT_EEPROM1[5];
1311   1          stGUD2.AD_R_OFFSET      = INIT_EEPROM1[6];
1312   1          stGUD2.AD_G_OFFSET      = INIT_EEPROM1[7];
1313   1          stGUD2.AD_B_OFFSET      = INIT_EEPROM1[8];
1314   1      
1315   1          stGUD3.VOLUME           = INIT_EEPROM1[11];
1316   1          stGUD3.CURR_CHANNEL     = INIT_EEPROM1[12];
1317   1          stGUD3.PREV_CHANNEL     = INIT_EEPROM1[13];
1318   1          stGUD3.TV_SETTING       = INIT_EEPROM1[14];
1319   1      
1320   1      	stGUD4.C1_R             = INIT_EEPROM2[3];
1321   1      	stGUD4.C1_G             = INIT_EEPROM2[4];
1322   1      	stGUD4.C1_B             = INIT_EEPROM2[5];
1323   1      	stGUD4.C2_R             = INIT_EEPROM2[6];
1324   1      	stGUD4.C2_G             = INIT_EEPROM2[7];
1325   1      	stGUD4.C2_B             = INIT_EEPROM2[8];
1326   1      	stGUD4.C3_R             = INIT_EEPROM2[9];
1327   1      	stGUD4.C3_G             = INIT_EEPROM2[10];
1328   1      	stGUD4.C3_B             = INIT_EEPROM2[11];
1329   1      
1330   1      	
1331   1          I2CWrite(INIT_EEPROM0);
1332   1          Delay_Xms(SET_2404_DELAY);
1333   1      
1334   1          I2CWrite(INIT_EEPROM1);
1335   1          Delay_Xms(SET_2404_DELAY);
1336   1      
1337   1      	I2CWrite(INIT_EEPROM2);
1338   1          Delay_Xms(SET_2404_DELAY);	
1339   1      }
1340          
1341          void Init_MUD(void)
1342          {
1343   1          unsigned char   ucModeIdx;
1344   1      
1345   1          // Reset frame-Sync and TV channel settings
1346   1          Data[0]     = 11;
1347   1          Data[1]     = ADDR_EROM1;
1348   1          Data[2]     = 0;
1349   1          Data[3]     = 0x00;
1350   1          Data[4]     = 0x00;
1351   1          Data[5]     = 0x00;
C51 COMPILER V6.20c  LCD_FUNC                                                              04/15/2004 12:59:09 PAGE 23  

1352   1          Data[6]     = 0x00;
1353   1          Data[7]     = 0x00;
1354   1          Data[8]     = 0x00;
1355   1          Data[9]     = 0x00;
1356   1          Data[10]    = 0x00;
1357   1          
1358   1          ucModeIdx   = 0;
1359   1          do
1360   1          {
1361   2              Data[2]     = ucModeIdx << 3;
1362   2              ucModeIdx   = ucModeIdx + 1;
1363   2      
1364   2              I2CWrite(Data);
1365   2              Delay_Xms(SET_2404_DELAY);
1366   2          }
1367   1          while (26 > ucModeIdx);
1368   1      
1369   1          // Reset display settings
1370   1          Data[0]     = 7;
1371   1          Data[1]     = ADDR_EROM0;
1372   1          Data[2]     = 0;
1373   1          Data[3]     = 0x80; // stMUD.H_POSITION;
1374   1          Data[4]     = 0x80; // stMUD.V_POSITION;
1375   1          Data[5]     = 0x80; // stMUD.CLOCK;
1376   1          Data[6]     = 0x01; // stMUD.PHASE;
1377   1      
1378   1          ucModeIdx   = 0;
1379   1          do
1380   1          {
1381   2              Data[2]     = ucModeIdx << 2;
1382   2              ucModeIdx   = ucModeIdx + 1;
1383   2      
1384   2              switch (ucModeIdx)
1385   2              {
1386   3              case MODE_YUV60HZ :
1387   3                  Data[3] = 0xbc;         // VBRIGHT
1388   3                  Data[4] = 0x65 ^ 0x80;  // VCONTRAST
1389   3                  Data[5] = 0x64 ^ 0x80;  // VSATURATION
1390   3                  Data[6] = 0x00 ^ 0x80;  // VHUE
1391   3                  break;
1392   3              case MODE_YUV50HZ :
1393   3                  Data[3] = 0xb1;         // VBRIGHT
1394   3                  Data[4] = 0x5f ^ 0x80;  // VCONTRAST
1395   3                  Data[5] = 0x65 ^ 0x80;  // VSATURATION
1396   3                  Data[6] = 0x00 ^ 0x80;  // VHUE
1397   3                  break;
1398   3      #if (VIDEO_CHIP == VDC_SAA7118)
                      case MODE_VIDEO60HZ :
                          Data[3] = 0x96;         // VBRIGHT
                          Data[4] = 0x48 ^ 0x80;  // VCONTRAST
                          Data[5] = 0x4a ^ 0x80;  // VSATURATION
                          Data[6] = 0xff ^ 0x80;  // VHUE
                          break;
                      case MODE_VIDEO50HZ :
                          Data[3] = 0x83;         // VBRIGHT
                          Data[4] = 0x48 ^ 0x80;  // VCONTRAST
                          Data[5] = 0x43 ^ 0x80;  // VSATURATION
                          Data[6] = 0x00 ^ 0x80;  // VHUE
                          break;
              #else
1412   3              case MODE_VIDEO60HZ :
1413   3                  Data[3] = 0x95;         // VBRIGHT
C51 COMPILER V6.20c  LCD_FUNC                                                              04/15/2004 12:59:09 PAGE 24  

1414   3                  Data[4] = 0x47 ^ 0x80;  // VCONTRAST
1415   3                  Data[5] = 0x48 ^ 0x80;  // VSATURATION
1416   3                  Data[6] = 0xff ^ 0x80;  // VHUE
1417   3                  break;
1418   3              case MODE_VIDEO50HZ :
1419   3                  Data[3] = 0x82;         // VBRIGHT
1420   3                  Data[4] = 0x47 ^ 0x80;  // VCONTRAST
1421   3                  Data[5] = 0x42 ^ 0x80;  // VSATURATION
1422   3                  Data[6] = 0x00 ^ 0x80;  // VHUE
1423   3                  break;
1424   3      #endif
1425   3              }
1426   2              
1427   2              I2CWrite(Data);
1428   2              Delay_Xms(SET_2404_DELAY);
1429   2          }
1430   1          while (64 > ucModeIdx);
1431   1      }
1432          
1433          void Check_EEPROM(void)
1434          {
1435   1          I2CRead(ADDR_EROM1, 0xFE , 2);
1436   1          
1437   1          if ((INIT_EEPROM1[17] != Data[0]) || (INIT_EEPROM1[18] != Data[1]))
1438   1          {
1439   2              Delay_Xms(SET_2404_DELAY);
1440   2      
1441   2              Init_GUD();
1442   2              Init_MUD();
1443   2          }
1444   1          else
1445   1          {
1446   2              Load_GUD0();            // Read Global User Data 0 from EEPROM 2404
1447   2              Load_GUD1();            // Read Global User Data 1 from EEPROM 2404
1448   2              Load_GUD2();            // Read Global User Data 2 from EEPROM 2404
1449   2              Load_GUD3();            // Read Global User Data 3 from EEPROM 2404
1450   2      		Load_GUD4();            // Read Global User Data 4 from EEPROM 2404
1451   2          }
1452   1      }
1453          
1454          
1455          #if (TV_CHIP != TV_NONE)
              
              void Set_TV_Channel()
              {
                  if (0 == stGUD3.CURR_CHANNEL)
                  {
                      stGUD3.CURR_CHANNEL = 1;
                  }
                  else if (MAX_CATV_NUM < stGUD3.CURR_CHANNEL)
                  {
                      stGUD3.CURR_CHANNEL = MAX_CATV_NUM;
                  }
                  else if (0 == (stGUD3.TV_SETTING & 0x01) && MAX_AIR_NUM < stGUD3.CURR_CHANNEL)
                  {
                      stGUD3.CURR_CHANNEL = MAX_AIR_NUM;
                  }
              
                  ((unsigned int *)Data)[1]   = (stGUD3.TV_SETTING & 0x01) ? CATV_Freq[stGUD3.CURR_CHANNEL - 1] : AIR_Fr
             -eq[stGUD3.CURR_CHANNEL - 1];
              
              #if (TV_CHIP == TV_FI1236)
C51 COMPILER V6.20c  LCD_FUNC                                                              04/15/2004 12:59:09 PAGE 25  

              
                  Data[0] = 6;
                  Data[1] = ADDR_TUNER;
                  Data[4] = 0xce;
                  Data[5] = (VHF_LOW_FREQ > (((unsigned int *)Data)[1] / 16)) ? 0xa0 : (VHF_HIGH_FREQ > (((unsigned int 
             -*)Data)[1] / 16)) ? 0x90 : 0x30;
              
                  I2CWrite(Data);
              
              #endif
              
              #if (TV_CHIP == TV_FQ1216)
              
                  Data[0] = 6;
                  Data[1] = ADDR_TUNER;
                  Data[4] = 0x8e;
                  Data[5] = (VHF_LOW_FREQ > (((unsigned int *)Data)[1] / 16)) ? 0xa1 : (VHF_HIGH_FREQ > (((unsigned int 
             -*)Data)[1] / 16)) ? 0x91 : 0x31;
              
                  I2CWrite(Data);  
              
              #endif
              }
              
              void Prev_Channel()
              {
                  if (0 == stGUD3.CURR_CHANNEL)   stGUD3.CURR_CHANNEL = 1;
              
                  stGUD3.PREV_CHANNEL = stGUD3.CURR_C

⌨️ 快捷键说明

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