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

📄 osd.c

📁 LCDTV的source code,含周邊ic的driver code ,scaler ,
💻 C
字号:
/*******************************************************************************
  OSD.C
  Copyright (c) SmartASIC, Inc. All rights reserved.
*******************************************************************************/
#include <MTV230.H>
#include <DEFINE.H>
/*==============================================================================

==============================================================================*/
void OSD_Clear(void) {

  OSDCON[0]=0x02;
  OSDCON[0]=0x00;
  
  }


/*==============================================================================

==============================================================================*/
/*
void Set_Row(unsigned char row, bit rint, bit chs, bit cws) {

  OSDRA=row;
  OSDCA=30;
  OSDDT0=(unsigned char)rint*4+(unsigned char)chs*2+(unsigned char)cws*1;

  }
*/

/*==============================================================================

==============================================================================*/
void Window_Clear(void) {

  WINCTL[0][1]=0;
  WINCTL[1][1]=0;
  WINCTL[2][1]=0;
  WINCTL[3][1]=0;

  }


/*==============================================================================

==============================================================================*/
void Clear_Screen(void) {

  OSD_Clear();
  Window_Clear();

  }


/*==============================================================================

==============================================================================*/
void Window_Control(unsigned char sub_window, unsigned char row_start,
                    unsigned char row_end, unsigned char column_start,
                    unsigned char column_end, unsigned char attribute) {

  WINCTL[sub_window][0]=row_start*16+row_end;
  WINCTL[sub_window][1]=column_start*8+attribute/8+4;
  WINCTL[sub_window][2]=column_end*8+attribute%8;

  }


/*==============================================================================

==============================================================================*/
void OSD_Show(bit osden, bit bsen, bit shadow, bit fben, bit blend) {

  if(osden)
    DelayX10ms(15);

  OSDCON[0]=(unsigned char)osden*128+(unsigned char)bsen*64+
            (unsigned char)shadow*32+(unsigned char)fben*16+
            (unsigned char)blend*8;
  bosd_status=osden;

  if(!osden)
    DelayX10ms(15);

  }


/*==============================================================================

==============================================================================*/
void OSD_Position(unsigned char vertical_start, unsigned char horizontal_start) {

  VERTD=10+vertical_start;
  HORD=horizontal_start;

  }


/*==============================================================================
   
==============================================================================*/
void Print_Icon(unsigned char row, unsigned char column,
                unsigned int icon, unsigned char attribute) {
    
  if(icon<256) {
    //font//
    OSDRA=row;
    OSDCA=column;
    OSDDT0=icon;
    //attribute//
    OSDRA=row|0x40;
    OSDCA=column;
    OSDDT0=attribute;
    }
  else {
    //font//
    OSDRA=row;
    OSDCA=column;
    OSDDT1=icon%256;
    //attribute//
    OSDRA=row|0x40;
    OSDCA=column;
    OSDDT1=attribute;
    }

  }


/*==============================================================================
   
==============================================================================*/
void Print_String(unsigned char row, unsigned char column,
                  unsigned char *string, unsigned char attribute) {
  
  unsigned char i;
  
  //font//
  OSDRA=row;
  OSDCA=column;
  i=0;  
  while((*(string+i))!='\0') {
    if((*(string+i))==1) {
      i++;
      OSDDT1=*(string+i);
      }
    else {
      OSDDT0=*(string+i);
      }
    i++;
    }  
  //attribute//
  i=0;  
  OSDRA=row|0x40;
  OSDCA=column;
  while((*(string+i))!='\0') {
    if((*(string+i))==1) {
      i++;
      OSDDT1=attribute;
      }
    else {
      OSDDT0=attribute;
      }
    i++;
    }

  }
 

/*==============================================================================

==============================================================================*/
void Print_Char(unsigned char row, unsigned char column,
                unsigned char value, unsigned char attribute) {

  bit zero=0;

  if((value/100)==0) {
    Print_Icon(row, column++, ' ', attribute);
    zero=1;
    }
  else
    Print_Icon(row, column++, (value/100)+'0', attribute);

  value%=100;
  if(((value/10)==0)&&zero)
    Print_Icon(row, column++, ' ', attribute);
  else
    Print_Icon(row, column++, (value/10)+'0', attribute);

  value%=10;
  Print_Icon(row, column, value+'0', attribute);

  }


/*==============================================================================

==============================================================================*/
void Line_Attribute(unsigned char row, unsigned char col_start,
                    unsigned char col_end, unsigned char attribute) {

  unsigned char i;

  OSDRA=row|0x40;
  OSDCA=col_start;
  for(i=col_start; i<=col_end &&(i<30); i++)
    OSDDT0=attribute;

  }


/*==============================================================================

==============================================================================*/
/*
void Erase_Line(unsigned char row, unsigned char col_start, unsigned char col_end) {

  unsigned char i;

  OSDRA=row;
  OSDCA=col_start;

  for(i=col_start; i<=col_end &&(i<30); i++)
    OSDDT0=0;

  }
*/

/*==============================================================================

==============================================================================*/
void Paint_Bar(unsigned char row, unsigned char column,
               unsigned int min, unsigned int max,
               unsigned int value) {

  unsigned char i, j;

  value=((value-min)*BAR_LENGTH)/(max-min);
  i=value/5;

  OSDRA=row;
  OSDCA=column;
  
  for(j=0; j<i; j++)//paint the integer
    OSDDT1=0x06;

  if(value!=BAR_LENGTH)//paint the reminder
    OSDDT1=0x02+value%5;

  j++;
  if(j<(BAR_LENGTH/5))//paint back
    OSDDT1=0x02;

  }


/*==============================================================================

==============================================================================*/
unsigned char StringLength(char *StrPtr) {

  unsigned char length;
  unsigned char *tmpptr;

  length=0;
  tmpptr=StrPtr;

  while((*tmpptr)!=0) {
    if((*tmpptr)!=0x01)
      length++;
    tmpptr++;
    }

  return length;

  }

⌨️ 快捷键说明

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