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

📄 sc_t6963.c

📁 驱动15X20D液晶屏
💻 C
📖 第 1 页 / 共 2 页
字号:
	{
		T6963_OutData(0x00);
	}
	T6963_OutCommand0byte(T6963_AUTO_RESET);
}

/***************************************************************
	Function:	//	LcdTxtLayer
	Description://	切换显示指定文本页
	Input:		TPage:	要显示的文本页号 (0-4)
***************************************************************/
void LcdTxtLayer(uchar TPage)
{
	uint Add = T6963_TXT_HOME_ADD + TPage * T6963_TXT_PAGESIZE;
	T6963_OutCommand2byte((uchar)Add, (uchar)(Add >> 8),T6963_SET_TXT_HOME_ADD);
}

/***************************************************************
	Function:	//	GraphLayer
	Description://	切换显示指图形页
	Input:		GPage:	要显示的文本页号 (0-6)
***************************************************************/
void LcdGraphLayer(uchar GPage)
{
	uint Add = T6963_GRAPH_HOME_ADD + GPage * T6963_GRAPH_PAGESIZE;
	T6963_OutCommand2byte((uchar)Add, (uchar)(Add >> 8),T6963_SET_GRAPH_HOME_ADD);
}





/***************************************************************
	Function:	//	LcdPutChar
	Description://	在屏幕指定位置显示一个字符,应用于文本模式下
					8*8大小的字符
					T6963自带的字库不好用,字符代码没有和ASCII码对应,显示字符需要查表.
	Input:			TPage:	要显示的文本页号 (0-4)
					CharX:	字符显示的横坐标	0---29
					CharY:	字符显示的纵坐标 0---15
					uChar:	字符对应的代码,需要查表
***************************************************************/
void LcdPutChar(uchar TPage, uchar CharX,uchar CharY,uchar uChar)
{
	uint Add = T6963_TXT_HOME_ADD + TPage * T6963_TXT_PAGESIZE + CharX + CharY*30;
	T6963_OutCommand2byte((uchar)Add, (uchar)(Add >> 8), T6963_SET_ADD_POINTER);
	T6963_OutCommand1byte(uChar,T6963_DATA_WRITE_NO_ADP);
}

/***************************************************************
	Function:	//	LcdStr
	Description://	应用于文本模式下,在屏幕指定位置显示字符串
					格式为 2006-09-13
	Input:			TPage:	要显示的文本页号 (0-4)
					StrX:	字符串在屏幕上显示的横坐标 	0---29
					StrY:	字符串在屏幕上显示的纵坐标	0---15
					uString:	字符串存储的首地址
***************************************************************/
void LcdStr(uchar TPage,uchar StrX,uchar StrY,uchar *uString)
{
	uint Add = T6963_TXT_HOME_ADD + TPage * T6963_TXT_PAGESIZE + StrX + StrY*30;
	uchar i;
	T6963_OutCommand2byte((uchar)Add, (uchar)(Add >> 8), T6963_SET_ADD_POINTER);
	T6963_OutCommand0byte(T6963_DATA_AUTO_WRITE);
	for(i = 0; i < strlen(uString); i++)
	{
		T6963_OutData(*(uString+i) - 0x20); 
	}
	T6963_OutCommand0byte(T6963_AUTO_RESET);
}

/***************************************************************
	Function:	//	LcdClearStr
	Description://	应用于文本模式下,清除屏幕指定位置字符串
	Input:			TPage:	要显示的文本页号 (0-4)
					StrX:	清除的字符串在屏幕上显示的横坐标 	0---29
					StrY:	清除的字符串在屏幕上显示的纵坐标	0---15
					Length:		清除的字符串的长度
***************************************************************/
void LcdClearStr(uchar TPage,uchar StrX,uchar StrY,uchar Length)
{
	uint Add = T6963_TXT_HOME_ADD + TPage * T6963_TXT_PAGESIZE + StrX + StrY*30;
	uchar i;
	T6963_OutCommand2byte((uchar)Add, (uchar)(Add >> 8), T6963_SET_ADD_POINTER);
	T6963_OutCommand0byte(T6963_DATA_AUTO_WRITE);
	for(i = 0;i < Length;i++)
		T6963_OutData(0x00);
	T6963_OutCommand0byte(T6963_AUTO_RESET);
}

/***************************************************************
	Function:	//	LcdBmp
	Description://	在屏幕指定位置显示一个图形(汉字,字符),
					应用于图形模式下
	Input:			GPage:	要显示的图形页号 (0-6)
					BmpX:	图形显示的横坐标	0×8---29×8
					BmpY:	图形显示的纵坐标	0---127
					BmpWidth:	图形的宽度		1×8---30×8
					BmpHeigh:	图形的高度		1---128
					BmpAdd:	图形存储数组的首地址
***************************************************************/
void LcdBmp(uchar GPage, uchar BmpX, uchar BmpY, uchar* BmpAdd)
{
	uint Add = T6963_GRAPH_HOME_ADD + GPage * T6963_GRAPH_PAGESIZE + BmpX/8 + BmpY*30;
	uchar i = 0, j = 0;
	uchar BmpWidth = BmpAdd[0], BmpHeigh = BmpAdd[1];
	BmpAdd+=2;
	for(i = 0;i < BmpHeigh;i++)
	{
		T6963_OutCommand2byte((uchar)Add, (uchar)(Add >> 8), T6963_SET_ADD_POINTER);
		for(j = 0;j < (BmpWidth/8);j++)
		{
			T6963_OutCommand1byte(*(BmpAdd),T6963_DATA_WRITE_INCRE_ADP);
			BmpAdd++;
		}
		Add += 30;
//T6963_Delay(50);
	}
}

/***************************************************************
	Function:	//	LcdClearRect
	Description://	清除屏幕上指定的一个四边形,应用于图形模式下
	Input:			GPage:	要显示的图形页号 (0-6)
					X:	清屏起始横坐标	0×8--29×8
					Y:	清屏起始纵坐标	0--127
					Rect_Width:	清屏宽度		1×8--30*8
					Rect_Heigh:	清屏高度		1--128
***************************************************************/
void LcdClearRect(uchar GPage,uchar X,uchar Y,uchar Rect_Width,uchar Rect_Heigh)
{
	uint Add = T6963_GRAPH_HOME_ADD + GPage * T6963_GRAPH_PAGESIZE + X/8 + Y*30;
	uchar i = 0, j = 0;
	for(i = 0;i < Rect_Heigh;i++)
	{
		T6963_OutCommand2byte((uchar)Add, (uchar)(Add >> 8), T6963_SET_ADD_POINTER);
		for(j = 0;j < Rect_Width/8;j++)
		{
			T6963_OutCommand1byte(0x00,T6963_DATA_WRITE_INCRE_ADP);
		}
		Add += 30;
	}
}

/***************************************************************
	Function:	//	LcdRevRect
	Description://	反显指定区域
***************************************************************/
void LcdRevRect(uchar GPage,uchar X,uchar Y,uchar Width,uchar Heigh)
{
	uint Add = T6963_GRAPH_HOME_ADD + GPage * T6963_GRAPH_PAGESIZE + X/8 + Y*30;
	uchar i = 0, j = 0, uData = 0;
	for(i = 0;i < Heigh;i++)
	{
		T6963_OutCommand2byte((uchar)Add, (uchar)(Add >> 8), T6963_SET_ADD_POINTER);
		for(j = 0;j < Width/8;j++)
		{
			T6963_OutCommand0byte(T6963_DATA_READ_NO_ADP);
			uData = T6963_InData();
			uData = ~uData;
			T6963_OutCommand1byte(uData,T6963_DATA_WRITE_INCRE_ADP);
		}
		Add += 30;
	}
}


/***************************************************************
	Function:	//	LcdPixel
	Description://	画点函数,应用于图形模式下
	Called by:	//	LcdLine
	Input:			GPage:	要显示的图形页号 (0-6)
				 	X:	点的横坐标
					Y:	点的纵坐标
					Disp:	1画该点,0清除该点
***************************************************************/
void LcdPixel(uchar GPage, uchar X,uchar Y,bit Disp)
{
	uint Add = T6963_GRAPH_HOME_ADD + GPage * T6963_GRAPH_PAGESIZE + X/8 + Y*30;
	uchar Temp;
	Temp = 0xF7 - (X%8);
	if(Disp)	Temp |= 0x08;
	T6963_OutCommand2byte((uchar)Add, (uchar)(Add >> 8), T6963_SET_ADD_POINTER);
	T6963_OutCommand0byte(Temp);
}

/***************************************************************
	Function:	//	LcdLine
	Description://	画直线函数,应用于图形模式下
	Calls:		//	LcdPixel
	Input:			GPage:	要显示的图形页号 (0-6)
					X1,Y1:	第一个点的坐标
					X2,Y2:	第二个点的坐标
					坐标范围:(0,0)---(239,127)
					Disp: 1画该直线,0清除该直线
***************************************************************/
void LcdLine(uchar GPage,uchar X1,uchar Y1,uchar X2,char Y2,bit Disp)
{
	uchar i = 0;
	uchar j = 0;
	float k = 0;	//斜率

	if(X1 == X2)				  				//k = 无穷
	{
		j = Y1;
		do
		{
			LcdPixel(GPage,X1,j,Disp);
			if(Y1 < Y2)	
				j++;
			else 
				j--;
		}while(j != Y2);
		LcdPixel(GPage,X2,Y2,Disp);
	}
	
	else if(Y1 == Y2)							//k = 0
	{
		i = X1;
		do
		{
			LcdPixel(GPage,i,Y1,Disp);
			if(X1 < X2)
				i++;
			else
				i--;
		}while(i != X2);
		LcdPixel(GPage,X2,Y2,Disp);
	}
	
	else if(abs(X1-X2) < abs(Y1-Y2))			//|k| > 1
	{
		k = (double)(Y2-Y1) / (double)(X2-X1);
		i = X1;
		do
		{
			j = (i-X1)*k +Y1;
			LcdPixel(GPage,i,j,Disp);
			if(X1 < X2)
				i++;
			else
				i--;
		}while(i != X2);
		LcdPixel(GPage,X2,Y2,Disp);
	}

	else if(abs(X1-X2) >= abs(Y1-Y2))			//|k| <= 1
	{
		k = (double)(X2-X1) / (double)(Y2-Y1);
		j = Y1;
		do
		{
			i = (j-Y1)*k + X1;
			LcdPixel(GPage,i,j,Disp);
			if(Y1 < Y2)
				j++;
			else
				j--;
		}while(j != Y2);
		LcdPixel(GPage,X2,Y2,Disp);
	}
}

/***************************************************************
	Function:	//	LcdScrRoll
	Description://	滚屏函数,应用于图形模式下
	Input:			GPage:	要显示的图形页号 (0-6)
					n:滚动的行数
***************************************************************/
void LcdScrRoll(uchar GPage,uchar n)
{
	uint Add = T6963_GRAPH_HOME_ADD + GPage * T6963_GRAPH_PAGESIZE +30*n;
	T6963_OutCommand2byte((uchar)(Add),(uchar)(Add >> 8),T6963_SET_GRAPH_HOME_ADD);
}


//-------------------------------------------------------------
void T6963_Delay(uchar n)
{
	uchar i;
	uchar j;
	for(i = 0;i < n;i++)
	{
		for(j = 0;j < 6;j++)
		_nop_();
	}
}

⌨️ 快捷键说明

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