📄 osd.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 + -