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

📄 osd.c

📁 一个用于驱动TFT屏的驱动程序,使用IC:1828,program (无EEPROM 无IR,完整说明)IIC只写一个
💻 C
📖 第 1 页 / 共 2 页
字号:
//*********************************************************************
//               osd.c      OSD 设置文件
//               by hibernate  2005.9.29   
//      Copyright(c) ShenZhen Challenge Technology Co.,Ltd 2005
//remarks:本文件根据vxis原参考程序中"osd_vx1828"文件改写
//*********************************************************************
#include <intrins.h>
#include <stdio.h>

#include "vxis1828.h"
#include "config.h"	
#include "IIC_RW.h"

//函数说明
void osdDisplay(char pos,char numfont,char *fontcode);
void osdSwitch(char osd_en);
void osd_pos(char block,char posx,char posy);									// Set position of OSD Function
void osd_size(char block,char sizex,char sizey)	;								// Set Size of OSD Function
//void osd_bigfont(bit);
void osd_clear(char pos);														// Clear font of OSD Function
void clrScreen();																// Clear all fonts memory of OSD Function
void osd_madr(char block,char pos);												// Set block initial address in OSD Function  
void osd_BackColor_H(char block,char color);									// 加亮背景颜色
void osd_BackColor_N(char block,char color);									// 正常背景颜色
void osd_ForeColor_H(char block,char color);									// 加亮前景颜色
void osd_ForeColor_N(char block,char color);									// 正常前景颜色
void osd_pos_Highlight(char block,char xstart,char xend,char ystart,char yend);	// Set Start and End point of Highlight Section of OSD Function
void osd_pos_Blink(char block,char xstart,char xend,char ystart,char yend);		// Set Start and End point of Blink Section of OSD Function
void osd_alpha(char alpha);														// Set OSD alpha-blending Function
void osd_blink(char blink);														// Set OSD blinking rate Function
void adj_britclr(char kind,char value);

//********************************************
//函数:void osdDisplay()
//作用:osd显示
//参数:		pos	     => 8 bits , The 0-7bits address of the starting point
//	                     of the fontcodes.
//	        numfont  => 8 bits , Number of fontcode
//	        fontcode => 8 bits , A pointer of the fonts array to show
//Motion: 1、Show the fonts to the arbitrary position on screen
//********************************************
void osdDisplay(char pos,char numfont,char *fontcode)
{
	unsigned char i;

	write1828(cw1,0x10);
	for(i = 0;i<numfont;i++)
	{
		write1828(cw2,pos+i);
		write1828(cw3,fontcode[i]);
	}
}

//*************************************
//函数:void osdSwitch(char osd_en)
//作用: OSD的开关函数
//参数说明:osd_en	 => 8 bits , 低3位是有效,高5位要清0	其中: 0 => Disable; 1 => Enable
//	                     0 bit => OSD Bottom Block enable or not
//	                     1 bit => OSD Content Block enable or not
//	                     2 bit => OSD Title Block enable or not   
//remarks:Setup the three block of osd enable or not
//**************************************
void osdSwitch(char osd_en)
{
	char idata temp;
	
	osd_en = osd_en & 0x07;	     								 // 低3位是有效,高5位要清0
	temp = read1828(osd2);		 
	temp = temp & 0xf8;											 // 保持高5位(清低3位)
	temp = temp | osd_en;
	write1828(osd2,temp);
}


//*************************************
//函数:void osd_pos(char block,char posx,char posy)
//作用: 设置OSD块的位置(size)
//参数说明:  block	 => 8 bits , OSD块
// 			 posx	 => 8 bits , X方向的位置
//		     posy	 => 8 bits , Y方向的位置
//remarks:
//**************************************
void osd_pos(char block,char posx,char posy)
{
	switch(block)
	{
		case title:												// Setup position of Title Block
			write1828(osd9,posx);
			write1828(osd10,posy);
			
			break;

		case content:											// Setup position of Content Block
			write1828(osd16,posx);
			write1828(osd17,posy);
			break;

		case bottom:											// Setup position of Bottom Block
			write1828(osd30,posx);
			write1828(osd31,posy);
			break;

		default: break;
	}
}

//*************************************
//函数:void osd_size(char block,char sizex,char sizey)
//作用: 设置OSD块的大小(size)
//参数说明:  block	 => 8 bits , OSD块
// 			sizex	 => 8 bits , X方向的大小, 低6位是有效
//			     	 Value range => for small font:01h-26h
//			      		           for large font:01h-13h
//			sizey	 => 8 bits , Y方向的大小 ,低5位是有效
//			     	(Just for Content Block)
//			    	 Value range => for small font:01h-15h
//			      		   		 for large font:01h-0ah
//remarks:
//**************************************
void osd_size(char block,char sizex,char sizey)
{
	
	switch(block)
	{
	 	case title:												// Setup x size of Title Block
			write1828(osd4,sizex);
			break;

		case content:											// Setup x and y size of Content Block
			write1828(osd13,sizex);
			write1828(osd14,sizey);
			break;

		case bottom:											// Setup x size of Bottom Block
			write1828(osd28,sizex);
			break;
		default:
			break;
	}
}


//*************************************
//函数:void osd_clear(char pos)
//作用: Clear font of OSD 
//参数说明: 	pos	 => 8 bits , The 0-7bits address of the starting point
//	                     of the fontcodes.
//remarks:Clear 16 fonts of OSD from the starting point
//**************************************
void osd_clear(char pos)
{
	unsigned char i;

	write1828(cw1,0x10);

	for(i = 0;i<0x10;i++)
	{
		write1828(cw2,pos+i);
		write1828(cw3,0xc0);
	}
}

//*************************************
//函数:void osd_clrScreen()
//作用:Clear all fonts memory of OSD
//参数说明:
//remarks:
//**************************************
void clrScreen()
{
	char idata i;
	
	for (i=0;i <= 0x0f;i++)
		osd_clear(i*0x10);	
}

//*************************************
//函数:void osd_madr(char block,char pos)
//作用:设置OSD块的初始位置
//参数说明:   block	 => 8 bits , osd块
//  		  pos	 => 8 bits , osd块的初始位置
//remarks:title块的初始位置是默认的
//**************************************
void osd_madr(char block,char pos)
{
	switch(block)
	{
		case content:											// Setup position of Content Block
			write1828(osd15,pos);
			break;
		case bottom:											// Setup position of Bottom Block
			write1828(osd29,pos);
			break;
		default:
			break;
	}
}

//*************************************
//函数:void osd_BackColor_H(char block,char color)
//作用:设置OSD加亮背景颜色
//参数说明:	  block	 => 8 bits , osd块
//   		  color	 => 8 bits , 低4位是有效
//Function: OSD Displaying Color=(Video Color*OSD_ALPHA+OSD Color*(16-OSD_ALPHA))/16
//**************************************
void osd_BackColor_H(char block,char color)
{
	char idata addr,temp;
		
	switch(block)
	{
		case title:												// Setup position of Title Block
			addr = osd12;			
			break;
		case content:											// Setup position of Content Block
			addr = osd27;
			break;
		case bottom:											// Setup position of Bottom Block
			addr = osd37;	
			break;
		default:
			break;
	}

	temp = read1828(addr);										// Read back the register
	temp = temp & 0x0f;	    									// 低4位是有效
	color = color & 0x0f;	   									// 低4位是有效
	color <<= 4;	        									// Shift color left 4 bits
	temp = temp | color;	   									// set higher 4 bits of color to higher 4 bits of temp
	write1828(addr,temp);
}

//**********************************
//函数:void osd_BackColor_N(char block,char color);
//作用:设置OSD正常背景颜色
//参数说明:   block	 => 8 bits , osd块
//            color	 => 8 bits , 低4位是有效
//Function:	OSD Displaying Color=(Video Color*OSD_ALPHA+OSD Color*(16-OSD_ALPHA))/16
//**************************************
void osd_BackColor_N(char block,char color)	
{
	char idata addr;
	char idata temp;
		
	switch(block)
	{
		case title:												// Setup position of Title Block
			addr = osd11;
			break;
		case content:											// Setup position of Content Block
			addr = osd26;
			break;
		case bottom:											// Setup position of Bottom Block
			addr = osd36;
			break;
		default:
			break;
	}

	temp = read1828(addr);										// Read back the register
	temp  = temp & 0x0f;										// 低4位是有效
	color = color & 0x0f;	    								// 低4位是有效
	color <<= 4;		       									// Shift color left 4 bits

⌨️ 快捷键说明

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