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

📄 splc051.c

📁 Atmega16+SPCL051液晶驱动
💻 C
📖 第 1 页 / 共 2 页
字号:
// 程序:	void LCD501_SetContrast(unsigned int Contrast)
// 描述:	设置显示对比度   C语言调用
// 参数:	Contrast - 对比度值,范围从0到31,数值越大对比度越高
// 返回:	无
// 声明:	手心	20070117	AVRGCC
//***************************************************************************//
void LCD501_SetContrast(unsigned int Contrast)
{
	if(Contrast>0x3f)
		Contrast = 0x3f;
	F_SPLC501_Write_Com(M_LCD_ELE_VOL);			//电量设置模式(显示亮度)
	F_SPLC501_Write_Com(Contrast);			//电量设置模式(显示亮度)
	CurLCDSet = Contrast;
}
//***************************************************************************//
// 程序:	unsigned int LCD501_GetContrast(void)
// 描述:	获取显示对比度   C语言调用
// 参数:	无
// 返回:	当前显示的对比度值
// 声明:	手心	20070117	AVRGCC
//***************************************************************************//
unsigned int LCD501_GetContrast(void)
{
	return CurLCDSet;//
}
//***************************************************************************//
// 程序:	void LCD501_ScrollUp(unsigned int Rows)
// 描述:	屏幕向上滚动   C语言调用
// 参数:	Rows  屏幕向上滚动的像素数,范围从1到64
// 返回:	null
//***************************************************************************//
void LCD501_ScrollUp(unsigned int Rows)
{
	CurScroll = CurScroll+Rows;
	while(CurScroll>=SCR_MAX_ROW)
		CurScroll -= SCR_MAX_ROW;
	F_SPLC501_Write_Com(M_LCD_BEGIN_LINE+CurScroll);	//设置显示起始行对应RAM
}
//***************************************************************************//
// 程序:	unsigned int LCD501_GetScroll(void)
// 描述:	获取屏幕已经向上滚动的值   C语言调用
// 参数:	无
// 返回:	屏幕已经向上滚动的值
// 声明:	手心	20070117	AVRGCC
//***************************************************************************//
unsigned int LCD501_GetScroll(void)
{
	return CurScroll;//
}
//***************************************************************************//
// 程序:	void LCD501_ReverseColor(void)
// 描述:	屏幕反色显示。每执行一次该函数,屏幕颜色翻转一次。   C语言调用
// 参数:	无
// 返回:	无
// 声明:	手心	20070117	AVRGCC
// 注意:   无
//***************************************************************************//
void LCD501_ReverseColor(void)
{
	if(CurScrMode)//
	{
		F_SPLC501_Write_Com(M_LCD_ALL_REV);			//正向反向显示控制指令
		CurScrMode = 0;
	}
	else
	{
		F_SPLC501_Write_Com(M_LCD_ALL_NOR);			//正向反向显示控制指令
		CurScrMode = 1;
	}
}
//***************************************************************************//
//程序:LCD501_ClrScreen(unsigned int Mode)
//描述:液晶整屏清屏函数  C语言调用 
//参数:unsigned int Mode	清屏类型Mode=1 则全点亮,Mode=0 内全清零
// 声明:	手心	20070117	AVRGCC
//***************************************************************************//
void LCD501_ClrScreen(unsigned int Mode)
{
	unsigned int i,j;
	if(Mode)
		Mode = 0xff;
	else
		Mode = 0x00;	
	for(i=0;i<8;i++)
	{
		F_SPLC501_Write_Com(M_LCD_COL_PAGE+i);
		F_SPLC501_Write_Com(M_LCD_COL_LINE_LOW);
		F_SPLC501_Write_Com(M_LCD_COL_LINE_HIG);
		for(j=0;j<128;j++)
		{
			F_SPLC501_Write_Data(Mode);
		}
	}
	F_SPLC501_Write_Com(0xee);					//读改写模式结束指令
}
//***************************************************************************//
//程序:F_LCD_LineRun(unsigned int line)
//描述:液晶显示起始行设置函数  C语言调用  (滚屏功能用) 
//参数:unsigned int line	起始RAM行,0~63
// 声明:	手心	20070117	AVRGCC
//***************************************************************************//
void F_LCD_LineRun(unsigned int line)
{
	if(line>=64)
		line = 0;
	F_SPLC501_Write_Com(M_LCD_BEGIN_LINE+line);	//设置显示起始行对应RAM
}
//****************************************************************************************//
//程序:void LCD501_FontSet(unsinged int Font)     [8x16] [6X8]
//描述: 选择显示字符的大小类型
//参数:Font	字符的类型选择 1 8X16   0 6X8
// 声明:	手心	20070117	AVRGCC
//注意: 只针对显示驱动中包含的ASCII码显示
//*****************************************************************************************//
void LCD501_FontSet(unsigned int Font)
{
	if(Font) CurASCIIFont = 1;
	else CurASCIIFont = 0;
}
//****************************************************************************************//
//程序:unsigned int LCD501_FontGet(void)     [8x16] [6X8]
//描述: 获取当前显示字符的大小类型
//返回:Font	字符的类型选择 1 8X16   0 6X8
//声明: xinqiang		20050519	sunnorth  Mz Design
//注意: 只针对显示驱动中包含的ASCII码显示
//*****************************************************************************************//
unsigned int LCD501_FontGet(void)
{
	return CurASCIIFont;
}
//****************************************************************************************//
//程序:void F_LCD_WASII(int x,int page,unsigned int a)     [8x16] [6X8]
//描述: 显时8X16的自带ASCII字符,定Page显示,不能任意行定位
//参数:x 显示字符的起始列(0~128)   page 显示字符的起始页(0~6)
//		a ASCII码					  Font	字符的类型选择 1 16X8   0 6X8
// 声明:	手心	20070117	AVRGCC
//注意: 
//*****************************************************************************************//
void F_LCD_WASII(int page,int y,unsigned char a)       
{
    int i,j,x_com;            //数据暂存
    if(a>=0x61)
		a=a-0x61+36*8+(a-0x61)*8;
	else 
		if(a>=0x41)
			a=a-0x41+80+(a-0x41)*8;
		else
			a=a-0x30+(a-0x30)*8;
	F_SPLC501_Write_Com(M_LCD_BEGIN_LINE+0);	//设置显示起始行对应RAM  
	if((page+2)<8)
	{
		for(j=0;j<2;j++)
		{
			x_com = page+0xb0;
			F_SPLC501_Write_Com(x_com+j);				//起始页
			F_SPLC501_Write_Com(((y>>4)&0x0f)|0x10);	//设置初始地址 列地址高位
			F_SPLC501_Write_Com(y&0x0f);				//设置初始地址 列地址低位
			for(i=0;i<8;i++)
			{   
				if(j==0)
					F_SPLC501_Write_Data((Asii8[a+i])&0xff);
				else
					F_SPLC501_Write_Data(((Asii8[a+i])>>8)&0xff);
			}
		}
	}
	F_SPLC501_Write_Com(0xee);
//	LED_test();
}  
//********************************************************************************************//
//程序:void LCD501_PutChar(int x,int y,unsigned int a)      [8x16] [6X8]
//描述: 显时8X16、6X8的自带ASCII字符,任意行定位
//参数: x显示字符的起始列(0~128)   y 显示字符的起始行(0~63)
//		a ASCII码					 
// 声明:	手心	20070117	AVRGCC
//注意: 
//********************************************************************************************//
void LCD501_PutChar(int x,int y,unsigned int a)       
{
    int i,j,x_com,y_com=0;            //数据暂存
    unsigned int uiData1,uiData2;
    unsigned int Read_Back;					//读回的数据
    if(a>=0x61)
		a=a-0x61+36*8+(a-0x61)*7;
	else 
		if(a>=0x41)
			a=a-0x41+80+(a-0x41)*7;
		else
			a=a-0x30+(a-0x30)*7;
	if((x+8)>127)
	{
		x_com=4;
		y_com=y/8+1;
	}
	else
	{	
		x_com=x;
		y_com=y/8;
	}
    if((y+16)<64)
		y_com=y_com+0xb0;
	else
		y_com=0xb0;
	for(j=0;j<2;j++)
	{
		F_SPLC501_Write_Com(y_com+j);				//设置初始页地址
		F_SPLC501_Write_Com(x_com&0x0f);			//设置初始列地址 
		F_SPLC501_Write_Com(((x_com >> 4)&0x0f)|0x10);	
		for(i=0;i<8;i++)
		{   
			if(j==0)
			{
				uiData1 = (Asii8[a+i])&0x00ff;
				F_SPLC501_Write_Data(uiData1);
			}
			else 
			{
				uiData1 = (Asii8[a+i]>>8)&0x00ff;
				F_SPLC501_Write_Data(uiData1);
			}    
		}
		F_SPLC501_Write_Com(0xee);					//读改写模式结束指令
	}
}   
//********************************************************************************************//
//程序:void LCD501_PutString(int x,int y,unsigned int a)      [8x16] [6X8]
//描述: 显时8X16、6X8的自带ASCII字符,任意行定位
//参数:x 显示字符的起始列(0~128)   y 显示字符的起始行(0~63)
//		a ASCII码					  
// 声明:	手心	20070117	AVRGCC
//注意: 
//********************************************************************************************//
void LCD501_PutString(int x,int y,unsigned char * string)       
{
	while(*string!=0)
	{
		if((x+8)>127)
		{
			x = 4;
			y=y+8;
		}
		if((y+16)>63) 
		{
			y =0;
		}
		LCD501_PutChar(x,y,(unsigned int)*string);
		string++;
		x+=8;
	}
}   

⌨️ 快捷键说明

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