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

📄 osd2csl.c

📁 TFT 屏驱动IC源码头TFT 屏驱动IC源码
💻 C
字号:
/* ##########################################################################
   #                      Terawins Inc. Company                             #
   #                 Copyright (c) 2005, All rights reserved                #
   #                                                                        #
   #  All rights reserved. Reproduction in whole or in parts is prohibited  #
   #  without the prior written consent.                                    #
   ########################################################################## */
   
////////////////////////////////////////////////////////////////////////////////
//                                                                            //
//                          LCD Application Firmware                          //
// ========================================================================== //
//                                                                            //
//  Module   : OSD2CSL.c                                                      //
//                                                                            //
//  Purpose  : T128/T108 OSD 2 Chip support libary.                           //
//                                                                            //
//  Version  : 1.00                                                           //
//                                                                            //
//  Compiler : Keil 8051 C Compiler v8.05a                                    //
//                                                                            //
//  Reference: [1] Keil C51 Compiler User's Guide 09.2001, Keil Software, Inc.//
//                                                                            //
// ========================================================================== //
//                                                                            //
//  Date        Author        Reason (what and why)                           //
//  ----------- ------------- ----------------------------------------------  //
//  2007/02/07  Kevin Hsu     				                                  //
//  																	      //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////
#include "Common.h"
#include "Global.h"
#include "ICControl.h"	
#include "System.h"
#include "TWICreg.h"
#include "OSD2_Define.h"
#include "OSD2CSL.h"
//#include "ICON2BP12X18.H"
#include "Icon4BP12x12.H"
#include "IconJigsaw.h"
	  
#ifdef ICON2BP
//=============================================================================
//    Function  : void OSD2Show2BPIcon(uCHAR *string,uCHAR x,uCHAR y,
//				  uCHAR cBlink,uCHAR HVScale,uCHAR MenuIndex)
//    Prupose   : Show OSD2 2BPP 
//    Arguments : uCHAR *string
//				  uCHAR x
//				  uCHAR y
//				  uCHAR cBlink
//				  uCHAR HVScale
//				  uCHAR MenuIndex	
//    Returns   : --
//    External  : --    --                  --
//-----------------------------------------------------------------------------
//  Detail Description:
//  -------------------
//  Show OSD2 2BPP
//  --------------	    
//=============================================================================
void OSD2Show2BPIcon(uCHAR *string,uCHAR x,uCHAR y,uCHAR cBlink,uCHAR HVScale,uCHAR MenuIndex)
{
	uCHAR *pString= string+1;	
	uCHAR i,j,k; 
	//uCHAR iTeststr[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,EOL};  
	//pString = iTeststr;
	k=0;		
	if(MenuIndex == MENU1)		
	{		 
		while((*pString)!= EOL)
		{
			//~Set RAtt_C~//
			OSD2SetRamAddr(Menu1StrAdr+(Menu1Width+4)*y+3);
			OSD2SetRamData(((0x0000+HVScale)<<6)|(Menu1Width));	
			OSD2SetRamAddr(Menu1StrAdr+(Menu1Width+4)*y+x+4);
			j=0;   
			k=x;
			//~Stuff Strings~//
			while(((*pString) != EOL)&&(k<Menu1Width)&&(j<string[0]))
			{
				OSD2SetRamData(0x0000|((uWORD)(cBlink)<<13)|((uWORD)(IconColorIndex[(*pString)]&0x0F)<<9)|(*pString++));
				k++;
				j++;
			}
			y++;
		}
	}
	else if(MenuIndex==MENU2)
	{
		//~Set RAtt_C~//
		OSD2SetRamAddr(Menu2StrAdr+(Menu2Width+4)*y+3);
		OSD2SetRamData(((0x0000+HVScale)<<6)|(Menu2Width));	
		OSD2SetRamAddr(Menu2StrAdr+(Menu2Width+4)*y+x+4);
		k=x;
		while((*pString) != EOL)
		{
			//~Stuff Strings~//
			while(((*pString) != EOL)&&(k<Menu2Width)&&(j<string[0]))
			{
				OSD2SetRamData(0x0000|((uWORD)(cBlink)<<13)|((uWORD)(IconColorIndex[(*pString)]&0x0F)<<9)|(*pString++));
				k++;
				j++;
			}
			y++;
		}
	}	  

}
#endif //ICON2BP


#ifdef ICON4BP	
//=============================================================================
//    Function  : OSD2Show4BPIcon(uCHAR *string,uCHAR x,uCHAR y,uCHAR cBlink,
//								  uCHAR HVScale,uCHAR Color, uCHAR MenuIndex,uCHAR bColor)
//    Prupose   : Show OSD2 4BPP 
//    Arguments : uCHAR *string
//				  uCHAR x
//				  uCHAR y
//				  uCHAR cBlink		  <---0: No Blink
//				  uCHAR HVScale		  
//				  uCHAR Color		  <---0: For Default IconColorHighByte.  
//									      1~15: For user define. 
//				  uCHAR MenuIndex	  <---1: For Menu 1.   2: For Menu 2.
//    Returns   : --
//    External  : --    --                  --
//-----------------------------------------------------------------------------
//  Detail Description:
//  -------------------
//  Show OSD2 4BPP
//  --------------	    
//=============================================================================
void OSD2Show4BPIcon(uCHAR *string,uCHAR x,uCHAR y,uCHAR cBlink,uCHAR HVScale,uCHAR Color, uCHAR MenuIndex,uCHAR bColor)
{
	uCHAR Char= *(string+2);	
	uCHAR j,k; 				
	uCHAR V;		
	if(MenuIndex == MENU1)
	{
		for(V=0; V<string[1];V++)
		{			
			//~Set RAtt_C~//
			OSD2SetRamAddr(Menu1StrAdr+(Menu1Width+4)*y+3);
//				OSD2SetRamData(((0x0000+HVScale)<<6)|(Menu1Width));	
			if(bColor < 4)
			{
			 	OSD2SetRamData((((0x0000+HVScale)<<6)&0x03C0)|((0x0000+Menu1Width)&0x003F));
			}
			if(bColor > 4)
			{
			 	OSD2SetRamData((((0x0000+HVScale)<<6)&0x03C0)|((0x0000+Menu1Width)&0x003F)|0x0400);
			}
			OSD2SetRamAddr(Menu1StrAdr+(Menu1Width+4)*y+x+4);
			//~Stuff Strings~//
			j=0;   
			k=x;
			while((k<Menu1Width)&&(j<string[0]))	 			
			{
				if(Color)
					OSD2SetRamData(0x0000|((uWORD)(cBlink)<<13)|((uWORD)bColor<<14)|((uWORD)(Color&0x0F)<<9)|(Char++));
				else
					OSD2SetRamData(0x0000|((uWORD)(cBlink)<<13)|((uWORD)bColor<<14)|((uWORD)(IconColorHighByte[Char]&0x0F)<<9)|(Char++));
				k++;
				j++;
			}			 
			y++;
		}
	}
	else if(MenuIndex == MENU2)
	{
		for(V=0; V<string[1];V++)
		{			
			//~Set RAtt_C~//
			OSD2SetRamAddr(Menu2StrAdr+(Menu2Width+4)*y+3);
			OSD2SetRamData(((0x0000+HVScale)<<6)|(Menu2Width));	
			OSD2SetRamAddr(Menu2StrAdr+(Menu2Width+4)*y+x+4);
			//~Stuff Strings~//
			j=0;   
			k=x;
			while((k<Menu2Width)&&(j<string[0]))
			{
				if(Color)
					OSD2SetRamData(0x0000|((uWORD)(cBlink)<<13)|((uWORD)(Color&0x0F)<<9)|(Char++));
				else
					OSD2SetRamData(0x0000|((uWORD)(cBlink)<<13)|((uWORD)(IconColorHighByte[Char]&0x0F)<<9)|(Char++));
				k++;
				j++;
			}			 
			y++;
		}
	}
}
#endif //ICON4BP
void OSD2ClearMenu(uCHAR MenuIndex)
{

	uCHAR i; 
	if(MenuIndex == MENU1)
	{	
		for(i=0; i<Menu1Height; i++)
		{
			OSD2SetRamAddr(Menu1StrAdr+(Menu1Width+4)*i);
			//~Set RAtt_V~//
			if(i==0)
				OSD2SetRamData(0x4000|Menu1StartY); 
		 	else
				OSD2SetRamData(0xE001);
			//~Set RAtt_H~//
			OSD2SetRamData(0x6000|Menu1StartX);
			//~Set RAtt_A~//
			OSD2SetRamData(0xD000|((uWORD)(0&0xF0)<<4));
			//~Set RAtt_C~//
			OSD2SetRamData(0x0000|(Menu1Width));  	
			m_wBuff[0]=0;
			while(m_wBuff[0]<Menu1Width)
			{
				OSD2SetRamData(0x0000|((uWORD)(0&0x0F)<<9)|(OSD2SPACE));//font167 = blank
				m_wBuff[0]++;
			} 
		}
	}
	else if(MenuIndex == MENU2)
	{	
		for(i=0; i<Menu2Height; i++)
		{
			OSD2SetRamAddr(Menu2StrAdr+(Menu2Width+4)*i);
			//~Set RAtt_V~//
			if(i==0)
				OSD2SetRamData(0x4000|Menu2StartY); 
		 	else
				OSD2SetRamData(0xE001);
			//~Set RAtt_H~//
			OSD2SetRamData(0x6000|Menu2StartX);
			//~Set RAtt_A~//
			OSD2SetRamData(0xD000|((uWORD)(0&0xF0)<<4));
			//~Set RAtt_C~//
			OSD2SetRamData(0x0000|(Menu2Width));  	
			m_wBuff[0]=0;
			while(m_wBuff[0]<Menu2Width)
			{
				OSD2SetRamData(0x0000|((uWORD)(0&0x0F)<<9)|(0x00));
				m_wBuff[0]++;
			} 
		}
	}	   		
}

/*void OSD2PatternFillCtrl(uCHAR Enable,uWORD HStartPos, uWORD HEndPos, uWORD VStartPos, uWORD VEndPos)
{
	IC_WritByte(TWIC_P0,OSD_CFG_INDEX,OSD_PT_CTRL);		
	OSD2CfgWr(OSD_PT_CTRL,IC_ReadByte(TWIC_P0,OSD_CFG_DATA)&((Enable<<7)|0x7F));
	OSD2CfgWr(OSD_PT_HSTART_LSB,HStartPos&0x00FF);
	OSD2CfgWr(OSD_PT_HSTART_MSB,HStartPos>>8);
	OSD2CfgWr(OSD_PT_VSTART_LSB,VStartPos&0x00FF);
	OSD2CfgWr(OSD_PT_VSTART_MSB,VStartPos>>8);
	OSD2CfgWr(OSD_PT_HEND_LSB,HEndPos&0x00FF);
	OSD2CfgWr(OSD_PT_HEND_MSB,HEndPos>>8);
	OSD2CfgWr(OSD_PT_VEND_LSB,VEndPos&0x00FF);
	OSD2CfgWr(OSD_PT_VEND_MSB,VEndPos>>8);
} */

void OSD2Menu1Enable(void)
{
	OSD2CfgWr(OSD_MENU1_ENABLE,0x80);
	IC_WritByte(TWIC_P0,0xE2,0x11);
}
/*void OSD2Menu2Enable(void)
{
	OSD2CfgWr(OSD_MENU2_ENABLE,0x80);
	IC_WritByte(TWIC_P0,0xE2,0x11);
} */
void OSD2Enable(void)
{
	OSD2CfgWr(OSD_CTRL,0x80);
	IC_WritByte(TWIC_P0,0xE2,0x11);
}

void OSD2Disable(void)
{
	OSD2CfgWr(OSD_CTRL,0x00);
}	

#ifdef OSD2_DRAWBASIC
void OSD2ShowFuncBtn1(uCHAR xPos,uCHAR yPos,uCHAR uSize,uCHAR bColor)
{
	uCHAR i;

	OSD2Show4BPIcon(IconFuncBtnUnit1,xPos,yPos,0,0,0,1,bColor);
	for(i = 0; i < uSize; i++)
		OSD2Show4BPIcon(IconFuncBtnUnit2,xPos+i+1,yPos,0,0,0,1,bColor);
	OSD2Show4BPIcon(IconFuncBtnUnit3,xPos+uSize+1,yPos,0,0,0,1,bColor);
	
}
#endif
#ifdef OSD2_ALLFONT
void OSD2ShowAllFont(void)
{
	uCHAR i,j;
	uCHAR OSD2FONT[3];
	for(j = 0; j < 17; j++)
	{
		for(i = 0; i<10; i++)
		{
	        OSD2FONT[0] = 1;
			OSD2FONT[1] = 1;
			OSD2FONT[2] = i+10*j;
			OSD2Show4BPIcon(OSD2FONT,1+i,1+j,0,0,0,1,OSD2BGNDColor_TRANSPRENT);
		}
	}
}
#endif




⌨️ 快捷键说明

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