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

📄 osd1_initial.c

📁 T108 LCD屏的DEMO源代码!需要的就下吧
💻 C
字号:
//---------------------------------------------------------------------------
// Terawins Inc. Company Confidential Strictly Private
//
// $Archive: OSD1CSL.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 "OSD1_Define.h"
#include "OSD1CSL.h"
//#include "ICON2BP12X18.H"
//#include "Icon4BP12x12.H"
//#include "Icon4BP12x122.H"
//#include "Icon4BP12x123.H"
#include "FONT0_Font12W18H.h"
#include "UIDraw.h"

#define ICON1BP

void OSD1Init(void);
void OSD1LoadColor(void);
void OSD1Load4BPFont(void);
void OSD1Load2BPFont(void);
void OSD1Load1BPFont(void);

code unsigned char Icon1BPColorTable[]={
0x00,0x00,0x1F,0x00,0x00,0xF8,0xE0,0x07,0x80,0xB7,0xA0,0x8D,0x80,0x53,0xA6,0x33,
0xA0,0x07,0xC4,0x24,0xB9,0x10,0x1E,0x00,0x52,0x29,0x46,0x33,0xE0,0x05,0x44,0x24
};
void OSD1InItClearMenu(uCHAR MenuIndex)
{
#ifdef T128
	uCHAR i; 
	if(MenuIndex == MENU1)
	{	
		for(i=0; i<Menu1Height; i++)
		{
			OSD1SetRamAddr(Menu1StrAdr+(Menu1Width+4)*i);
			//~Set RAtt_V~//
			if(i==0)
				OSD1SetRamData(0x4000|Menu1StartY); 
		 	else
				OSD1SetRamData(0xE001);
			//~Set RAtt_H~//
			OSD1SetRamData(0x6000|Menu1StartX);
			//~Set RAtt_A~//
			OSD1SetRamData(0xD000|0x0003);

			//~Set RAtt_C~//
			OSD1SetRamData(0x0000|(Menu1Width));  	
			m_wBuff[0]=0;
			while(m_wBuff[0]<Menu1Width)
			{
				OSD1SetRamData(0x0000|((uWORD)(0&0x0F)<<9)|(0));
				m_wBuff[0]++;
			} 
		}
	}
	else if(MenuIndex == MENU2)
	{	
		for(i=0; i<Menu2Height; i++)
		{
			OSD1SetRamAddr(Menu2StrAdr+(Menu2Width+4)*i);
			//~Set RAtt_V~//
			if(i==0)
				OSD1SetRamData(0x4000|Menu2StartY); 
		 	else
				OSD1SetRamData(0xE001);
			//~Set RAtt_H~//
			OSD1SetRamData(0x6000|Menu2StartX);
			//~Set RAtt_A~//
			OSD1SetRamData(0xD000|0x0003);
			//~Set RAtt_C~//
			OSD1SetRamData(0x0000|(Menu2Width));  	
			m_wBuff[0]=0;
			while(m_wBuff[0]<Menu2Width)
			{
				OSD1SetRamData(0x0000|((uWORD)(0&0x0F)<<9)|(0));
				m_wBuff[0]++;
			} 
		}
	}
#else 
	uCHAR i=0; 
	if(MenuIndex == MENU1)
	{	
		for(i=0; i<Menu1Height; i++)
		{ 	
			OSD1SetRamAddr(Menu1StrAdr+(Menu1Width+4)*i);
			ICWr_Burst_A(OSD1_RAM_DL);
			//~Set RAtt_V~//
			if(i==0)
				OSDSetRamDataBuest(0x4000|Menu1StartY); 
		 	else
				OSDSetRamDataBuest(0xE001);
			//~Set RAtt_H~//
			OSDSetRamDataBuest(0x6000|Menu1StartX);
			//~Set RAtt_A~//
			OSDSetRamDataBuest(0xD000|0x0003);

			//~Set RAtt_C~//
			OSDSetRamDataBuest(0x0000|(Menu1Width));  	
			m_wBuff[0]=0;
			while(m_wBuff[0]<Menu1Width)
			{
				OSDSetRamDataBuest(0x0000|((uWORD)(0&0x04)<<9)|(0));
				m_wBuff[0]++;
			} 
			ICWr_Burst_P();
		} 
		
	}
	else if(MenuIndex == MENU2)
	{
		
		for(i=0; i<Menu2Height; i++)
		{
			OSD1SetRamAddr(Menu2StrAdr+(Menu2Width+4)*i);
			ICWr_Burst_A(OSD1_RAM_DL);
			//~Set RAtt_V~//
			if(i==0)
				OSDSetRamDataBuest(0x4000|Menu2StartY); 
		 	else
				OSDSetRamDataBuest(0xE001);
			//~Set RAtt_H~//
			OSDSetRamDataBuest(0x6000|Menu2StartX);
			//~Set RAtt_A~//
			OSDSetRamDataBuest(0xD000|0x0003);
			//~Set RAtt_C~//
			OSDSetRamDataBuest(0x0000|(Menu2Width));  	
			m_wBuff[0]=0;
			while(m_wBuff[0]<Menu2Width)
			{
				OSDSetRamDataBuest(0x0000|((uWORD)(0&0x0F)<<9)|(0));
				m_wBuff[0]++;
			} 
			ICWr_Burst_P();
		}	
	    
	}
#endif	   	
	
}
void OSD1Init(void)
{
	//~Set Font Size.~//
	if(FontWidth==OSD1FONTWIDTH12)
		OSD1CfgWr(OSD_CHAR_FONT_SIZE,(0xC0)|(0x00)|FontHeight);
	if(FontWidth==OSD1FONTWIDTH16)
		OSD1CfgWr(OSD_CHAR_FONT_SIZE,(0xC0)|(0x20)|FontHeight);
	//~Set Char2BP Font Index Base.~//
	OSD1CfgWr(OSD_CHAR2BP_FONT_INDEX,Font2BPIndexStr>>1);
	//~Set Char4BP Font Index Base.~//
	OSD1CfgWr(OSD_CHAR4BP_FONT_INDEX,Font4BPIndexStr>>1);
	//~Set Char2BP Font Memory Base Address.~//
	OSD1CfgWr(OSD_CHAR2BP_FONT_MEMADD_L,Font2BPDataStrAdr&0x00FF);
	OSD1CfgWr(OSD_CHAR2BP_FONT_MEMADD_M,Font2BPDataStrAdr>>8);
	//~Set Char4BP Font Memory Base Address.~//
	OSD1CfgWr(OSD_CHAR4BP_FONT_MEMADD_L,Font4BPDataStrAdr&0x00FF);
	OSD1CfgWr(OSD_CHAR4BP_FONT_MEMADD_M,Font4BPDataStrAdr>>8);
	//~Set Globa Alpha Blending Control.~//
	OSD1CfgWr(OSD_GLOBAL_ALPHA_BLENDING,0x10);
	//~Set Border/Shadow/Char1BP Color High Bits Offset.~//
	OSD1CfgWr(OSD_BSH_COLOR_HIGHBIT,0x20);
	//~Set Build-in Rom Font Index Base//
	OSD1CfgWr(OSD_FONTROM_INDEX,ROMFONTIndexStr>>1);
	//~Clear Ram	~//
	OSD1ClearSRam();
	//Clear CFG
	IC_WritByte(TWIC_P0,OSD1_CFG_INDEX,0x09);
 	for(m_wBuff[0] =0;m_wBuff[0]<18;m_wBuff[0]++)
	{														
		IC_WritByte(TWIC_P0,OSD1_CFG_DATA,0);
	}							   

	//~Menue-1 Setting. ~//
	OSD1CfgWr(OSD_MENU1_ENABLE,0x00);
	OSD1CfgWr(OSD_MENU1_START_ADR_L,Menu1StrAdr&0x00FF);
	OSD1CfgWr(OSD_MENU1_START_ADR_M,Menu1StrAdr>>8);
	OSD1CfgWr(OSD_MENU1_END_ADR_L,Menu1EndAdr&0x00FF);
	OSD1CfgWr(OSD_MENU1_END_ADR_M,Menu1EndAdr>>8);

	//~Menue-2 Setting. ~//
	OSD1CfgWr(OSD_MENU2_ENABLE,0x00);
	OSD1CfgWr(OSD_MENU2_START_ADR_L,Menu2StrAdr&0x00FF);
	OSD1CfgWr(OSD_MENU2_START_ADR_M,Menu2StrAdr>>8);
	OSD1CfgWr(OSD_MENU2_END_ADR_L,Menu2EndAdr&0x00FF);
	OSD1CfgWr(OSD_MENU2_END_ADR_M,Menu2EndAdr>>8);
			  

	//~Load Color Table.~//
#ifdef ICON1BP
	OSD1Load1BPFont();
	OSD1LoadColor();
#endif


#ifdef ICON2BP
	OSD1LoadColor();
 	FontsStart = font0_000;
 	OSD1Load2BPFont();
#endif //ICON2BP

#ifdef ICON4BP
	OSD1LoadColor(); 
 	FontsStart = font4BP0_000;
	OSD1Load4BPFont();
//	OSD1Load4BPFont2();
#endif //ICON4BP

		
	OSD1InItClearMenu(MENU1);
	OSD1InItClearMenu(MENU2);


}
void OSD1LoadColor()
{
	
	//~ Load Main Color Look Up Table.~//
#ifdef ICON4BP
	OSD1CfgWr(OSD_COLOR_LUT_ADR_PORT,0x00);
	IC_WritByte(TWIC_P0,OSD1_CFG_INDEX,0x09);
#ifdef T128
 	for(m_wBuff[0] =0;m_wBuff[0]<COLORTBLNUM;m_wBuff[0]++)
	{
		IC_WritByte(TWIC_P0,OSD1_CFG_DATA,Icon4BPColorTable[m_wBuff[0]]);
	}
#else 
	ICWr_Burst_A(OSD1_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 //T128
	OSD1CfgWr(OSD_COLOR_LUT_ADR_PORT,0x80);
	IC_WritByte(TWIC_P0,OSD1_CFG_INDEX,0x09);
	for(m_wBuff[0]=0;m_wBuff[0]<18;m_wBuff[0]++)
	{
		IC_WritByte(TWIC_P0,OSD1_CFG_DATA,0);
		IC_WritByte(TWIC_P0,OSD1_CFG_DATA,0);
		IC_WritByte(TWIC_P0,OSD1_CFG_DATA,0);
	}
#endif //ICON4BP
#ifdef ICON2BP
	//~Load Char2BP Color Remap LUT.~//
	OSD1CfgWr(OSD_COLOR_LUT_ADR_PORT,0x80);
	IC_WritByte(TWIC_P0,OSD1_CFG_INDEX,0x09);
	for(m_wBuff[0]=0;m_wBuff[0]<16;m_wBuff[0]++)
	{
		IC_WritByte(TWIC_P0,OSD1_CFG_DATA,IndexColorTable[m_wBuff[0]*3+2]);
		IC_WritByte(TWIC_P0,OSD1_CFG_DATA,IndexColorTable[m_wBuff[0]*3+1]);
		IC_WritByte(TWIC_P0,OSD1_CFG_DATA,IndexColorTable[m_wBuff[0]*3]);
	}
#endif //ICON2BP
#ifdef ICON1BP
	OSD1CfgWr(OSD_COLOR_LUT_ADR_PORT,0x00);
	IC_WritByte(TWIC_P0,OSD1_CFG_INDEX,0x09);
#ifdef T128
 	for(m_wBuff[0] =0;m_wBuff[0]<COLORTBLNUM;m_wBuff[0]++)
	{
		IC_WritByte(TWIC_P0,OSD1_CFG_DATA,Icon1BPColorTable[m_wBuff[0]]);
	}
#else 
	ICWr_Burst_A(OSD1_CFG_DATA);
 	for(m_wBuff[0] =0;m_wBuff[0]<3212;m_wBuff[0]++)
	{
		ICWr_Burst_D(Icon1BPColorTable[m_wBuff[0]]);
	}
	ICWr_Burst_P();
#endif //T128
	OSD1CfgWr(OSD_COLOR_LUT_ADR_PORT,0x80);
	IC_WritByte(TWIC_P0,OSD1_CFG_INDEX,0x09);
	for(m_wBuff[0]=0;m_wBuff[0]<18;m_wBuff[0]++)
	{
		IC_WritByte(TWIC_P0,OSD1_CFG_DATA,0);
		IC_WritByte(TWIC_P0,OSD1_CFG_DATA,0);
		IC_WritByte(TWIC_P0,OSD1_CFG_DATA,0);
	}
#endif //ICON1BP
  
}

#ifdef ICON1BP

void OSD1Load1BPFont(void)
{
	unsigned int i,j,k,l;
	OSD1SetRamAddr(Font1BPDataStrAdr);
  	ICWr_Burst_A(OSD1_RAM_DL);
	if(FontWidth==OSD1FONTWIDTH12)
	{
	 	for(j=0;j<Font1BPNum;j++)
		{
			for(i=0; i<(FontHeight); i++)
			{
				k = i<<1;
				l = (i+1)<<1;
				m_wBuff[1] = (uWORD)(All1BPFonts[j][k])|((uWORD)(All1BPFonts[j][k+1])<<8);
				m_wBuff[2] = (uWORD)(All1BPFonts[j][l])|((uWORD)(All1BPFonts[j][l+1])<<8);
				switch(i&0x03)
				{
					case 0:
						m_wBuff[0]=	m_wBuff[1] |(m_wBuff[2]>>12);
						ICWr_Burst_D(m_wBuff[0]&0x00FF);
						ICWr_Burst_D(m_wBuff[0]>>8);
					break;
					case 1:
						m_wBuff[0]=	(m_wBuff[1] <<4)|(m_wBuff[2] >>8);
						ICWr_Burst_D(m_wBuff[0]&0x00FF);
						ICWr_Burst_D(m_wBuff[0]>>8);
					break;
					case 2:
						m_wBuff[0]=	(m_wBuff[1] <<8)|(m_wBuff[2]>>4);
						ICWr_Burst_D(m_wBuff[0]&0x00FF);
						ICWr_Burst_D(m_wBuff[0]>>8);
					break;
					case 3:
						//Do nothing
					break;
				}
			}
		}
	}
	ICWr_Burst_P();
}	
#endif //ICON1BP

#ifdef ICON2BP	
void OSD1Load2BPFont(void)
{
	OSD1SetRamAddr(Font2BPDataStrAdr);	    	
	if(FontWidth==OSD1FONTWIDTH12)
	{
		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,OSD1_RAM_DL,FontsStart[m_wBuff[2]+1]);
				IC_WritByte(TWIC_P0,OSD1_RAM_DL,FontsStart[m_wBuff[2]]);
				IC_WritByte(TWIC_P0,OSD1_RAM_DL,FontsStart[m_wBuff[2]+3]);
				IC_WritByte(TWIC_P0,OSD1_RAM_DL,FontsStart[m_wBuff[2]+2]);
				IC_WritByte(TWIC_P0,OSD1_RAM_DL,FontsStart[m_wBuff[2]+5]);
				IC_WritByte(TWIC_P0,OSD1_RAM_DL,FontsStart[m_wBuff[2]+4]);
			}
		}
	}			
}				 
#endif //ICON2BP 

#ifdef ICON4BP
void OSD1Load4BPFont(void)
{
	OSD1SetRamAddr(Font4BPDataStrAdr);  	
	if(FontWidth==OSD1FONTWIDTH12)
	{
#ifdef T128
		for(m_wBuff[0]=0;m_wBuff[0]<Font4BPNum;m_wBuff[0]++)
		{
			for(m_wBuff[1]=0; m_wBuff[1]<(FontHeight); m_wBuff[1]++)
			{

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

				m_wBuff[2] = (m_wBuff[0]* FontHeight+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(FontWidth==OSD1FONTWIDTH16)
	{
#ifdef T128
		for(m_wBuff[0]=0;m_wBuff[0]<Font4BPNum;m_wBuff[0]++)
		{
			for(m_wBuff[1]=0; m_wBuff[1]<(FontHeight); m_wBuff[1]++)
			{

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

				m_wBuff[2] = (m_wBuff[0]* FontHeight+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

⌨️ 快捷键说明

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