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

📄 v46x_panel.lst

📁 mtv512mg + mx88v462 液晶电视驱动C完整程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   V46X_PANEL                                                            12/14/2006 10:36:49 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE V46X_PANEL
OBJECT MODULE PLACED IN .\V46X_PANEL.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\Source\V46X_PANEL.C LARGE DEBUG OBJECTEXTEND PRINT(.\V46X_PANEL.lst) OBJ
                    -ECT(.\V46X_PANEL.obj)

line level    source

   1          #include "..\inc\V46X_PANEL.h"
   2          #include "..\inc\V46X_RegDef.h"
   3          #include "..\inc\Gamma_Tab.h"
   4          
   5          extern  void                    I2C_Write(unsigned char,unsigned char,unsigned char,unsigned char *);
   6          extern  void                    I2C_Read(unsigned char,unsigned char,unsigned char,unsigned char *);
   7          extern  void                    I2C_WriteByte(unsigned char,unsigned char,unsigned char);
   8          extern  unsigned char   I2C_ReadByte(unsigned char,unsigned char);
   9                  
  10          extern  unsigned char   CVD1_ReadWrite(unsigned char, unsigned char, unsigned char);
  11          
  12          void    V46X_Set_ScanLines(unsigned char);
  13          
  14          
  15          bit             V46X_If_CorrectCS();
  16          
  17          
  18          #define V46X_WRID               0x28
  19          #define W_TYPE                  0x01            //Type for Write in CVD1 
  20          #define R_TYPE                  0x00
  21          
  22          extern  unsigned char ColorEN;
  23          
  24          //unsigned char _Color = NTSC, _Source = VIDEO1, _Screen = 0, _HPosition = 0x20, _VPosition = 0;
  25          unsigned char   _Scan = S525, _Color = NTSC, _Source = VIDEO1, _Screen = 0, _HPosition = 0x20, _VPosition = 
             -0;
  26          
  27          code unsigned char      _VStatus[8] =
  28          {
  29                  0x00, // NTSC 
  30                  0x05, // PAL
  31                  0x06, // SECAM
  32                  0x01, // PAL M
  33                  0x05, // PAL N
  34                  0x01, // PAL 60
  35                  0x00, // NTSC 433
  36                  0x04, // NTSC N
  37          };
  38          
  39          void _Delay(unsigned int value)
  40          {
  41   1              while(value>0) 
  42   1                      value--;
  43   1      }
  44          
  45          void    V46X_RegInit()
  46          {
  47   1      
  48   1      //      I2C_WriteByte(V46X_WRID, 0xAD, 0x07);                           //Enable TV-Decoder source detect interrupt
  49   1      
  50   1              I2C_Write(V46X_WRID, 0x00, 0x87, TCON_Ctrl);            //V462 Reg. from 0x00~ 0x86
  51   1              I2C_WriteByte(V46X_WRID, 0xA7, TCON_Ctrl[0x87]);        //RGBDAC output voltage
  52   1              
  53   1      //      I2C_WriteByte(V46X_WRID, 0x90, 0x04);                           //Dither ON     (Digital Panel) *
C51 COMPILER V7.50   V46X_PANEL                                                            12/14/2006 10:36:49 PAGE 2   

  54   1      //      I2C_WriteByte(V46X_WRID, 0x92, 0x20);                           //                      (Digital Panel) *
  55   1      
  56   1              V46X_Gamma_Init();      
  57   1      }
  58          
  59          void    V46X_Gamma_Init()
  60          {
  61   1              unsigned char i;
  62   1              
  63   1              I2C_WriteByte(V46X_WRID, 0x0C, 0xF6);
  64   1              for (i=0;;i++)
  65   1              {
  66   2                      I2C_WriteByte(V46X_WRID, 0x15, Gamma_Table2[i]);
  67   2                      I2C_WriteByte(V46X_WRID, 0x15, Gamma_Table2[i]);
  68   2                      I2C_WriteByte(V46X_WRID, 0x15, Gamma_Table2[i]);
  69   2                      if ( i == 0xFF )
  70   2                              break;
  71   2              }
  72   1              I2C_WriteByte(V46X_WRID, 0x0C, 0xFA);
  73   1      }
  74          
  75          void    V46X_HV(bit horizontal, bit vertical)
  76          {
  77   1              unsigned char   hv;
  78   1              
  79   1              hv = TCON_Ctrl[0x60];
  80   1      
  81   1              if ( horizontal )
  82   1                      hv ^= 0x18;
  83   1              if ( vertical )
  84   1                      hv ^= 0x60;
  85   1      
  86   1              I2C_WriteByte(V46X_WRID, 0x60, hv);
  87   1      }
  88          
  89          bit             V46X_If_Signal_In()
  90          {
  91   1              unsigned char r3A;
  92   1              
  93   1              r3A = CVD1_ReadWrite(R_TYPE, 0x3A, 0x00) & 0x1;
  94   1              
  95   1              if ( r3A == 0x0 )
  96   1                      return  1;
  97   1              else
  98   1                      return  0;      
  99   1      }
 100          
 101          
 102          void    V46X_VideoSource(unsigned char video_source)
 103          {
 104   1              _Source = video_source;
 105   1              
 106   1              if ( _Source <= SVIDEO2 )
 107   1              {
 108   2                      V46X_Change_Mode(_Source, _Color, _Screen);
 109   2                      return;
 110   2              }
 111   1      }
 112          
 113          
 114          void    V46X_Set_ScreenMode(unsigned char screen_mode)
 115          {
C51 COMPILER V7.50   V46X_PANEL                                                            12/14/2006 10:36:49 PAGE 3   

 116   1              _Screen = screen_mode;
 117   1      }
 118          
 119          void    V46X_ScreenMode(unsigned char screen_mode)
 120          {
 121   1              _Screen = screen_mode;
 122   1      //      _Screen = 0;
 123   1      
 124   1              I2C_WriteByte(V46X_WRID, 0x1A, 0x80);                           // Turn OFF Screen;
 125   1              
 126   1              I2C_Write(V46X_WRID, 0x08, 0x03, &TCON_Scaler[_Screen][_Scan][0]);
 127   1              I2C_Write(V46X_WRID, 0x38, 0x28, &TCON_Scaler[_Screen][_Scan][3]);
 128   1              
 129   1              _Delay(20000);
 130   1      //      I2C_WriteByte(V46X_WRID, 0x1A, 0x40);                           // Turn ON Screen;
 131   1      }
 132          
 133          unsigned char V46X_Get_ColorSystem()
 134          {
 135   1              return  _Color;
 136   1      }
 137          
 138          void    V46X_ColorSystem(unsigned char color_system)
 139          {
 140   1              unsigned char   i,R00;
 141   1      
 142   1              _Color = color_system;
 143   1              
 144   1              if ( _Source == SVIDEO1 || _Source == SVIDEO2)
 145   1                      R00 = VideoSTD_Data[_Color][0] | 0x1;
 146   1              else
 147   1                      R00 = VideoSTD_Data[_Color][0];
 148   1      
 149   1              if ( _Scan == S625 )
 150   1                      R00 = R00 | 0x30;
 151   1              else
 152   1                      R00 = R00 & 0xCF;
 153   1      
 154   1              CVD1_ReadWrite(W_TYPE, 0x00, R00);
 155   1      
 156   1              for (i=1; i<19; i++)
 157   1                      CVD1_ReadWrite(W_TYPE, VideoSTD_Addr[i], VideoSTD_Data[_Color][i]);
 158   1              _Delay(20000);
 159   1      }
 160          
 161          unsigned char   V46X_Detect_ColorSystem()
 162          {
 163   1              unsigned char r3A,r3C;
 164   1              
 165   1              r3C = CVD1_ReadWrite(R_TYPE, 0x3C, 0x00);
 166   1              r3A = CVD1_ReadWrite(R_TYPE, 0x3A, 0x00);
 167   1              if ( (r3C&0x8) || (r3A&0x1) )                                           // Noisy or NO Signal
 168   1                      return  _Color;
 169   1              if ( V46X_If_CorrectCS() )
 170   1                      return  _Color;
 171   1      
 172   1              _Delay(200);
 173   1              r3C = CVD1_ReadWrite(R_TYPE, 0x3C, 0x00);
 174   1              r3A = CVD1_ReadWrite(R_TYPE, 0x3A, 0x00);
 175   1              if ( (r3C&0x8) || (r3A&0x1) )                                           // Noisy or NO Signal
 176   1                      return  _Color;
 177   1              if ( V46X_If_CorrectCS() )
C51 COMPILER V7.50   V46X_PANEL                                                            12/14/2006 10:36:49 PAGE 4   

 178   1                      return  _Color;
 179   1                      
 180   1              _Delay(200);
 181   1              r3C = CVD1_ReadWrite(R_TYPE, 0x3C, 0x00);
 182   1              r3A = CVD1_ReadWrite(R_TYPE, 0x3A, 0x00);
 183   1              if ( (r3C&0x8) || (r3A&0x1) )                                           // Noisy or NO Signal
 184   1                      return  _Color;
 185   1              if ( V46X_If_CorrectCS() )
 186   1                      return  _Color;         
 187   1      
 188   1              I2C_WriteByte(V46X_WRID, 0x1A, 0x80);                           // Turn OFF Screen;
 189   1      
 190   1              _Delay(50000);
 191   1              _Delay(30000);
 192   1              
 193   1              r3A = CVD1_ReadWrite(R_TYPE, 0x3A, 0x00);
 194   1              r3C = CVD1_ReadWrite(R_TYPE, 0x3C, 0x00);
 195   1              
 196   1              if ( r3A&0x1 )                                                                          // No Signal
 197   1              {
 198   2      //              I2C_WriteByte(V46X_WRID, 0x1A, 0x40);                   // Turn ON Screen;
 199   2                      return  _Color;
 200   2              }
 201   1              
 202   1              if ( (r3C&0x4) )                                                                        // 625 Detected
 203   1              {
 204   2                      if ( ColorEN&0x2 )
 205   2                      {
 206   3                              V46X_ColorSystem(PAL);
 207   3                              if ( V46X_If_CorrectCS() )
 208   3                              {

⌨️ 快捷键说明

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