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

📄 osd.c

📁 myson的MTV332的DEMO程序 主要功能有菜单的设计和无线遥控以及视频参数的调节
💻 C
📖 第 1 页 / 共 5 页
字号:
#include "global.h"
#include "font.h"
#include "menu.h"

BYTE MenuFlagState;
code BYTE HexTab[16] = {_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _A, _B, _C, _D, _E, _F};
code BYTE SStr1[]=	 {_A,_V,_1,0x77};
code BYTE SStr2[]=	 {_A,_V,_2,0x77};
code BYTE NTSCStr[]=  {_N,_T,_S,_C};
code BYTE PALStr[]= 	 {_P,_A,_L,__};

//#ifdef MTV230
void ClearMenu()
{       
	EnableOSDRAMClr();
	DoWait(2);
	DisableOSDRAMClr();
	//EnableOSD();

}

void ClearRow(BYTE row,BYTE startcol,BYTE num)
{
	BYTE i;

	byMTV_OSDRA=row |Address;
	byMTV_OSDCA=startcol;
	for (i=0;i< num;i++)
			byMTV_OSDDT0= __;
}

void SetBGColor(BYTE StartX,BYTE StartY,BYTE num,BYTE color)
{
	BYTE i;

	byMTV_OSDRA=StartY|Attribute; 
	byMTV_OSDCA=StartX;	
	for(i=0;i< (num*2);i++)
		byMTV_OSDDT0= color;//0x12;
}

void ShowSubMenu(BYTE menuvlaue)
{
	BYTE i;
	
	gotoxy(19,MainPageYStart+1);
	PrintByteString(MOD_Item,4,0x32);	//0x62 :BG Yellow, color :green
	gotoxy(19,MainPageYStart+2);
	PrintByteString(MENU_Item,4,0x32);		
	gotoxy(19,MainPageYStart+3);
	PrintByteString(UP_Item,4,0x32);	
	gotoxy(19,MainPageYStart+4);
	PrintByteString(DOWN_Item,4,0x32);	

	switch (menuvlaue)
	{//0x62 :BG Yellow, color :green
		case 0:			
			byMTV_OSDRA=(MainPageYStart+1) |Attribute;	break;
		case 1:
			byMTV_OSDRA=(MainPageYStart+2) |Attribute;	break;
		case 2:		
			byMTV_OSDRA=(MainPageYStart+3) |Attribute;	break;
		case 3:
			byMTV_OSDRA=(MainPageYStart+4) |Attribute;	break;
	}
	byMTV_OSDCA=22;		
	for(i=0;i< 4;i++)
		byMTV_OSDDT0= 0x12;

}
void OpenWindow(BYTE win_no, BYTE start_x, BYTE start_y, BYTE end_x, BYTE end_y, BYTE color)
{
	BYTE i;
	i = (win_no-1)*3;	//window 1,2,3,4
	byMTV_WinReg[i] = (start_y<<4)|end_y;		//row start and end address
	byMTV_WinReg[i+1] = (start_x<<3)|WEN;			//column start address
	byMTV_WinReg[i+2] = (end_x<<3)|color;	// column end address and window color
}
void CloseWindow(BYTE win_no)
{
BYTE i;
	i = (win_no-1)*3;
	byMTV_WinReg[i+1] &= (~WEN);
}

void ClearAllWindow(void)
{
	EnableOSDWinClr();
	DoWait(5);
	DisableOSDWinClr();
}

void gotoxy(BYTE x,BYTE y)
{
	CursorX=x;
	CursorY=y;
}
void SetDouble()
{
	BYTE i;

	for (i=0;i < 14;i++)
	{
		byMTV_OSDCA=30;	//Colunm 30
		byMTV_OSDRA= i ;
		byMTV_OSDDT0= 0x01;
	}
	
}

void DoubleWidthPrintString(BYTE *databuf,BYTE number,BYTE color)
{
BYTE i;
	
	byMTV_OSDRA=CursorY|Address;
	
	for(i=0;i<number;i++)
	{
	byMTV_OSDCA=CursorX+i;

//	if(databuf[i]>255)
//		byM332OSDDT1= (BYTE)(databuf[i]);
//	else 
		byMTV_OSDDT0= (BYTE)(databuf[i]);
              Short_Delay(5);
	}

	// For double width
	byMTV_OSDRA=CursorY|Address;
	byMTV_OSDCA=30;
	byMTV_OSDDT0 = 0x01;
	Short_Delay(15);

	
	byMTV_OSDRA=CursorY|Attribute;
	
	for(i=0;i<number;i++)
	{
	byMTV_OSDCA=CursorX+i;
	
//	if(databuf[i]>255)
//		byM332OSDDT1= 0x00|color;
//	else 
		byMTV_OSDDT0= 0x00|color;
	}
	
}
void PrintString(BYTE *databuf,BYTE number,BYTE color)
{
	BYTE i;
	
	byMTV_OSDRA=CursorY|Address;
	
	for(i=0;i<number;i++)
	{
	byMTV_OSDCA=CursorX+i;

//	if(databuf[i]>255)
//		byM332OSDDT1= (BYTE)(databuf[i]);
//	else 
		byMTV_OSDDT0= (BYTE)(databuf[i]);
              Short_Delay(5);
	}
	
	byMTV_OSDRA=CursorY|Attribute;
	
	for(i=0;i<number;i++)
	{
	byMTV_OSDCA=CursorX+i;
	
//	if(databuf[i]>255)
//		byM332OSDDT1= 0x00|color;
//	else 
		byMTV_OSDDT0= 0x00|color;
	}
	
}
void PrintByteString(BYTE*databuf,BYTE number,BYTE color)
{
BYTE i;
	
	byMTV_OSDRA=CursorY|Address;
	
	for(i=0;i<number;i++)
	{
	byMTV_OSDCA=CursorX+i;
	byMTV_OSDDT0= (BYTE)(databuf[i]);
	}
	
	byMTV_OSDRA=CursorY|Attribute;
	
	for(i=0;i<number;i++)
	{
	byMTV_OSDCA=CursorX+i;
	byMTV_OSDDT0= 0x00|color;
	}
	
}

void PrintChar(WORD chardata,BYTE color)
{
	byMTV_OSDRA=CursorY;
	byMTV_OSDCA=CursorX;
//	if(chardata>255)
//		byM332OSDDT1=(BYTE)chardata;
//	else 
		byMTV_OSDDT0=(BYTE)chardata;
	
	byMTV_OSDRA=CursorY|0x40;
	byMTV_OSDCA=CursorX;
//	if(chardata>255)
//		byM332OSDDT1=0x00|color;
//	else
		byMTV_OSDDT0=0x00|color;

	CursorX++;
}




void PrintHex(BYTE  value, BYTE  color)
{
   PrintChar(HexTab[value/16], color);
   PrintChar(HexTab[value%16], color);
}

void PrintValue(WORD value, BYTE color)
{
   WORD Level;
   BYTE i,Count;

   Level=value;
   //count digial num
   for(Count=1;Count<5;Count++)
   {
      Level=Level/10;
      if( Level==0 )
      	{
      	   break;
      	}
   }

   Level=1;
   for(i=1;i<Count;i++)
   {
      Level=Level*10;
   }
   
   //clear
   for(i=0;i<4;i++)
   {
      PrintChar(__, MainPageColor);
   }
   CursorX=CursorX-4;

   //print value
   for(i=0;i<4;i++)
   {
      if(Level==0)
      {
         break;
      }
      else
      {
         PrintChar(HexTab[value/Level], color);
         value=value%Level;
         Level=Level/10;
      }
   }
}

#if 0
void ClearOSDRegion(BYTE startX, BYTE startY, BYTE color)
{/*
BYTE i;
	for(i=0;i<=MainPageYEnd;i++)
	{
	gotoxy(startX,startY+i);
	PrintString(EmptyString,MainPageItemLength,color);
	}	*/
		DisableOSD();
	OSDConVal=BSEN;
	EnableOSDRAMClr();
	EnableOSDWinClr();
	DoWait(5);
	DisableOSDWinClr();
	DisableOSDRAMClr();
}
#endif

void InitialOSD(void)
{	

	DisableOSD();
	OSDConVal=BSEN;
	EnableOSDRAMClr();
	EnableOSDWinClr();
	DoWait(50);
	DisableOSDWinClr();
	DisableOSDRAMClr();
}

void InitialFlag(void)
{
	bDEMOFlag = 0;
	bMenuFlag = 0;
	bSubMenuFlag=0;
	bClrFlag=0;
	bSwapFlag=0;
	bFactoryflag = 0;
	
	bGammaFlag=0;
	MenuFlagState = 0;
	
	PowerFlag = 0;
	FormatValue=0;

	SourceFlag=0;	//AV1
	NTSCFlag = 1;		//NTSC

	bNoSync = 1;
	bVsyncChange = 1;
       bNTSCVideo = 1; 
	byVideoMode = NoVideoInout; 
	SyncStep = 0;

       OldSyncPulse[0] = 0xFFFF;     //Initial the Sync Counter Variable
	OldSyncPulse[1] = 0xFFFF;

       bRotationFlag = 0;

	FactoryFg = 0;

	SyncSW = 0;
	WIDEBLKPOL = 0;
	VSW = 0;
	ColorSys = 0;


}

void GammaMenu(void)
{
	if(bFactoryflag)
	{
	gotoxy(1,7);
	PrintChar(_F,Red);
	}
	else
	{
	gotoxy(1,7);
	PrintChar(__,MainPageColor);
	}
		
	gotoxy(MainPageXStart,MainPageYStart);
	PrintByteString(VG1Str,MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+1);
	PrintByteString(VG2Str,MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+2);
	PrintByteString(ComAMP,MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+3);
	PrintByteString(COMDC,MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+4);
	PrintByteString(SDriveRed,MainPageItemLength,MainPageCharColor);	
	gotoxy(MainPageXStart,MainPageYStart+5);
	PrintByteString(SDriveGreen,MainPageItemLength,MainPageCharColor);	
	gotoxy(MainPageXStart,MainPageYStart+6);
	PrintByteString(SDriveBlue,MainPageItemLength,MainPageCharColor);	
	gotoxy(MainPageXStart,MainPageYStart+7);
	PrintByteString(ReturnStr,MainPageItemLength,MainPageCharColor);		
}

void VideoMenu(void)
{
       EnableOSDRAMClr();
	EnableOSDWinClr();
	DisableOSD();
	
	if(bFactoryflag)
	{
		gotoxy(1,7);
		PrintChar(_F,Red);
	}
	else
	{
		gotoxy(1,7);
		PrintChar(__,MainPageColor);
	}
		
	//gotoxy(MainPageXStart,MainPageYStart);
	//PrintString(Saturation_Item,MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart);
	PrintString(VideoColor_Item,sizeof(VideoColor_Item),MainPageCharColor);
	//gotoxy(MainPageXStart,MainPageYStart+2);
	//PrintString(Hue_Item,MainPageItemLength,MainPageCharColor);
	//gotoxy(MainPageXStart,MainPageYStart+3);
	//PrintString(Contrast_Item,MainPageItemLength,MainPageCharColor);
	//gotoxy(MainPageXStart,MainPageYStart+3);
       //PrintString(Sharpness_Item,MainPageItemLength,MainPageCharColor);
	   
	gotoxy(MainPageXStart,MainPageYStart+1); 
       PrintString(Rotation_Item,sizeof(Rotation_Item),MainPageCharColor);
	   
	gotoxy(MainPageXStart,MainPageYStart+2); 		   		
	PrintString(Format_Item,sizeof(Format_Item),MainPageCharColor);	
	
	gotoxy(MainPageXStart,MainPageYStart+3);
	PrintByteString(Gamma_Item,sizeof(Gamma_Item),MainPageCharColor);
	
	gotoxy(MainPageXStart,MainPageYStart+4);
	PrintByteString(InputSource_Item,sizeof(InputSource_Item),MainPageCharColor);		

	gotoxy(MainPageXStart,MainPageYStart+5);
	PrintByteString(OSDPosition_Item,sizeof(OSDPosition_Item),MainPageCharColor);	
	
	gotoxy(MainPageXStart,MainPageYStart+6);	
	PrintString(VideoPosition_Item,sizeof(VideoPosition_Item),MainPageCharColor);	
	
	gotoxy(MainPageXStart,MainPageYStart+7);	
	PrintString(VideoDafaultStr,sizeof(VideoDafaultStr),MainPageCharColor);	
	
	gotoxy(MainPageXStart,MainPageYStart+8);
	PrintString(ExitStr,sizeof(ExitStr),Red);	
//	gotoxy(MainPageXStart,MainPageYStart+6);
//	gotoxy(MainPageXStart,MainPageYStart+7);
//	PrintString(Exit_Item[sOSD.LANGUAGE],MainPageItemLength,Red);	
//	PrintString(OSDSetup_Item[sOSD.LANGUAGE],MainPageItemLength,White);
//	PrintString(Contrast_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
//	PrintString(OSDHPosition_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
//	gotoxy(MainPageXStart,MainPageYStart+5);
//	PrintString(OSDVPosition_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
}


#ifdef _MTV332_
void Disp_NTSC_Mode(void)
{
    
    Set_TintPWM = 0xAF;

    byMTV_TCONADDR = 0x0b;  // 0x00 ~ 0x1d
    byMTV_TCONDATA = 0x88;
	
    if(bVsyncChange){
    InitialOSD();
    gotoxy(20,0);
    PrintChar(__,MainPageColor);
    PrintString(NTSC_STR,MainPageItemLength,MainPageCharColor);
    EnableOSD();
    bVsyncChange = 0;
    	}
}

void Disp_PAL_Mode(void)
{
    
    Set_TintPWM = 0x00;
    byMTV_TCONADDR = 0x0b;  // 0x00 ~ 0x1d
    byMTV_TCONDATA = 0x85;

    if(bVsyncChange){
		InitialOSD();
    gotoxy(20,0);
    PrintChar(__,MainPageColor);
    PrintString(PAL_STR,MainPageItemLength,MainPageCharColor);
    EnableOSD();
	bVsyncChange =0;
    	}
}
#endif

void Disp_NoSync_Input(void)
{
	if(bVsyncChange)
	{
		InitialOSD();
		gotoxy(20,0);
		PrintChar(__,MainPageColor);
		PrintString(NoSyncInput_STR,MainPageItemLength,MainPageCharColor);
		EnableOSD();
		bVsyncChange = 0;
    	}
}

void Disp_EmptyString(void)
{
   BYTE i;
   for( i = 0; i < 15; i++)
   	{
         gotoxy(0,i);
	  PrintString(EmptyString,30,MainPageColor);
   }
   	
}

#ifdef _DebugMsg_
void Disp_DebugMsg(void)
{
    	gotoxy(26,1);
    	PrintString(DEBUG_STR,1,Magenta);
    	EnableOSD();
}
#endif

#if 0
void VideoSetupMenu(void)
{

}

void VideoBrightMenu(void)
{
	if(bFactoryflag)
	{
	gotoxy(1,7);
	PrintChar(_F,Red);
	}
	else
	{
	gotoxy(1,7);
	PrintChar(__,MainPageColor);
	}

	OpenWindow(MainPageWinNo,MainPageXStart,MainPageYStart,MainPageXEnd,MainPageYEnd,MainPageColor);
	//OpenWindow(BackGroundWinNo,BackGroundXStart,BackGroundYStart,BackGroundXEnd,BackGroundYEnd,BackGroundColor);
	gotoxy(MainPageXStart,MainPageYStart);
	PrintString(Brightness_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+1);
	PrintString(Contrast_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+2);
	PrintString(Exit_Item[sOSD.LANGUAGE],MainPageItemLength,Red);
	
}

void VideoColorMenu(void)
{
	if(bFactoryflag)
	{
	gotoxy(1,7);
	PrintChar(_F,Red);
	}
	else
	{
	gotoxy(1,7);
	PrintChar(__,MainPageColor);
	}

	OpenWindow(MainPageWinNo,MainPageXStart,MainPageYStart,MainPageXEnd,MainPageYEnd,MainPageColor);
	//OpenWindow(BackGroundWinNo,BackGroundXStart,BackGroundYStart,BackGroundXEnd,BackGroundYEnd,BackGroundColor);
	gotoxy(MainPageXStart,MainPageYStart);
	PrintString(Saturation_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+1);
	PrintString(Hue_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+2);
	PrintString(Exit_Item[sOSD.LANGUAGE],MainPageItemLength,Red);
	
}

void OSDSetupMenu(void)
{/*
	if(bFactoryflag)
	{
	gotoxy(1,7);
	PrintChar(_F,Red);
	}
	else
	{
	gotoxy(1,7);
	PrintChar(__,MainPageColor);
	}*/

//	OpenWindow(MainPageWinNo,MainPageXStart,MainPageYStart,MainPageXEnd,MainPageYEnd,MainPageColor);
	//OpenWindow(BackGroundWinNo,BackGroundXStart,BackGroundYStart,BackGroundXEnd,BackGroundYEnd,BackGroundColor);
	gotoxy(MainPageXStart,MainPageYStart);
	PrintString(OSDHPosition_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+1);
	PrintString(OSDVPosition_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
//	gotoxy(MainPageXStart,MainPageYStart+2);
//	PrintString(OSDLanguage_Item[sOSD.LANGUAGE],MainPageItemLength,MainPageCharColor);
	gotoxy(MainPageXStart,MainPageYStart+2);
	PrintString(Exit_Item[sOSD.LANGUAGE],MainPageItemLength,Red);
}

void OSDLanguageMenu(void)
{
	//OpenWindow(MainPageWinNo,MainPageXStart,MainPageYStart,MainPageXEnd,MainPageYEnd,MainPageColor);
	gotoxy(MainPageXStart+2,MainPageYStart+2);
	PrintString(OSDLanguage_Item[sOSD.LANGUAGE],MainPageItemLength,Yellow);
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -