📄 osd.c
字号:
void ShowValue(unsigned char Attr,unsigned char value)
{
unsigned char i,ch;
unsigned short m;
unsigned char buff[3];
//show value
sprintf(buff,"%3d",(unsigned short)value);
/* start bit */
/* transmit device */
INTIIC1_FLG = 0xff;
IIC1_DATA = Scaler_Addr;
IIC1_CLK = 0x20 | IIC_BaudRate;
IIC1_CON = 0x00;
/* transmit addr */
MasterSendByte(0xe0);
/* transmit data */
if(Attr == 0)
MasterSendByte(0x40);
else
MasterSendByte(0x90);
if(OSD_Type < 6)
m = 7 * OSD_WIDTH + 23;
else if(OSD_Type == 6)
m = 5;
ch = (unsigned char)m;
MasterSendByte(ch);
ch = (unsigned char)(m >> 8);
MasterSendByte(ch);
for(i=0; i<3; i++){
ch = buff[i];
MasterSendByte(ch);
}
if(OSD_Point2 == 17)
MasterSendByte(' ');
else
MasterSendByte('%');
/* transmit dumy data for stop bit */
WaitTx();
/* stop bit */
IIC1_CLK = 0xA0|IIC_BaudRate;
// IIC1_CON = 0x00;
WaitStop();
}
void ShowSliderBar(unsigned char xx,unsigned char yy,unsigned char value)
{
#define BarWidth 16
unsigned char i,k;
unsigned short m;
/* start bit */
/* transmit device */
INTIIC1_FLG = 0xff;
IIC1_DATA = Scaler_Addr;
IIC1_CLK = 0x20 | IIC_BaudRate;
IIC1_CON = 0x00;
/* transmit addr */
MasterSendByte(0xe0);
/* transmit data */
MasterSendByte(0x90);
m = (unsigned short)yy * OSD_WIDTH + xx;
i = (unsigned char)m;
MasterSendByte(i);
i = (unsigned char)(m >> 8);
MasterSendByte(i);
MasterSendByte('-');
MasterSendByte(0x73);
m = value * BarWidth;
k = m / 100;
for(i=0; i<k; i++){
MasterSendByte(0x78);
}
if(i < BarWidth){
k = (m % 100) / 20;
switch(k){
case 0:
MasterSendByte(0x74);
break;
case 1:
MasterSendByte(0x75);
break;
case 2:
MasterSendByte(0x76);
break;
case 3:
MasterSendByte(0x77);
break;
case 4:
MasterSendByte(0x78);
break;
}
i++;
for(i; i<BarWidth; i++){
MasterSendByte(0x74);
}
}
MasterSendByte(0x79);
MasterSendByte('+');
/* transmit dumy data for stop bit */
WaitTx();
/* stop bit */
IIC1_CLK = 0xA0|IIC_BaudRate;
// IIC1_CON = 0x00;
WaitStop();
}
void ShowFreq(void)
{
unsigned char i,ch;
unsigned char buff[4];
unsigned short m;
// Show Horizontal
sprintf(buff,"%4d",H_SYNC);
if((flag3 & BIT_0) == 0)
WriteWordIIC_HW(Scaler_Addr,0xcc,MsgColor1);
else
WriteWordIIC_HW(Scaler_Addr,0xcc,MsgColor2);
/* start bit */
/* transmit device */
INTIIC1_FLG = 0xff;
IIC1_DATA = Scaler_Addr;
IIC1_CLK = 0x20 | IIC_BaudRate;
IIC1_CON = 0x00;
/* transmit addr */
MasterSendByte(0xe0);
/* transmit data */
MasterSendByte(0x90);
m = 13 * OSD_WIDTH + 9;
ch = (unsigned char)m;
MasterSendByte(ch);
ch = (unsigned char)(m >> 8);
MasterSendByte(ch);
MasterSendByte('H');
ch = buff[0];
if(ch != 0x20){
MasterSendByte(ch);
}
for(i=1; i<3; i++){
ch = buff[i];
MasterSendByte(ch);
}
MasterSendByte('.');
ch = buff[i];
MasterSendByte(ch);
MasterSendByte('K');
MasterSendByte('H');
MasterSendByte('Z');
MasterSendByte(' ');
MasterSendByte(' ');
MasterSendByte('V');
/* transmit dumy data for stop bit */
WaitTx();
/* stop bit */
IIC1_CLK = 0xA0|IIC_BaudRate;
// IIC1_CON = 0x00;
WaitStop();
// Show Vertical
sprintf(buff,"%4d",V_SYNC);
/* start bit */
/* transmit device */
INTIIC1_FLG = 0xff;
IIC1_DATA = Scaler_Addr;
IIC1_CLK = 0x20 | IIC_BaudRate;
IIC1_CON = 0x00;
/* transmit addr */
MasterSendByte(0xe0);
/* transmit data */
MasterSendByte(0x90);
m = 13 * OSD_WIDTH + 20;
ch = (unsigned char)m;
MasterSendByte(ch);
ch = (unsigned char)(m >> 8);
MasterSendByte(ch);
ch = buff[0];
if(ch != 0x20){
MasterSendByte(ch);
}
for(i=1; i<3; i++){
ch = buff[i];
MasterSendByte(ch);
}
MasterSendByte('.');
ch = buff[i];
MasterSendByte(ch);
MasterSendByte('H');
MasterSendByte('Z');
/* transmit dumy data for stop bit */
WaitTx();
/* stop bit */
IIC1_CLK = 0xA0|IIC_BaudRate;
// IIC1_CON = 0x00;
WaitStop();
}
void ShowResolution(void)
{
unsigned char i,ch,k;
unsigned short m;
unsigned char buff[4];
//show value
m = 0x106 + (ModePoint * 8);
k = Read24C16(m);
if((k == 0)||(k == 2))
sprintf(buff,"%4d",H_ActiveTab[k]/2);
else
sprintf(buff,"%4d",H_ActiveTab[k]);
if((flag3 & BIT_0) == 0)
WriteWordIIC_HW(Scaler_Addr,0xcc,MsgColor1);
else
WriteWordIIC_HW(Scaler_Addr,0xcc,MsgColor2);
/* start bit */
/* transmit device */
INTIIC1_FLG = 0xff;
IIC1_DATA = Scaler_Addr;
IIC1_CLK = 0x20 | IIC_BaudRate;
IIC1_CON = 0x00;
/* transmit addr */
MasterSendByte(0xe0);
/* transmit data */
MasterSendByte(0x90);
m = 12 * OSD_WIDTH + 14;
ch = (unsigned char)m;
MasterSendByte(ch);
ch = (unsigned char)(m >> 8);
MasterSendByte(ch);
for(i=0; i<4; i++){
ch = buff[i];
MasterSendByte(ch);
}
MasterSendByte(0x58); // x
/* transmit dumy data for stop bit */
WaitTx();
/* stop bit */
IIC1_CLK = 0xA0|IIC_BaudRate;
// IIC1_CON = 0x00;
WaitStop();
// Show Vertical
sprintf(buff,"%4d",V_ActiveTab[k]);
/* start bit */
/* transmit device */
INTIIC1_FLG = 0xff;
IIC1_DATA = Scaler_Addr;
IIC1_CLK = 0x20 | IIC_BaudRate;
IIC1_CON = 0x00;
/* transmit addr */
MasterSendByte(0xe0);
/* transmit data */
MasterSendByte(0x90);
m = 12 * OSD_WIDTH + 19;
ch = (unsigned char)m;
MasterSendByte(ch);
ch = (unsigned char)(m >> 8);
MasterSendByte(ch);
if(buff[0] != 0x20){
ch = buff[0];
MasterSendByte(ch);
}
for(i=1; i<4; i++){
ch = buff[i];
MasterSendByte(ch);
}
if(buff[0] == 0x20){
MasterSendByte(0x20);
}
/* transmit dumy data for stop bit */
WaitTx();
/* stop bit */
IIC1_CLK = 0xA0|IIC_BaudRate;
// IIC1_CON = 0x00;
WaitStop();
}
void UnselectIcon(void)
{
unsigned char k;
if(OSD_Point1 == 0){
k = OSD_Point2 << 1;
if(MainIconColor[OSD_Point2] == 1){
if(OSD_Point2 == 8){
FillLineAttr(IconPosition[k],IconPosition[k+1],2,RedColor);
}
else if(OSD_Point2 == 9){
FillLineAttr(IconPosition[k],IconPosition[k+1],2,GreenColor);
}
else if(OSD_Point2 == 10){
FillLineAttr(IconPosition[k],IconPosition[k+1],2,BlueColor);
}
else{
FillLineAttr(IconPosition[k],IconPosition[k+1],2,FrameColor);
}
}
else{
FillLineAttr(IconPosition[k],IconPosition[k+1],2,FrameMColor);
}
}
else{
k = (OSD_Point2-14) << 1;
if(MainIconColor[OSD_Point2] == 1){
FillLineAttr(IconPosition[k],IconPosition[k+1],2,FrameColor);
}
else{
FillLineAttr(IconPosition[k],IconPosition[k+1],2,FrameMColor);
}
}
}
void ShowInputSource(void)
{
unsigned char i;
OSD_Type = 6;
Osd3Init();
i = PowerStatus & ~BIT_7;
if(i == 3){
if(Read24C16(0xe3) != 0)
i = 4;
}
WriteWordIIC_HW(Scaler_Addr,0xcc,ChannelColor);
WriteXY_StrScaler(1,0,0,SourceTab[i]);
OSD_Control |= BIT_0;
WriteIIC_HW(Scaler_Addr,0x95,OSD_Control);
Timer2 = 300;
}
void VideoMenu(void)
{
switch(OSD_Type){
case 0x00:
SavePointer = NotSaveSaveFlag;
OsdInit();
OSD_Type = 1;
//osd on
OSD_Control |= BIT_0;
WriteIIC_HW(Scaler_Addr,0x95,OSD_Control);
if((flag3 & BIT_2) != 0x00)
printf("OSD ON\r\n");
break;
case 0x01:
SaveData();
VideoUnSelectIcon();
if(OSD_Point1 == 0){
if(++OSD_Point2 > 10){
OSD_Point2 = 0;
}
}
ShowVideoSubMenu();
break;
default:
OSD_OFF();
OsdInit();
OSD_Type = 1;
//osd on
OSD_Control |= BIT_0;
WriteIIC_HW(Scaler_Addr,0x95,OSD_Control);
break;
}
KeyBuffer = 0xff;
}
void VideoSelectItem(void)
{
SaveData();
VideoUnSelectIcon();
if(OSD_Point1 == 0){
if(--OSD_Point2 > 10){
OSD_Point2 = 10;
}
}
ShowVideoSubMenu();
}
void ShowVideoMenu(void)
{
code unsigned char VideoIcon[][5]={
4,1,1,0x00,0x01,
4,1,3,0x18,0x19,
4,1,5,0x24,0x25,
4,1,7,0x26,0x27,
4,1,9,0x28,0x29,
4,1,11,0x0e,0x0f,
4,1,13,0x0a,0x0b,
4,4,1,0x16,0x17,
4,4,3,0x18,0x19,
4,4,5,0x1a,0x1b,
4,4,7,0x12,0x13,
4,4,9,0x20,0x20,
4,4,11,0x20,0x20,
4,4,13,0x20,0x20,
};
unsigned char i;
for(i=0; i<14; i++){
if(VideoIconColor[i] == 1){
WriteWordIIC_HW(Scaler_Addr,0xcc,FrameColor);
}
else{
WriteWordIIC_HW(Scaler_Addr,0xcc,FrameMColor);
}
WriteStringScaler(1,VideoIcon[i]);
}
}
void VideoUnSelectIcon(void)
{
unsigned char k;
//Icon
if(OSD_Point1 == 0){
k = OSD_Point2 << 1;
}
else{
k = (OSD_Point2-14) << 1;
}
if(VideoIconColor[OSD_Point2] == 1){
FillLineAttr(IconPosition[k],IconPosition[k+1],2,FrameColor);
}
else{
FillLineAttr(IconPosition[k],IconPosition[k+1],2,FrameMColor);
}
}
void ShowVideoSubMenu(void)
{
unsigned char k;
//Icon
if(OSD_Point1 == 0){
k = OSD_Point2 << 1;
}
else{
k = (OSD_Point2-14) << 1;
}
if(VideoIconColor[OSD_Point2] == 1){
FillLineAttr(IconPosition[k],IconPosition[k+1],2,IconColor);
}
else{
FillLineAttr(IconPosition[k],IconPosition[k+1],2,IconMColor);
}
// Show Titel
k = Language * 11 + OSD_Point2;
WriteXY_CStrScaler(0,7,3,23,VideoTab1[k]);
//Show Value
switch(OSD_Point2){
case AvBrightnessNode:
ShowBrightness();
break;
case AvContrastNode:
ShowContrast();
break;
case AvSaturationNode:
ShowSaturation();
break;
case AvTintNode:
ShowTint();
break;
case AvSharpnessNode:
ClearText();
ShowSharpness();
break;
case AvLanguageNode:
ClearText();
ShowLanguage();
break;
case AvRecallNode:
case AvExitMainMenuNode:
ClearText();
ShowNO_YES(0);
break;
case AvOSD_X_Node:
ShowOSD_X();
break;
case AvOSD_Y_Node:
ShowOSD_Y();
break;
case AvOSD_TimerNode:
ShowOSD_Timer();
break;
}
}
void VideoValueUp(void)
{
if((OSD_Type == 0x00)||(OSD_Type == 0x06)){
if((flag1 & BIT_3) == 0){
DirectVolume();
}
}
else if(OSD_Type == 0x01){
switch(OSD_Point2){
case AvBrightnessNode:
BrightnessUp();
SavePointer = BrightnessSaveFlag;
break;
case AvContrastNode:
ContrastUp();
SavePointer = ContrastSaveFlag;
break;
case AvSaturationNode:
SaturationUp();
SavePointer = SaturationSaveFlag;
break;
case AvTintNode:
TintUp();
SavePointer = TintSaveFlag;
break;
case AvSharpnessNode:
SharpnessUp();
SavePointer = SharpnessSaveFlag;
break;
case AvLanguageNode:
LanguageUp();
Repeat = 0xff;
break;
case AvRecallNode:
ShowNO_YES(1);
Recall();
ShowNO_YES(0);
Repeat = 0xff;
break;
case AvOSD_X_Node:
OSD_X_Up();
SavePointer = OSD_X_SaveFlag;
break;
case AvOSD_Y_Node:
OSD_Y_Up();
SavePointer = OSD_Y_SaveFlag;
break;
case AvOSD_TimerNode:
OSD_TimerUp();
SavePointer = OSD_TimerSaveFlag;
break;
case AvExitMainMenuNode:
OSD_OFF();
Repeat = 0xff;
break;
default:
Repeat = 0xff;
break;
}
}
else if(OSD_Type == 3){
if(++Volume > 100){
Volume = 100;
}
else{
SetVolume();
ShowVolume();
SavePointer = VolumeSaveFlag;
}
}
KeyBuffer = 0xff;
}
void VideoValueDown(void)
{
if((OSD_Type == 0x00)||(OSD_Type == 0x06)){
if((flag1 & BIT_3) == 0){
DirectVolume();
}
}
else if(OSD_Type == 0x01){
switch(OSD_Point2){
case AvBrightnessNode:
BrightnessDown();
SavePointer = BrightnessSaveFlag;
break;
case AvContrastNode:
ContrastDown();
SavePointer = ContrastSaveFlag;
break;
case AvSaturationNode:
SaturationDown();
SavePointer = SaturationSaveFlag;
break;
case AvTintNode:
TintDown();
SavePointer = TintSaveFlag;
break;
case AvSharpnessNode:
SharpnessDown();
SavePointer = SharpnessSaveFlag;
break;
case AvLanguageNode:
LanguageDown();
Repeat = 0xff;
break;
case AvOSD_X_Node:
OSD_X_Down();
SavePointer = OSD_X_SaveFlag;
break;
case AvOSD_Y_Node:
OSD_Y_Down();
SavePointer = OSD_Y_SaveFlag;
break;
case AvOSD_TimerNode:
OSD_TimerDown();
SavePointer = OSD_TimerSaveFlag;
break;
default:
Repeat = 0xff;
break;
}
}
else if(OSD_Type == 3){
if(--Volume > 100){
Volume = 0;
}
else{
SetVolume();
ShowVolume();
SavePointer = VolumeSaveFlag;
}
}
KeyBuffer = 0xff;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -