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

📄 osd00.c

📁 UPS111配小尺寸3.5寸摸拟屏的源码
💻 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 + -