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

📄 osd2_initial.c

📁 T108 LCD屏的DEMO源代码!需要的就下吧
💻 C
字号:
//---------------------------------------------------------------------------
// Terawins Inc. Company Confidential Strictly Private
//
// $Archive: OSD2CSL.c $
// $Revision: 0.01 $
// $Author: Kevin Hsu $
// $Date: 2006/10/12 $
//
// --------------------------------------------------------------------------
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// --------------------------------------------------------------------------
// Copyright 2002(c) Terawins Inc.
// --------------------------------------------------------------------------
#include "Common.h"
#include "Global.h"
#include "ICControl.h"	
#include "System.h"
#include "TWICreg.h"
#include "OSD2CSL.h"
#include "OSD2_Define.h"
#include "Icon4BP12x12.H"
#include "UIDraw.h"
void OSD2Init(void);
void OSD2LoadColor(void);
void OSD2Load4BPFont(void);
void OSD2Load2BPFont(void);
void OSD2Load1BPFont(void);


void OSD2InItClearMenu(uCHAR MenuIndex)
{
#ifdef T128
	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|0x0003);

			//~Set RAtt_C~//
			OSD2SetRamData(0x0000|(Menu1Width));  	
			m_wBuff[0]=0;
			while(m_wBuff[0]<Menu1Width)
			{
				OSD2SetRamData(0x0000|((uWORD)(0&0x0F)<<9)|(12));
				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|0x0003);
			//~Set RAtt_C~//
			OSD2SetRamData(0x0000|(Menu2Width));  	
			m_wBuff[0]=0;
			while(m_wBuff[0]<Menu2Width)
			{
				OSD2SetRamData(0x0000|((uWORD)(0&0x0F)<<9)|(35));
				m_wBuff[0]++;
			} 
		}
	}
#else 

	uCHAR i=0; 
	if(MenuIndex == MENU1)
	{	OSD2SetRamAddr(OSD2Menu1StrAdr+(OSD2Menu1Width+4)*i);
		ICWr_Burst_A(OSD2_RAM_DL);
		for(i=0; i<OSD2Menu1Height; i++)
		{ 	
			//~Set RAtt_V~//
			if(i==0)
				OSDSetRamDataBuest(0x4000|OSD2Menu1StartY); 
		 	else
				OSDSetRamDataBuest(0xE001);
			//~Set RAtt_H~//
			OSDSetRamDataBuest(0x6000|OSD2Menu1StartX);
			//~Set RAtt_A~//
			OSDSetRamDataBuest(0xD000|0x0003);

			//~Set RAtt_C~//
			OSDSetRamDataBuest(0x0000|(OSD2Menu1Width));  	
			m_wBuff[0]=0;
			while(m_wBuff[0]<OSD2Menu1Width)
			{
				OSDSetRamDataBuest(0x0000|((uWORD)(0&0x0F)<<9)|(122));
				m_wBuff[0]++;
			} 
			
		} 
		ICWr_Burst_P();
	}
	else if(MenuIndex == MENU2)
	{
		OSD2SetRamAddr(OSD2Menu2StrAdr+(OSD2Menu2Width+4)*i);
		ICWr_Burst_A(OSD2_RAM_DL);
		for(i=0; i<OSD2Menu2Height; i++)
		{
			
			//~Set RAtt_V~//
			if(i==0)
				OSDSetRamDataBuest(0x4000|OSD2Menu2StartY); 
		 	else
				OSDSetRamDataBuest(0xE001);
			//~Set RAtt_H~//
			OSDSetRamDataBuest(0x6000|OSD2Menu2StartX);
			//~Set RAtt_A~//
			OSDSetRamDataBuest(0xD000|0x0003);
			//~Set RAtt_C~//
			OSDSetRamDataBuest(0x0000|(OSD2Menu2Width));  	
			m_wBuff[0]=0;
			while(m_wBuff[0]<OSD2Menu2Width)
			{
				OSDSetRamDataBuest(0x0000|((uWORD)(0&0x0F)<<9)|(35));
				m_wBuff[0]++;
			} 
			
		}	
	    ICWr_Burst_P();
	}
#endif	   	
	
}
void OSD2Init(void)
{
	//~Set Font Size.~//
	if(OSD2FontWidth==OSD2FONTWIDTH12)
		OSD2CfgWr(OSD_CHAR_FONT_SIZE,(0xC0)|(0x00)|OSD2FontHeight);
	if(OSD2FontWidth==OSD2FONTWIDTH16)
		OSD2CfgWr(OSD_CHAR_FONT_SIZE,(0xC0)|(0x20)|OSD2FontHeight);
	//~Set Char2BP Font Index Base.~//
	OSD2CfgWr(OSD_CHAR2BP_FONT_INDEX,OSD2Font2BPIndexStr>>1);
	//~Set Char4BP Font Index Base.~//
	OSD2CfgWr(OSD_CHAR4BP_FONT_INDEX,OSD2Font4BPIndexStr>>1);
	//~Set Char2BP Font Memory Base Address.~//
	OSD2CfgWr(OSD_CHAR2BP_FONT_MEMADD_L,OSD2Font2BPDataStrAdr&0x00FF);
	OSD2CfgWr(OSD_CHAR2BP_FONT_MEMADD_M,OSD2Font2BPDataStrAdr>>8);
	//~Set Char4BP Font Memory Base Address.~//
	OSD2CfgWr(OSD_CHAR4BP_FONT_MEMADD_L,OSD2Font4BPDataStrAdr&0x00FF);
	OSD2CfgWr(OSD_CHAR4BP_FONT_MEMADD_M,OSD2Font4BPDataStrAdr>>8);
	//~Set Globa Alpha Blending Control.~//
	OSD2CfgWr(OSD_GLOBAL_ALPHA_BLENDING,0x10);
	//~Set Border/Shadow/Char1BP Color High Bits Offset.~//
	OSD2CfgWr(OSD_BSH_COLOR_HIGHBIT,0x20);
	//~Set Build-in Rom Font Index Base//
	OSD2CfgWr(OSD_FONTROM_INDEX,OSD2ROMFONTIndexStr>>1);

	//~Clear Ram	~//
	OSD2CfgWr(0x40,0x00);
	OSD2CfgWr(0x41,0x00);
	OSD2CfgWr(0x42,0x00);
	OSD2CfgWr(0x43,0x00);
	OSD2CfgWr(0x44,0xFF);
	OSD2CfgWr(0x45,0x9f);
	//~Menue-1 Setting. ~//
	OSD2CfgWr(OSD_MENU1_ENABLE,0x00);
	OSD2CfgWr(OSD_MENU1_START_ADR_L,OSD2Menu1StrAdr&0x00FF);
	OSD2CfgWr(OSD_MENU1_START_ADR_M,OSD2Menu1StrAdr>>8);
	OSD2CfgWr(OSD_MENU1_END_ADR_L,OSD2Menu1EndAdr&0x00FF);
	OSD2CfgWr(OSD_MENU1_END_ADR_M,OSD2Menu1EndAdr>>8);
	OSD2InItClearMenu(MENU1);
	//~Menue-2 Setting. ~//
	OSD2CfgWr(OSD_MENU2_ENABLE,0x00);
	OSD2CfgWr(OSD_MENU2_START_ADR_L,OSD2Menu2StrAdr&0x00FF);
	OSD2CfgWr(OSD_MENU2_START_ADR_M,OSD2Menu2StrAdr>>8);
	OSD2CfgWr(OSD_MENU2_END_ADR_L,OSD2Menu2EndAdr&0x00FF);
	OSD2CfgWr(OSD_MENU2_END_ADR_M,OSD2Menu2EndAdr>>8);
	OSD2InItClearMenu(MENU2);		  

 	OSD2ClearSRam();
	//~Load Color Table.~//
#ifdef ICON2BP
	OSD2LoadColor();
 	FontsStart = font0_000;
 	OSD2Load1BPFont();
#endif //ICON2BP
#ifdef ICON4BP
	OSD2LoadColor(); 
 	FontsStart = font4BP0_000;
	OSD2Load4BPFont();
#endif //ICON4BP
	IC_WritByte(TWIC_P0,OSD2_CFG_INDEX,0x09);
 	for(m_wBuff[0] =0;m_wBuff[0]<18;m_wBuff[0]++)
	{														
		IC_WritByte(TWIC_P0,OSD2_CFG_DATA,0);
	}		

//Fill pattern
/*	OSD2CfgWr(0x30,0x4B);
	OSD2CfgWr(0x31,0x80);
	OSD2CfgWr(0x32,6);
	OSD2CfgWr(0x33,12);
	OSD2CfgWr(0x35,00);
	OSD2CfgWr(0x38,0x0C);
	OSD2CfgWr(0x3C,0xE7);
	OSD2CfgWr(0x3E,0xE9);
	for(m_wBuff[1]=0; m_wBuff[1]<(FontHeight); m_wBuff[1]++)
	{				
		m_wBuff[2] = m_wBuff[1]*6;
		OSD2CfgWr(0x37,font4BP0_Pat[m_wBuff[2] ]);
		OSD2CfgWr(0x37,font4BP0_Pat[m_wBuff[2]+1]);
		OSD2CfgWr(0x37,font4BP0_Pat[m_wBuff[2]+2]);
		OSD2CfgWr(0x37,font4BP0_Pat[m_wBuff[2]+3]);
		OSD2CfgWr(0x37,font4BP0_Pat[m_wBuff[2]+4]);
		OSD2CfgWr(0x37,font4BP0_Pat[m_wBuff[2]+5]);
	}
*/

}
void OSD2LoadColor()
{
	
	//~ Load Main Color Look Up Table.~//
#ifdef ICON4BP
	OSD2CfgWr(OSD_COLOR_LUT_ADR_PORT,0x00);
	IC_WritByte(TWIC_P0,OSD2_CFG_INDEX,0x09);
#ifdef T128
 	for(m_wBuff[0] =0;m_wBuff[0]<COLORTBLNUM;m_wBuff[0]++)
	{
		IC_WritByte(TWIC_P0,OSD2_CFG_DATA,Icon4BPColorTable[m_wBuff[0]]);
	}
#else
	ICWr_Burst_A(OSD2_CFG_DATA);
 	for(m_wBuff[0] =0;m_wBuff[0]<COLORTBLNUM;m_wBuff[0]++)
	{
		ICWr_Burst_D(Icon4BPColorTable[m_wBuff[0]]);
	}
	ICWr_Burst_P();
#endif
	OSD2CfgWr(OSD_COLOR_LUT_ADR_PORT,0x80);
	IC_WritByte(TWIC_P0,OSD2_CFG_INDEX,0x09);
	for(m_wBuff[0]=0;m_wBuff[0]<18;m_wBuff[0]++)
	{
		IC_WritByte(TWIC_P0,OSD2_CFG_DATA,0);
		IC_WritByte(TWIC_P0,OSD2_CFG_DATA,0);
		IC_WritByte(TWIC_P0,OSD2_CFG_DATA,0);
	}
#endif //ICON4BP
#ifdef ICON2BP
	//~Load Char2BP Color Remap LUT.~//
	OSD2CfgWr(OSD_COLOR_LUT_ADR_PORT,0x80);
	IC_WritByte(TWIC_P0,OSD2_CFG_INDEX,0x09);
	for(m_wBuff[0]=0;m_wBuff[0]<16;m_wBuff[0]++)
	{
		IC_WritByte(TWIC_P0,OSD2_CFG_DATA,IndexColorTable[m_wBuff[0]*3+2]);
		IC_WritByte(TWIC_P0,OSD2_CFG_DATA,IndexColorTable[m_wBuff[0]*3+1]);
		IC_WritByte(TWIC_P0,OSD2_CFG_DATA,IndexColorTable[m_wBuff[0]*3]);
	}
#endif //ICON2BP
  
}
#ifdef ICON2BP	
void OSD2Load2BPFont(void)
{
	OSD2SetRamAddr(Font2BPDataStrAdr);	    	
	if(FontWidth==OSD2FONTWIDTH12)
	{
		for(m_wBuff[1]=0;m_wBuff[1]<Font2BPNum;m_wBuff[1]++)
		{
			for(m_wBuff[0]=0; m_wBuff[0]<(FontHeight); m_wBuff[0]+=2)
			{			   
				m_wBuff[2] = (m_wBuff[1]* FontHeight+m_wBuff[0])*3;
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2]+1]);
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2]]);
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2]+3]);
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2]+2]);
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2]+5]);
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2]+4]);
			}
		}
	}			
}				 
#endif //ICON2BP 

#ifdef ICON4BP
void OSD2Load4BPFont(void)
{
	OSD2SetRamAddr(OSD2Font4BPDataStrAdr);  	
	if(OSD2FontWidth==OSD2FONTWIDTH12)
	{
#ifdef T128
		for(m_wBuff[0]=0;m_wBuff[0]<OSD2Font4BPNum;m_wBuff[0]++)
		{
			for(m_wBuff[1]=0; m_wBuff[1]<(OSD2FontHeight); m_wBuff[1]++)
			{

				m_wBuff[2] = (m_wBuff[0]* OSD2FontHeight+m_wBuff[1])*6;
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +1]);
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2]]);
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +3]);
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +2]);
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +5]);
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +4]);	  
			}
		}
#else 
		ICWr_Burst_A(OSD2_RAM_DL);
		for(m_wBuff[0]=0;m_wBuff[0]<OSD2Font4BPNum;m_wBuff[0]++)
		{
			for(m_wBuff[1]=0; m_wBuff[1]<(OSD2FontHeight); m_wBuff[1]++)
			{

				m_wBuff[2] = (m_wBuff[0]* OSD2FontHeight+m_wBuff[1])*6;
				ICWr_Burst_D(FontsStart[m_wBuff[2] +1]);
				ICWr_Burst_D(FontsStart[m_wBuff[2]]);
				ICWr_Burst_D(FontsStart[m_wBuff[2] +3]);
				ICWr_Burst_D(FontsStart[m_wBuff[2] +2]);
				ICWr_Burst_D(FontsStart[m_wBuff[2] +5]);
				ICWr_Burst_D(FontsStart[m_wBuff[2] +4]);	  
			}
		}
		ICWr_Burst_P();
#endif
	}
	else if(OSD2FontWidth==OSD2FONTWIDTH16)
	{
#ifdef T128
		for(m_wBuff[0]=0;m_wBuff[0]<OSD2Font4BPNum;m_wBuff[0]++)
		{
			for(m_wBuff[1]=0; m_wBuff[1]<(OSD2FontHeight); m_wBuff[1]++)
			{

				m_wBuff[2] = (m_wBuff[0]* OSD2FontHeight+m_wBuff[1])*8;
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +1]);
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2]]);
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +3]);
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +2]);
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +5]);
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +4]);
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +7]);
				IC_WritByte(TWIC_P0,OSD2_RAM_DL,FontsStart[m_wBuff[2] +6]);
			}
		}
#else
		ICWr_Burst_A(OSD2_RAM_DL);
		for(m_wBuff[0]=0;m_wBuff[0]<OSD2Font4BPNum;m_wBuff[0]++)
		{
			for(m_wBuff[1]=0; m_wBuff[1]<(OSD2FontHeight); m_wBuff[1]++)
			{

				m_wBuff[2] = (m_wBuff[0]* OSD2FontHeight+m_wBuff[1])*8;
				ICWr_Burst_D(FontsStart[m_wBuff[2] +1]);
				ICWr_Burst_D(FontsStart[m_wBuff[2]]);
				ICWr_Burst_D(FontsStart[m_wBuff[2] +3]);
				ICWr_Burst_D(FontsStart[m_wBuff[2] +2]);
				ICWr_Burst_D(FontsStart[m_wBuff[2] +5]);
				ICWr_Burst_D(FontsStart[m_wBuff[2] +4]);
				ICWr_Burst_D(FontsStart[m_wBuff[2] +7]);
				ICWr_Burst_D(FontsStart[m_wBuff[2] +6]);
			}
		}
		ICWr_Burst_P();

#endif
	}	
 	
}

#endif //ICON4BP
/*void OSD2PatternFillInit(uCHAR code * pPattern,uCHAR ColorDepth, uCHAR Height, uCHAR Width)
{
	OSD2CfgWr(OSD_PT_CTRL,ColorDepth);
	OSD2CfgWr(OSD_PT_LUT_BASEADD,0x80);
	OSD2CfgWr(OSD_PT_HSIZE,Height);
	OSD2CfgWr(OSD_PT_VSIZE,Width);
	OSD2CfgWr(OSD_PT_ALPBL_CTRL,00);

	m_wBuff[2] = (Height*Width)/((ColorDepth&0x0C)>>2);
	OSD2CfgWr(OSD_PT_CTRL,(ColorDepth|0x01));
	for(m_wBuff[1]=0; m_wBuff[1]<m_wBuff[2]; m_wBuff[1]++)
	{	
		OSD2CfgWr(OSD_PT_RAM_WRITE_PORT,pPattern[m_wBuff[1]]);			
	}
} */

⌨️ 快捷键说明

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