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

📄 osddrow.lst

📁 车载显示屏
💻 LST
字号:
C51 COMPILER V6.12  OSDDROW                                                                09/20/2007 22:17:31 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE OSDDROW
OBJECT MODULE PLACED IN OSDDROW.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\source\OSDDROW.C BROWSE NOINTPROMOTE INCDIR(Z:\cb\T112项目\T112_AV1.8编写
                    -文件\1.8\include\;.\include\;.\source\) 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 V6.12  OSDDROW                                                                09/20/2007 22:17:31 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 V6.12  OSDDROW                                                                09/20/2007 22:17:31 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 V6.12  OSDDROW                                                                09/20/2007 22:17:31 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 V6.12  OSDDROW                                                                09/20/2007 22:17:31 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        =   1024    ----
   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 + -