📄 osd00.c
字号:
//===================================================================================
//
// OSD.C
// Author: Duran Liu
// Date: 06\12\03
// Version: 1.0
// Copyright: AUO
//===================================================================================
#define USE_GLOBAL
#include "include.h"
//#include "Data.h"
void SendOSDByte(BYTE row,column,value,bit check)//For format(b)
{
BYTE i;
BYTE Buf[4];
if(check == 1)
{
Buf[0]=OSDSlaveAddress;
Buf[1]=row|0x80;//0x80 => Address Bytes
Buf[2]=column & 0x3f;
Buf[3]=value;
for(i=0;i<4;i++) SendOSD_IIC(Buf[i]);
}
else
{
Buf[1]=row|0x80;//0x80 => Address Bytes
Buf[0]=column & 0x3f;
Buf[1]=value;
for(i=0;i<3;i++) SendOSD_IIC(Buf[i]);
}
}
void SendOSDCode(BYTE row,column,value,bit check)//For format(b)
{
BYTE i=0;
BYTE Buf[4];
if(check == 1)
{
Buf[0]=OSDSlaveAddress;
Buf[1]=row|0xa0;//0xa0 => Attribute Bytes
Buf[2]=column & 0x3f;
Buf[3]=value;
for(;i<4;i++) SendOSD_IIC(Buf[i]);
}
else
{
Buf[0]=column & 0x3f;
Buf[1]=value;
SendOSD_IIC(Buf[0]);
SendOSD_IIC(Buf[1]);
}
}
void OpenWindow(BYTE WinNo,H_Start,H_Stop,V_Start,V_Stop,Color,bit Shadow)
{ // Range 0~15 0~15 0~31 0~31 0~7 0~1
IICOSDStart;
SendOSDCode(SetCmdReg,WinNo*3,(H_Start<<4)|H_Stop,1);//WinNo => Column 0~11
SendOSDCode(SetCmdReg,WinNo*3+1,(V_Start<<3)|0x04|((BYTE)Shadow),0 );//0x04 => Enable Window. WEN=1
SendOSDCode(SetCmdReg,WinNo*3+2,(V_Stop<<3)|(Color&0x07) ,0);
IICOSDStop;
DelayX1ms(2);
}
void CloseWindow(BYTE WinNo,bit check)//Check =0 ,then to close all windows.
{
if(check == 1)
{
IICOSDStart;
SendOSDCode(SetCmdReg,WinNo*3+1,0,1);//Disable Window. WEN=0
IICOSDStop;
}
else
{
SendOSDCode(SetCmdReg,0,0,1);
SendOSDCode(SetCmdReg,1,0,0);
SendOSDCode(SetCmdReg,2,0,0);
SendOSDCode(SetCmdReg,3,0,0);
}
}
void OSDSwitch(bit status)// 1 => Turn on , 0 => Turn off .
{
IICOSDStart;
if(status) SendOSDCode(SetCmdReg,Parameter,TurnOn,1);
else SendOSDCode(SetCmdReg,Parameter,TurnOff,1);
IICOSDStop;
}
void ClearOSD(void)
{
IICOSDStart;
CloseWindow(0,0);
SendOSDCode(SetCmdReg,Parameter,0x02,0);
IICOSDStop;
DelayX1ms(2);
IICOSDStart;
SendOSDCode(SetCmdReg,Parameter,0x00,1);
IICOSDStop;
DelayX1ms(2);
IICOSDStart;
OSDSwitch(1);
IICOSDStop;
DelayX1ms(2);
gotoxy(0,0);
}
void gotoxy(BYTE x,y)
{
CursorX=x;
CursorY=y;
}
void PrintLine(BYTE *string,row ,attribute)// row = CursorY
{ // Range 0~14
BYTE i=0;
IICOSDStart;
SendOSD_IIC(OSDSlaveAddress);
// b7 b6 b5 b4 b3 b2 b1 b0
SendOSD_IIC(row|0x80);// Address Byte. Row 1 0 0 x R3 R2 R1 R0
for( ;*string != '\0'; )
{
SendOSD_IIC(i|0x40);//CursorX or Column N (N = 0 ~ 29). 0x40 => Format (c)
SendOSD_IIC(ASCII_TO_OSD(*string));
i++;
string++;
}
SendOSD_IIC(30);
SendOSD_IIC(0);
IICOSDStop;
DelayX1ms(2);
IICOSDStart;
SendOSD_IIC(OSDSlaveAddress);
// b7 b6 b5 b4 b3 b2 b1 b0
SendOSD_IIC(row|0xa0);// Attribute Byte. Row 1 0 1 x R3 R2 R1 R0
for( ;i>0;i--)
{
SendOSD_IIC(i|0x40);//0x40 => Format (c)
SendOSD_IIC(attribute);// b7 b6 b5 b4 b3 b2 b1 b0
// - BGR BGG BGB BLINK R G B
}
IICOSDStop;
OpenWindow(0,2,14,2,14,5,0);
}
//*********************************** For InitOSD() *******************************************
void SetOSDRowCtrlReg(BYTE row,CHS_CWS)
{
SendOSDByte(row,RowCtrlReg,CHS_CWS,0);// CHS_CWS => 0x00 CHS=0,CWS=0; 0x01 CHS=0,CWS=1;
// 0x02 CHS=1,CWS=0; 0x03 CHS=1,CWS=1;
}
void SetOSDPosition(BYTE x,y)
{
SendOSDCode(SetCmdReg,VERTD,y,1);//Column 12 .Send S and R
SendOSDCode(SetCmdReg,HORD,x,0);//Column 13
}
void SetOSDHeight(BYTE height)//Column 14
{
SendOSDCode(SetCmdReg,ChVerHeight,height,0);
}
void SetOSDRowSpace(BYTE rowspace)//Column 16
{
SendOSDCode(SetCmdReg,RSPACE,rowspace,0);
}
//*********************************************************************************************
void InitOSD(void)
{
BYTE i;
ClearOSD();
IICOSDStart;
SetOSDPosition(10,10);//Column 12,Column 13
SetOSDHeight(18);//Column 14
SendOSDCode(SetCmdReg,18,0,0);
SendOSDCode(SetCmdReg,19,0,0);
SendOSDCode(SetCmdReg,20,0,0);
SendOSDCode(SetCmdReg,21,0,0);
SendOSDCode(SetCmdReg,22,0,0);
IICOSDStop;
DelayX1ms(2);
IICOSDStart;
SendOSDByte(0,RowCtrlReg,0,1);
for(i=1;i<14;i++)
{
SetOSDRowCtrlReg(i,0);
}
IICOSDStop;
DelayX1ms(2);
IICOSDStart;
CloseWindow(0,0);//Closing all windows
IICOSDStop;
DelayX1ms(2);
}
char ASCII_TO_OSD(char Data)
{
switch(Data)
{
case '0':
return(0x01);
break;
case '1':
return(0x02);
break;
case '2':
return(0x03);
break;
case '3':
return(0x04);
break;
case '4':
return(0x05);
break;
case '5':
return(0x06);
break;
case '6':
return(0x07);
break;
case '7':
return(0x08);
break;
case '8':
return(0x09);
break;
case '9':
return(0x0A);
break;
case 'A':
return(0x0B);
break;
case 'B':
return(0x0C);
break;
case 'C':
return(0x0D);
break;
case 'D':
return(0x0E);
break;
case 'E':
return(0x0F);
break;
case 'F':
return(0x10);
break;
case 'G':
return(0x11);
break;
case 'H':
return(0x12);
break;
case 'I':
return(0x13);
break;
case 'J':
return(0x14);
break;
case 'K':
return(0x15);
break;
case 'L':
return(0x16);
break;
case 'M':
return(0x17);
break;
case 'N':
return(0x18);
break;
case 'O':
return(0x01);
break;
case 'P':
return(0x19);
break;
case 'Q':
return(0x1a);
break;
case 'R':
return(0x1b);
break;
case 'S':
return(0x1c);
break;
case 'T':
return(0x1d);
break;
case 'U':
return(0x1e);
break;
case 'V':
return(0x1f);
break;
case 'W':
return(0x20);
break;
case 'X':
return(0x21);
break;
case 'Y':
return(0x22);
break;
case 'Z':
return(0x23);
break;
case 'a':
return(0x24);
break;
case 'b':
return(0x25);
break;
case 'c':
return(0x26);
break;
case 'd':
return(0x27);
break;
case 'e':
return(0x28);
break;
case 'f':
return(0x29);
break;
case 'g':
return(0x2a);
break;
case 'h':
return(0x2b);
break;
case 'i':
return(0x2c);
break;
case 'j':
return(0x2d);
break;
case 'k':
return(0x2e);
break;
case 'l':
return(0x2f);
break;
case 'm':
return(0x30);
break;
case 'n':
return(0x31);
break;
case 'o':
return(0x32);
break;
case 'p':
return(0x33);
break;
case 'q':
return(0x34);
break;
case 'r':
return(0x35);
break;
case 's':
return(0x36);
break;
case 't':
return(0x37);
break;
case 'u':
return(0x38);
break;
case 'v':
return(0x39);
break;
case 'w':
return(0x3a);
break;
case 'x':
return(0x3b);
break;
case 'y':
return(0x3c);
break;
case 'z':
return(0x3d);
break;
case ' ':
return(0x00);//Show nothing
break;
case '-':
return(0x73);//Show -
break;
case '<':
return(0x7d);//Show <=
break;
case ':':
return(0x77);//Show :
break;
case '>':
return(0x7e);//Show =>
break;
default :
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -