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

📄 osd.c

📁 三菱M35055的OSD芯片驱动代码,可以直接在电视显示字符,带字库
💻 C
字号:

extern BOOL PIN_M35055_CS,PIN_M35055_DAT,PIN_M35055_CLK;
extern void Start_MonoTimer(void);
static void Write_M35055_Word(WORD val,WORD addr);

WORD code OSD_FONT[] = {OSDCHAR_0, OSDCHAR_1, OSDCHAR_2, OSDCHAR_3, OSDCHAR_4, OSDCHAR_5, OSDCHAR_6, OSDCHAR_7, OSDCHAR_8, OSDCHAR_9};

//---------------------------------------------------------------------------
//  Osd_Initialize
//---------------------------------------------------------------------------
void OSD_Initialize(void){
	
	Write_M35055_Word(0x2000,0x00f8);//addr:F8,bit0,bit1:Matrix_outline size
									 //bit 2,use internal sync
									 //bit 5,open display clock
									 //bit 6,close display
	os_wait2(K_TMO,3); 
	
	Write_M35055_Word(0x0090,0x00f1);//set the horization position
	
	Write_M35055_Word(0x004e,0x00f2);//set the vertical position
	
	Write_M35055_Word(0x0108,0x00f6);//bit 8:32line*7
									 //bit 4~7,set the color of the blackground :white
					 				 //bit 3,level 1
									 //work in superimpose

	Write_M35055_Word(0x00ff,0x00f7);//forbidden cursior
				 
	Write_M35055_Word(0x2040,0x00f8);//enable display
	
}	

//---------------------------------------------------------------------------
//  Osd_Shutdown
//---------------------------------------------------------------------------
void OSD_Shutdown(BOOL bonoff){

	if (bonoff){
		Write_M35055_Word(0x0040,0x00f8);//0PEN level
			
	}
	else{
		Write_M35055_Word(0x2040,0x00f8);	//close level
	}
}
//--------------------------------------------------------------------------
// Write_OSD_2Digits
// addr(0-11)
//--------------------------------------------------------------------------
void Write_OSDVOL_2Digits(char value, BOOL bSign){

	if (bSign){
		if (value > 0){
			Write_M35055_Word(OSDCHAR__, ADDR_VOLUME);
		}
		else if (value < 0){
			Write_M35055_Word(OSDCHAR_MINUS, ADDR_VOLUME); 
			value = - value;	// 
		}
		else {
			Write_M35055_Word(OSDCHAR__, ADDR_VOLUME);
		}

		Write_M35055_Word(OSD_FONT[value / 10], ADDR_VOLUME+1);
		Write_M35055_Word(OSD_FONT[value % 10], ADDR_VOLUME+2);
	}
	else {
		Write_M35055_Word(OSD_FONT[value / 10], ADDR_VOLUME);
		Write_M35055_Word(OSD_FONT[value % 10], ADDR_VOLUME + 1);
	}
}
//--------------------------------------------------------------------------
// Write_OSD_2Digits
// addr(0-11)
//--------------------------------------------------------------------------
void Write_OSDDLY_2Digits(char value, BOOL bSign){

	if (bSign){
		if (value > 0){
			Write_M35055_Word(OSDCHAR__, ADDR_DLYCNT);
		}
		else if (value < 0){
			Write_M35055_Word(OSDCHAR_MINUS, ADDR_DLYCNT); 
			value = - value;	// 
		}
		else {
			Write_M35055_Word(OSDCHAR__, ADDR_DLYCNT);
		}

		Write_M35055_Word(OSD_FONT[value / 10], ADDR_DLYCNT+1);
		Write_M35055_Word(OSD_FONT[value % 10], ADDR_DLYCNT+2);
	}
	else {
		Write_M35055_Word(OSD_FONT[value / 10], ADDR_DLYCNT);
		Write_M35055_Word(OSD_FONT[value % 10], ADDR_DLYCNT + 1);
	}
}
//---------------------------------------------------------------------------
//  Write_OSD_Message
//---------------------------------------------------------------------------
void Write_OSD_Message(WORD const code *buf, WORD addr){
BYTE i=0;

	while (*buf != OSDCHAR_END){	
		Write_M35055_Word(*buf,addr + i);
		buf ++;
		i++;
	}
	Start_MonoTimer();
}



#define DELAY() {_nop_(); __nop_();_nop_();_nop_();}

//-------------------------------------------------------------------------
// Name: Write_M35055_Word
// Description: This function Write 2 bytes to M35055
// Arguments: 
// Return value: none
//-------------------------------------------------------------------------
static void Write_M35055_Word(WORD val,WORD addr){
register BYTE i;

	PIN_M35055_CLK = 1;
	
	PIN_M35055_CS = 0;
	
	for(i=0;i<16;i++)
	{

		if(addr & 0x0001)
			PIN_M35055_DAT = 1;
		else
			PIN_M35055_DAT = 0;

		PIN_M35055_CLK = 0;
		PIN_M35055_CLK = 1;
		addr >>= 1;
	}
	for(i=0;i<16;i++)
	{

		if(val & 0x0001)
			PIN_M35055_DAT = 1;
		else
			PIN_M35055_DAT = 0;

		PIN_M35055_CLK = 0;
		PIN_M35055_CLK = 1;
		val >>= 1;
	}
	DELAY();
	
	PIN_M35055_CS = 1;
}





⌨️ 快捷键说明

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