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

📄 osddrow.lst

📁 T112 MCU源程码,用于T112外接MCU篇程,用来驱动模拟屏
💻 LST
字号:
C51 COMPILER V7.06   OSDDROW                                                               03/01/2007 08:05:40 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE OSDDROW
OBJECT MODULE PLACED IN OSDDROW.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\OSDDROW.C BROWSE INCDIR(Z:\CB\T112项目\原始资料\AV总备份\1.8\include
                    -\) DEBUG OBJECTEXTEND PRINT(.\OSDDROW.lst) OBJECT(OSDDROW.obj)

stmt level    source

   1          #include <reg51.h>
   2          #include "common.h"
   3          #include "System.h"
   4          #include "Struct.h"
   5          #include "TwoWire.h"
   6          #include "TW10xReg.h"
   7          #include "panel.h"
   8          #include "timer0.h"
   9          #include "DEF.H"
  10          
  11          
  12          extern uCHAR VOL;
  13          extern uCHAR Pauto;
  14          extern uCHAR menu_num;
  15          extern bit OSD_open;
  16          extern bit AV;
  17          extern code unsigned char *page1_Fonts[];
  18          
  19          /*********************************************************************************************************
             -*******************
  20                                                                                                  color for OSDDROW
  21          **********************************************************************************************************
             -******************/
  22          
  23          code unsigned char cOSDMenuLutData[]={
  24          0x0f,0x00,  //1 blue
  25          0x00,0x00,  //2 black
  26          0x0f,0x0a,  //3 purple
  27          0x0f,0x00,  //4 blue
  28          0xf8,0x00,  //5 green
  29          0x22,0x0A,  //6 red
  30          0x1f,0x01,  //7 light blue//olive
  31          0x88,0x05,  //8 light grey
  32          0xb9,0x0b,  //9 purple
  33          0xBD,0x05,  //A purple
  34          0x0f,0x0f,  //B 
  35          0xA3,0x0A,      //C Yellow
  36          0xcc,0x0c,  //D light grey
  37          0x68,0x03,  //E Light Blue Main Menu Background or 0x79, 0x04 which is a litter light
  38          0xff,0x0f,  //F white
  39          0x00,0x00,  //0
  40          };
  41          
  42          code unsigned char DIG[]={0,'1','2','3','4','5','6','7','8','9','0'};//digital
  43          code unsigned char source1_font[]={'C','H','1'};
  44          code unsigned char source2_font[]={'C','H','2'};
  45          code unsigned char source3_font[]={'C','H','3'};
  46          code unsigned char source4_font[]={'C','H','4'};
  47          code unsigned char *source_font[]={source1_font,source2_font,source3_font,source4_font};
  48          
  49          /*****************************************************************************/
  50          
  51          void OSDLoadColor(void)
  52          {
C51 COMPILER V7.06   OSDDROW                                                               03/01/2007 08:05:40 PAGE 2   

  53   1              uCHAR i;
  54   1              I2CWriteByte(TW101,OSD_CFG_INDEX,OSD_LUT_RAM_DATA);
  55   1              for(i=0;i<32;i++)
  56   1              {
  57   2                      I2CWriteByte(TW101,OSD_CFG_DATA,cOSDMenuLutData[i]);
  58   2              }
  59   1      }
  60          
  61          void OSDSetRamAddr(uWORD address)                                       ///设置DATA_OSDRAM地址
  62          {
  63   1              I2CWriteByte(TW101,OSD_RAM_AH,(uCHAR)(address>>8));             ///0xa3
  64   1              I2CWriteByte(TW101,OSD_RAM_AL,(uCHAR)(address & 0xff));         ///0xa2
  65   1      }
  66          
  67          void OSDEnable(void)                                                                                                                    ///                     使能OSD功能
  68          {
  69   1              if(AV)
  70   1              {
  71   2                      OSDCfgWr(OSD_CTRL,0x8d);
  72   2                      AV=0;
  73   2              }
  74   1              else
  75   1                      OSDCfgWr(OSD_CTRL,0x84);
  76   1              Timer0Start();
  77   1      }
  78          
  79          void OSDDisable(void)
  80          {
  81   1              OSDCfgWr(OSD_CTRL,0x18);
  82   1      }
  83          
  84          void OSDCleanLine(uCHAR x,uCHAR y,uCHAR cColor,uCHAR cLength)                   ///x为列地址,y为行地址
  85          {
  86   1              if((x < 30) && ( y < OSD_LINE_NUM))                                                                     ///OSD_LINE_NUM         =       10;
  87   1              {
  88   2                      OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y << 5)+x);                  ///设置OSDRAM地址[ROW_ATTR_ADDR = ROW_ADDR + 
             -COLU_ADDR)
  89   2              twdWr_Burst_A(OSD_RAM_DL);                                                                      /// Write OSD index             //写T112的数据口 note by chen   06'12'1
  90   2              while((x < 30) && (x < cLength))
  91   2              {
  92   3                      twdWr_Burst_D(BLANK);                                                                           ///BLANK=0x3a/0x00;
  93   3                      twdWr_Burst_D(cColor);
  94   3                      x++;
  95   3              }
  96   2              twdWr_Burst_P();
  97   2              }
  98   1      }
  99          
 100          void send(uCHAR c,uCHAR cColor)
 101          {
 102   1              if(c>0x40)                      // Character
 103   1              twdWr_Burst_D(c-IndexCharacterOffset);
 104   1              else if(c>=0x30)        // number
 105   1                      twdWr_Burst_D(c-IndexNumOffset);  
 106   1              else                            
 107   1                      twdWr_Burst_D(c);
 108   1                              
 109   1              twdWr_Burst_D(cColor );
 110   1      }       
 111          
 112          void OSDShowLine(uCHAR *string,uCHAR x,uCHAR y,uCHAR cColor,uCHAR cLength)
 113          {
C51 COMPILER V7.06   OSDDROW                                                               03/01/2007 08:05:40 PAGE 3   

 114   1              uCHAR c;
 115   1              if((x < 30) && ( y < OSD_LINE_NUM))
 116   1              {
 117   2                      OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y << 5)+x);
 118   2                      twdWr_Burst_A(OSD_RAM_DL);      // Write OSD index
 119   2              while((*string) != 0xff && (x < cLength)){
 120   3                          c=*string++;
 121   3                              send(c,cColor);
 122   3                      x++;
 123   3                      }
 124   2              }
 125   1              twdWr_Burst_P();
 126   1      }
 127          
 128          void OSDShowDig(uCHAR x,uCHAR y,uCHAR cColor,uCHAR num)
 129          {
 130   1              uCHAR c,b,d;
 131   1              d       =DIG[num/100];
 132   1              num     =num%100;
 133   1              c       =DIG[num/10];
 134   1              b       =DIG[num%10];
 135   1              if(d!=0&&c==0)c=DIG[10];
 136   1              if(b==0)b=DIG[10];
 137   1              if((x < 30) && ( y < OSD_LINE_NUM))
 138   1              {
 139   2                      OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y << 5)+x);
 140   2                      twdWr_Burst_A(OSD_RAM_DL);      // Write OSD index
 141   2                      send(d,cColor);
 142   2                      send(c,cColor);
 143   2                      send(b,cColor);
 144   2              }
 145   1              twdWr_Burst_P();
 146   1      }
 147          
 148          void OSDSetLineAttribute(uCHAR cLine,uCHAR cAttribute)                  
 149          {
 150   1          OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)cLine << 5)+31); 
 151   1          twdWr_Burst_A(OSD_RAM_DL);          
 152   1          twdWr_Burst_D(0);                   
 153   1          twdWr_Burst_D(cAttribute);          
 154   1              twdWr_Burst_P();                
 155   1      }
 156          
 157          void OSDPosition(uCHAR cPos)                    
 158          {       
 159   1              if(cPos==RIGHT_TOP){
 160   2                      OSDCfgWr(CHAR_DLY_0,Y0RightTop);        
 161   2                      OSDCfgWr(CHAR_DLY_1,Y1RightTop);    
 162   2                      OSDCfgWr(CHAR_DLY_2,Y2RightTop);    
 163   2              }
 164   1              if(cPos==CENTER){
 165   2                      OSDCfgWr(CHAR_DLY_0,Y0Center);          
 166   2                      OSDCfgWr(CHAR_DLY_1,Y1Center);          
 167   2                      OSDCfgWr(CHAR_DLY_2,Y2Center);          
 168   2              }
 169   1              else if(cPos==LEFT_BOTTOM){
 170   2                      OSDCfgWr(CHAR_DLY_0,Y0LeftBottom);      
 171   2                      OSDCfgWr(CHAR_DLY_1,Y1LeftBottom);  
 172   2                      OSDCfgWr(CHAR_DLY_2,Y2LeftBottom);  
 173   2              }
 174   1      }
 175          
C51 COMPILER V7.06   OSDDROW                                                               03/01/2007 08:05:40 PAGE 4   

 176          void OSDShowSource(uCHAR P)                     ///显示选择源
 177          {
 178   1              uCHAR i;
 179   1              AV=1;
 180   1          OSDDisable();
 181   1              for(i=0;i<10;i++)
 182   1              {
 183   2                      OSDCleanLine(0,i,0,30);
 184   2              OSDSetLineAttribute(i,0x80);
 185   2              }
 186   1              OSDPosition(RIGHT_TOP); 
 187   1              OSDShowLine(source_font[P],1,0,0x0c,4);
 188   1              OSDEnable();
 189   1      }
 190          
 191          void OSDDrawGauge(uCHAR cVal, uCHAR cMax, uCHAR x, uCHAR y, uCHAR cColor)///进度条显示
 192          {
 193   1              int index,i;
 194   1              int step_size=100/25;
 195   1              OSDSetRamAddr(MENU_RAM_START_ADDRESS+((int)y<< 5)+x);   
 196   1              twdWr_Burst_A(OSD_RAM_DL);      
 197   1              index= (int)cVal*25/(int)cMax;
 198   1              twdWr_Burst_D(34);
 199   1              twdWr_Burst_D(cColor);
 200   1          for(i=0;i<index;i++)
 201   1          {
 202   2                      twdWr_Burst_D(2);
 203   2                      twdWr_Burst_D(cColor);
 204   2          }
 205   1              for(i=index;i<25;i++)
 206   1              {
 207   2                      twdWr_Burst_D(1);
 208   2                      twdWr_Burst_D(cColor);
 209   2              }
 210   1              twdWr_Burst_D(36);
 211   1              twdWr_Burst_D(cColor);
 212   1              
 213   1              twdWr_Burst_P();
 214   1      }
 215          
 216          void DRWA_VOL(uCHAR num,uCHAR max_num)                  ///进度条
 217          {
 218   1              OSDPosition(LEFT_BOTTOM);
 219   1              {
 220   2                      OSDShowLine(page1_Fonts[menu_num],0,0,0x06,10);         
 221   2                      OSDShowDig(23,0,0x06,num);
 222   2                      OSDDrawGauge(num,max_num, 0, 1, 0x06);
 223   2              }
 224   1              OSDEnable();
 225   1      }
 226          
 227          void OSDShowpage1(void)                                                                 
 228          {
 229   1              OSDShowLine(page1_Fonts[0],0,0,0x06,28);
 230   1              OSDShowLine(page1_Fonts[6],0,1,0x06,28);
 231   1              if(Pauto==0)
 232   1              {
 233   2                      OSDShowLine(page1_Fonts[8],18,1,0x06,28);
 234   2              }
 235   1              else
 236   1              {
 237   2                      OSDShowLine(page1_Fonts[7],18,1,0x06,28);
C51 COMPILER V7.06   OSDDROW                                                               03/01/2007 08:05:40 PAGE 5   

 238   2              }
 239   1      }
 240          void OSDExit(void)
 241          {
 242   1              uCHAR i;
 243   1              OSDCfgWr(OSD_CTRL,0x18);
 244   1              OSDCfgWr(0x10,0x00);                                            ///Disable window
 245   1              OSDDisable();
 246   1              for(i=0;i<10;i++)
 247   1              {
 248   2                      OSDCleanLine(0,i,0,30);
 249   2              OSDSetLineAttribute(i,0x80);
 250   2              }
 251   1      }
 252          
 253          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1013    ----
   CONSTANT SIZE    =     67    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      42
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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