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 }