📄 osd.c
字号:
//*********************************************************************
// osd.c OSD 设置文件
// by hibernate 2005.9.29
// Copyright(c) ShenZhen Challenge Technology Co.,Ltd 2005
//remarks:本文件根据vxis原参考程序中"osd_vx1828"文件改写
//*********************************************************************
#include <intrins.h>
#include <stdio.h>
#include "vxis1828.h"
#include "config.h"
#include "IIC_RW.h"
//函数说明
void osdDisplay(char pos,char numfont,char *fontcode);
void osdSwitch(char osd_en);
void osd_pos(char block,char posx,char posy); // Set position of OSD Function
void osd_size(char block,char sizex,char sizey) ; // Set Size of OSD Function
//void osd_bigfont(bit);
void osd_clear(char pos); // Clear font of OSD Function
void clrScreen(); // Clear all fonts memory of OSD Function
void osd_madr(char block,char pos); // Set block initial address in OSD Function
void osd_BackColor_H(char block,char color); // 加亮背景颜色
void osd_BackColor_N(char block,char color); // 正常背景颜色
void osd_ForeColor_H(char block,char color); // 加亮前景颜色
void osd_ForeColor_N(char block,char color); // 正常前景颜色
void osd_pos_Highlight(char block,char xstart,char xend,char ystart,char yend); // Set Start and End point of Highlight Section of OSD Function
void osd_pos_Blink(char block,char xstart,char xend,char ystart,char yend); // Set Start and End point of Blink Section of OSD Function
void osd_alpha(char alpha); // Set OSD alpha-blending Function
void osd_blink(char blink); // Set OSD blinking rate Function
void adj_britclr(char kind,char value);
//********************************************
//函数:void osdDisplay()
//作用:osd显示
//参数: pos => 8 bits , The 0-7bits address of the starting point
// of the fontcodes.
// numfont => 8 bits , Number of fontcode
// fontcode => 8 bits , A pointer of the fonts array to show
//Motion: 1、Show the fonts to the arbitrary position on screen
//********************************************
void osdDisplay(char pos,char numfont,char *fontcode)
{
unsigned char i;
write1828(cw1,0x10);
for(i = 0;i<numfont;i++)
{
write1828(cw2,pos+i);
write1828(cw3,fontcode[i]);
}
}
//*************************************
//函数:void osdSwitch(char osd_en)
//作用: OSD的开关函数
//参数说明:osd_en => 8 bits , 低3位是有效,高5位要清0 其中: 0 => Disable; 1 => Enable
// 0 bit => OSD Bottom Block enable or not
// 1 bit => OSD Content Block enable or not
// 2 bit => OSD Title Block enable or not
//remarks:Setup the three block of osd enable or not
//**************************************
void osdSwitch(char osd_en)
{
char idata temp;
osd_en = osd_en & 0x07; // 低3位是有效,高5位要清0
temp = read1828(osd2);
temp = temp & 0xf8; // 保持高5位(清低3位)
temp = temp | osd_en;
write1828(osd2,temp);
}
//*************************************
//函数:void osd_pos(char block,char posx,char posy)
//作用: 设置OSD块的位置(size)
//参数说明: block => 8 bits , OSD块
// posx => 8 bits , X方向的位置
// posy => 8 bits , Y方向的位置
//remarks:
//**************************************
void osd_pos(char block,char posx,char posy)
{
switch(block)
{
case title: // Setup position of Title Block
write1828(osd9,posx);
write1828(osd10,posy);
break;
case content: // Setup position of Content Block
write1828(osd16,posx);
write1828(osd17,posy);
break;
case bottom: // Setup position of Bottom Block
write1828(osd30,posx);
write1828(osd31,posy);
break;
default: break;
}
}
//*************************************
//函数:void osd_size(char block,char sizex,char sizey)
//作用: 设置OSD块的大小(size)
//参数说明: block => 8 bits , OSD块
// sizex => 8 bits , X方向的大小, 低6位是有效
// Value range => for small font:01h-26h
// for large font:01h-13h
// sizey => 8 bits , Y方向的大小 ,低5位是有效
// (Just for Content Block)
// Value range => for small font:01h-15h
// for large font:01h-0ah
//remarks:
//**************************************
void osd_size(char block,char sizex,char sizey)
{
switch(block)
{
case title: // Setup x size of Title Block
write1828(osd4,sizex);
break;
case content: // Setup x and y size of Content Block
write1828(osd13,sizex);
write1828(osd14,sizey);
break;
case bottom: // Setup x size of Bottom Block
write1828(osd28,sizex);
break;
default:
break;
}
}
//*************************************
//函数:void osd_clear(char pos)
//作用: Clear font of OSD
//参数说明: pos => 8 bits , The 0-7bits address of the starting point
// of the fontcodes.
//remarks:Clear 16 fonts of OSD from the starting point
//**************************************
void osd_clear(char pos)
{
unsigned char i;
write1828(cw1,0x10);
for(i = 0;i<0x10;i++)
{
write1828(cw2,pos+i);
write1828(cw3,0xc0);
}
}
//*************************************
//函数:void osd_clrScreen()
//作用:Clear all fonts memory of OSD
//参数说明:
//remarks:
//**************************************
void clrScreen()
{
char idata i;
for (i=0;i <= 0x0f;i++)
osd_clear(i*0x10);
}
//*************************************
//函数:void osd_madr(char block,char pos)
//作用:设置OSD块的初始位置
//参数说明: block => 8 bits , osd块
// pos => 8 bits , osd块的初始位置
//remarks:title块的初始位置是默认的
//**************************************
void osd_madr(char block,char pos)
{
switch(block)
{
case content: // Setup position of Content Block
write1828(osd15,pos);
break;
case bottom: // Setup position of Bottom Block
write1828(osd29,pos);
break;
default:
break;
}
}
//*************************************
//函数:void osd_BackColor_H(char block,char color)
//作用:设置OSD加亮背景颜色
//参数说明: block => 8 bits , osd块
// color => 8 bits , 低4位是有效
//Function: OSD Displaying Color=(Video Color*OSD_ALPHA+OSD Color*(16-OSD_ALPHA))/16
//**************************************
void osd_BackColor_H(char block,char color)
{
char idata addr,temp;
switch(block)
{
case title: // Setup position of Title Block
addr = osd12;
break;
case content: // Setup position of Content Block
addr = osd27;
break;
case bottom: // Setup position of Bottom Block
addr = osd37;
break;
default:
break;
}
temp = read1828(addr); // Read back the register
temp = temp & 0x0f; // 低4位是有效
color = color & 0x0f; // 低4位是有效
color <<= 4; // Shift color left 4 bits
temp = temp | color; // set higher 4 bits of color to higher 4 bits of temp
write1828(addr,temp);
}
//**********************************
//函数:void osd_BackColor_N(char block,char color);
//作用:设置OSD正常背景颜色
//参数说明: block => 8 bits , osd块
// color => 8 bits , 低4位是有效
//Function: OSD Displaying Color=(Video Color*OSD_ALPHA+OSD Color*(16-OSD_ALPHA))/16
//**************************************
void osd_BackColor_N(char block,char color)
{
char idata addr;
char idata temp;
switch(block)
{
case title: // Setup position of Title Block
addr = osd11;
break;
case content: // Setup position of Content Block
addr = osd26;
break;
case bottom: // Setup position of Bottom Block
addr = osd36;
break;
default:
break;
}
temp = read1828(addr); // Read back the register
temp = temp & 0x0f; // 低4位是有效
color = color & 0x0f; // 低4位是有效
color <<= 4; // Shift color left 4 bits
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -