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

📄 osd2_cls.c

📁 厂家提供的OSD芯片T108的驱动程序,驱动模拟屏
💻 C
字号:
#include <reg51.h>
#include "common.h"
#include "Icon4BP12x12.h"
#include "OSD_def.h"
#include "OSD2_CLS.h"

void OSD2ClearSRam(void)
{
	OSD2CfgWr(OSD_BLK_WRT_LSB,0x00);
	OSD2CfgWr(OSD_BLK_WRT_MSB,0x00);
	OSD2CfgWr(OSD_BLK_WRT_SADD_LSB,0x00);
	OSD2CfgWr(OSD_BLK_WRT_SADD_MSB,0x00);
	OSD2CfgWr(OSD_BLK_WRT_LENGTH,0xFF);
	OSD2CfgWr(OSD_BLK_WRT_CTR,0x9F);
}

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(OSD2Menu1StrAdr+(OSD2Menu1Width+4)*y+3);
			if(bColor < 4)
			 	OSD2SetRamData((((0x0000+HVScale)<<6)&0x03C0)|((0x0000+OSD2Menu1Width)&0x003F));
			else
			 	OSD2SetRamData((((0x0000+HVScale)<<6)&0x03C0)|((0x0000+OSD2Menu1Width)&0x003F)|0x0400);
			
			OSD2SetRamAddr(OSD2Menu1StrAdr+(OSD2Menu1Width+4)*y+x+4);
			//~Stuff Strings~//
			j=0;   
			k=x;
			while((k<OSD2Menu1Width)&&(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++;
		}
	}
}

void OSD2ClearMenu(uCHAR MenuIndex)
{
	uCHAR i; 
	if(MenuIndex == MENU1)
	{	
		for(i=0; i<OSD2Menu1Height; i++)
		{
			OSD2SetRamAddr(OSD2Menu1StrAdr+(OSD2Menu1Width+4)*i);
			//~Set RAtt_V~//
			if(i==0)
				OSD2SetRamData(0x4000|OSD2Menu1StartY); 
		 	else
				OSD2SetRamData(0xE001);
			//~Set RAtt_H~//
			OSD2SetRamData(0x6000|(OSD2Menu1StartX));
			//~Set RAtt_A~//
			OSD2SetRamData(0xD000|((uWORD)(0&0xF0)<<4));
			//~Set RAtt_C~//
			OSD2SetRamData(0x0000|(OSD2Menu1Width));  	
			m_wBuff[0]=0;
			while(m_wBuff[0]<OSD2Menu1Width)
			{
				OSD2SetRamData(0x0000|((uWORD)(0&0x0F)<<9)|(OSD2Blank));
				m_wBuff[0]++;
			} 
		}
	}
	else if(MenuIndex == MENU2)
	{	
		for(i=0; i<OSD2Menu2Height; i++)
		{
			OSD2SetRamAddr(OSD2Menu2StrAdr+(OSD2Menu2Width+4)*i);
			//~Set RAtt_V~//
			if(i==0)
				OSD2SetRamData(0x4000|OSD2Menu2StartY); 
		 	else
				OSD2SetRamData(0xE001);
			//~Set RAtt_H~//
			OSD2SetRamData(0x6000|OSD2Menu2StartX);
			//~Set RAtt_A~//
			OSD2SetRamData(0xD000|((uWORD)(0&0xF0)<<4));
			//~Set RAtt_C~//
			OSD2SetRamData(0x0000|(OSD2Menu2Width));  	
			m_wBuff[0]=0;
			while(m_wBuff[0]<OSD2Menu2Width)
			{
				OSD2SetRamData(0x0000|((uWORD)(0&0x0F)<<9)|(OSD2Blank));
				m_wBuff[0]++;
			} 
		}
	}	  
}

void OSD2Disp(uCHAR MENU1disp, uCHAR MENU2disp)
{
	if(MENU1disp&0xF0)
		OSD2CfgWr(OSD_MENU1_ENABLE,0x80);
	else
		OSD2CfgWr(OSD_MENU1_ENABLE,0x00);

	if(MENU2disp&0xF0)
		OSD2CfgWr(OSD_MENU2_ENABLE,0x80);
	else
		OSD2CfgWr(OSD_MENU2_ENABLE,0x00);

	if((MENU1disp | MENU2disp)&0xF0)
		OSD2CfgWr(OSD_CTRL,0x80);
	else
		OSD2CfgWr(OSD_CTRL,0x00);

	I2CWriteByte(TW803_P0,0xE2,0x11);
}


⌨️ 快捷键说明

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