www.pudn.com > osd_mtv.rar > osd_mtv.c


/************************************************************************************************* 
* FileName            : osd_mtv.c 
************************************************************************************************** 
* Project             : EVR-800Px Application Board 
* 
* Version             : 0_01 
* Creation date       : 02_22_2006 
* Status              : draft 
* 
* Programmer          : Vicky 
* Target              : t89C51ic2 
* Language            : C ANSI compliant 
* Enviroment          : KEIL Compiler, Assembler and Linker Package 
************************************************************************************************** 
* Description         : MTV-018 On-Screen-Display files 
************************************************************************************************** 
* Interface Functions :  
************************************************************************************************** 
* Change history: 
* Date            Changes                                                           Initials 
*************************************************************************************************/ 
#include  
#include  
#include  
#include  
 
#define SUCCESS   1 
#define FAILURE   0 
#define TRUE      1 
#define FALSE     0 
 
unsigned char idata   OsdLanguage; 
unsigned char data    *DataPointer; 
unsigned char idata   CurrentValue; 
unsigned char idata   OSDMinValue; 
unsigned char idata   OSDMaxValue; 
unsigned char idata   NextColumn; 
unsigned char idata   Column17; 
unsigned char idata   Column18; 
 
extern unsigned char idata   TrmBuf[34]; 
 
/*=====================================================> 
Function		:	I2C OSD command write to device (MTV01824N SADDR:0x7A) 
Description	:	Time out,and check acknowledge 
Return			:  
<=====================================================*/ 
void osd_format_a(char row,char col,char value) 
{ 
  TrmBuf[0] = row; 
  TrmBuf[1] = col; 
  TrmBuf[2] = value; 
  send_data(ADDR_OSD,3);  
} 
 
/*=====================================================> 
Function		:	I2C OSD frame control  
Description	:	Frame control register(ROW15,COL12-16) 
              vertd - Vertical display start position 
              hord  - Horizontal display start position 
 
Return			:  
<=====================================================*/ 
void osd_frame_ctrl(char vertd,char hord,char height,char width,char rowspace) 
{ 
  osd_format_a(DISP_ROW|15,12,vertd);  
  osd_format_a(DISP_ROW|15,13,hord);  
  osd_format_a(DISP_ROW|15,14,height);  
  osd_format_a(DISP_ROW|15,15,width);  
  osd_format_a(DISP_ROW|15,16,rowspace);  
} 
 
/* OSD location set  
void osd_location_set(char vertical,char horizontal) 
{ 
  osd_format_a(DISP_ROW|15,12,vertical);  
  osd_format_a(DISP_ROW|15,13,horizontal);  
} */ 
 
/* OSD ram clear */ 
void osd_ram_clear(void) 
{ 
  osd_format_a(ATTR_ROW|15,17,Column17 | 0x06); 
  delay_1ms(2); 
  osd_format_a(ATTR_ROW|15,17,Column17 & 0xF9); 
} 
 
/* OSD Enable=1/Desable=0 */ 
void osd_enable(bit sw) 
{ 
  if(sw) 
    osd_format_a(ATTR_ROW|15,17,Column17 | 0x81);//OSDE=1,FBKGC=1 
  else 
    osd_format_a(ATTR_ROW|15,17,Column17 & 0x7E); 
} 
 
/* OSD occur in splash display to result  
void osd_open_up(void) 
{ 
  osd_format_a(DISP_ROW|15,17,Column17 | 0x10);// OSDEN=1, TRIC=1 
}  */ 
 
void osd_normal(void) 
{ 
  osd_format_a(DISP_ROW|15,17,Column17 & 0xEF);// OSDEN=1, TRIC=0 
} 
 
/* OSD Define FBKGC/FBKGP*/ 
void osd_fbkg_cnt(bit sw) 
{ 
  if(sw) 
    osd_format_a(ATTR_ROW|15,17,Column17 | 0x01);//FBKGC=1 
  else 
    osd_format_a(ATTR_ROW|15,17,Column17 & 0xFE); 
} 
/* OSD window switch */ 
void osd_fbkg_plt(bit sw) 
{ 
  if(sw) 
    osd_format_a(ATTR_ROW|15,18,Column18 | 0x40);//FBKGP=1 
  else 
    osd_format_a(ATTR_ROW|15,18,Column18 & 0xBF); 
}   
 
/* OSD print icon */ 
void osd_print_icon(char row,char col,char color,char icon) 
{ 
  osd_format_a(ATTR_ROW|row,col,color); 
  osd_format_a(DISP_ROW|row,col,icon); 
} 
 
/* OSD reset font to normal */  
void osd_reset_font(void) 
{ 
  unsigned char i,j; 
 
  //all character SPACE,BLACK 
  for(i=0;i<15;i++) 
    for(j=0;j<30;j++) 
      osd_print_icon(i,j,_SPACE,BLACK); 
 
  //every char CHS,CWS=0 
  for(i=0;i<15;i++) 
    osd_format_a(DISP_ROW|i,30,0); 
} 
 
/* OSD Clear ROW  
void osd_clear_row(char start,char end,char color) 
{ 
  unsigned char i,j; 
 
  for(i=start;i<=end;i++) 
  { 
    TrmBuf[0] = i | ATTR_ROW; 
    TrmBuf[1] = 0 | ATTR_COL; 
    for(j=0;j<30;j++) 
      TrmBuf[j+2] = color; 
    send_data(32); 
 
    TrmBuf[0] = i | DISP_ROW; 
    TrmBuf[1] = 0 | DISP_COL; 
    for(j=0;j<30;j++) 
      TrmBuf[j+2] = _SPACE; 
    send_data(32); 
  } 
} */ 
 
/* OSD Desable window 1-4  
void osd_desable_window(char window) 
{ 
  osd_format_a(DISP_ROW|15,1+(window-1)*3,0); 
} */ 
 
/* OSD Enable window 1-4  
    // win : window 1-4   ,  rs : row start  ,  re : row end 
    // cs  : column start ,  ce : column end ,  at : back display attribute(BLACK...) 
void osd_enable_window(char win,char rs,char re,char cs,char ce,char at) 
{ 
  unsigned char temp; 
 
  temp=rs; 
  temp<<=4; 
  temp|=re; 
  osd_format_a(DISP_ROW|15,0+(win-1)*3,temp); 
 
  temp=cs; 
  temp<<=3; 
  temp|=0x04; //desable shadow,enable window display 
  osd_format_a(DISP_ROW|15,1+(win-1)*3,temp); 
 
  temp=ce; 
  temp<<=3; 
  temp|=at; 
  osd_format_a(DISP_ROW|15,2+(win-1)*3,temp); 
} */ 
 
/* OSD display value(Byte)00-0x1F */ 
void osd_disply_value(char row,char col,char color,char value) 
{ 
  unsigned char tmp1,tmp2,i; 
 
  TrmBuf[0] = ATTR_ROW | row; 
  TrmBuf[1] = ATTR_COL | col; 
  for(i=0;i<2;i++) 
    TrmBuf[i+2] = color; 
  send_data(ADDR_OSD,4);//4 byte data 
 
  TrmBuf[0] = DISP_ROW | row; 
  TrmBuf[1] = DISP_COL | col; 
 
  tmp1 = value % 10; 
  tmp2 = value / 10; 
             
    TrmBuf[2] = tmp2 + 0x30; 
    TrmBuf[3] = tmp1 + 0x30; 
 
  send_data(ADDR_OSD,4);//4 byte data 
}  
  
/* OSD display string */    
void osd_display_string(char row,char col,char color,char *string) 
{ 
  unsigned char *temp; 
  unsigned char i; 
 
  temp = string; 
  TrmBuf[0] = ATTR_ROW | row; 
  TrmBuf[1] = ATTR_COL | col; 
  i = 2; 
  while(*string) 
  { 
    TrmBuf[i++] = color; 
    string++; 
  } 
  send_data(ADDR_OSD,i); 
 
  string = temp; 
  TrmBuf[0] = DISP_ROW | row; 
  TrmBuf[1] = DISP_COL | col; 
  i = 2; 
  while(*string) 
  { 
    TrmBuf[i++] = *string; 
    string++; 
  } 
  send_data(ADDR_OSD,i);//i byte data 
 
}