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

📄 lcd.c

📁 源码
💻 C
📖 第 1 页 / 共 2 页
字号:
	ucLen = strlen((char *)pucStr);
	if(ucLen<22)	//每行最多显示21个字符
	{
		switch(ucAlignMode)
		{
			case TEXT_ALIGN_NONE:	
				ucStartPos = x;
				break;
		  	case TEXT_ALIGN_LEFT:	
		  		ucStartPos = 0;
				break;
			case TEXT_ALIGN_CENTER:	

				if(ucLen<=21)
					ucStartPos = 65 - ucLen*3;
				else
					ucStartPos = 0;
					break;
			case TEXT_ALIGN_RIGHT:	
				if(ucLen<21)
					ucStartPos = 128 - ucLen*6;
				else
					ucStartPos = 0;
				break;
		}
	}
	else
		ucStartPos = x;	

	pucStrBuf = pucStr;
	if(ucNegateColor == NEGATE_COLOR_LINE)	//整行反色
	{
		_GS_lcd_setaddr(0, y);
		for(i=0; i<128; i++)
			_GS_lcd_send(0xff ,1);
	}
	for(i=0; i<ucLen; i++)
	{
		if(ucNegateColor)
			GS_PutChar(ucStartPos , y , pucStrBuf[i], NEGATE_COLOR_CHAR);
	  	else
			GS_PutChar(ucStartPos , y , pucStrBuf[i], NEGATE_COLOR_NONE);
		ucStartPos += 6;
		
		if (ucStartPos+6 > LCD_WIDTH)	//显示位置超过右边界,则折行转到下一行
		{
			if(y<LCD_HEIGHT/8-1)
			{
				ucStartPos = 0;
				y ++;
			}
			else
				return;
		}
	}
}

/**************************************************************************************************
** 函数名: GS_ClearLine
** 输 入: u8 LinPos
** 输 出: void
** 功能描述:  本函数是对LCD进行清除指定行
** 说  明: 无
** 作 者:  SIMPLE
** 日 期:  2005/04/15
** 修 改:  
** 日 期:  
** 版  本:  V0.0
**************************************************************************************************/
void GS_ClearLine(u8 LinPos)
{
	u8 i;
	
	_GS_lcd_setaddr(0, LinPos);
	for(i=0; i<128; i++)
		_GS_lcd_send(0x00 ,1);
}



void GS_ClearShortLine(u8 x1,  u8 x2,  u8 LinPos)
{
	u8 i;
	
	_GS_lcd_setaddr(x1, LinPos);
	for(i=x1; i<x2; i++)
		_GS_lcd_send(0x00 ,1);
}
////////////////////////////////////////////////////////////////////////////////

/**************************************************************************************************
** 函数名: GS_ShowHex
** 输 入: u8 x, u8 y,u8 Data
** 输 出: void
** 功能描述:  在(x,y)的位置以十六进制的方式显示数据 Data
** 说  明:	void
** 作 者:  SIMPLE
** 日 期:  2005/04/15
** 修 改:  
** 日 期:  
** 版  本:  V0.0
**************************************************************************************************/
void GS_ShowHex(u8 x, u8 y,u8 Data)
{
	u8	temp;

	temp =Data >>4;
	if (temp<=9)
		temp += 0x30;
	else
		temp += 0x37;
	GS_PutChar(x, y, temp, 0);
	temp =Data & 0x0f;
	if (temp<=9)
		temp += 0x30;
	else
		temp += 0x37;
	if((x+6)>128)
	{
		x  = 0;
		y += 1;
	}
	else
		x += 6;
	GS_PutChar(x, y, temp, 0);

}

/**************************************************************************************************
** 函数名: GS_ShowDec
** 输 入: u8 x, u8 y,u8 Data
** 输 出: void
** 功能描述:  在(x,y)的位置以十进制的方式显示数据 Data
** 说  明:	void
** 作 者:  SIMPLE
** 日 期:  2005/04/15
** 修 改:  
** 日 期:  
** 版  本:  V0.0
**************************************************************************************************/
void GS_ShowDec(u8 x, u8 y,u8 Data)
{
	u8 temp;

        temp = Data;
        if(temp<=9)
        {
            GS_PutChar(x, y, temp+0x30, 0);
        }
        else if(temp>9&&temp<=19)
        {
            temp -=10;
            GS_PutChar(x+6, y, temp+0x30, 0);
	    GS_PutChar(x, y, '1', 0);
        }
        else if(temp>=20&&temp<=29)
        {
            temp -=20;
            GS_PutChar(x+6, y, temp+0x30, 0);
	    GS_PutChar(x, y, '2', 0);
        }
        else if(temp>=30&&temp<=39)
        {
            temp -=30;
            GS_PutChar(x+6, y, temp+0x30, 0);
	    GS_PutChar(x, y, '3', 0);
        }
        else if(temp>=40&&temp<=49)
        {
            temp -=40;
            GS_PutChar(x+6, y, temp+0x30, 0);
	    GS_PutChar(x, y, '4', 0);
        }
}

/**************************************************************************************************
** 函数名: GS_ShowDTC
** 输 入: P_u8 DataSp
** 输 出: void
** 功能描述:  从(0, 0)位置开始显示故障代码
** 说  明:	void
** 作 者:  SIMPLE
** 日 期:  2005/04/15
** 修 改:  
** 日 期:  
** 版  本:  V0.0
**	//lh
**************************************************************************************************/
void GS_ShowDTC(u8 * pucDtcIdNo)
{
	u8 i;

	for(i=0; i<5; i++)
		GS_PutChar_DZ(i*12, 0, *pucDtcIdNo++);
}

/**************************************************************************************************
** 函数名: GS_DrawLine
** 输 入: u8 LinPos
** 输 出: void
** 功能描述:  本函数向 LCD 输出双条横线 
** 说  明: void
** 作 者:  KIKYO
** 日 期:  2005/3/3
** 修 改:  
** 日 期:  
** 版  本:  V0.0
**************************************************************************************************/
void GS_DrawLine(u8 LinPos)
{
	u8 i;
	
	_GS_lcd_setaddr(0, LinPos);
	for(i=0; i<128; i++)
		_GS_lcd_send(0x14 ,1);
}

/**************************************************************************************************
** 函数名: GS_DrawOneLine
** 输 入: u8 LinPos
** 输 出: void
** 功能描述:  本函数向 LCD 输出单条横线 
** 说  明: void
** 作 者:  KIKYO
** 日 期:  2005/3/3
** 修 改:  
** 日 期:  
** 版  本:  V0.0
**************************************************************************************************/
void GS_DrawOneLine(u8 LinPos)
{
	u8 i;
	
	_GS_lcd_setaddr(0, LinPos);
	for(i=0; i<128; i++)
		_GS_lcd_send(0x18 ,1);
}

/**************************************************************************************************
** 函数名: GS_CreateProgBar
** 输 入: u8 y
**	  y	:	在LCD屏幕上的起始 y 坐标	
** 输 出: void
** 功能描述:  本函数是在第Y行,输出进度条
** 说  明: 无
** 作 者:  SIMPLE
** 日 期:  2005/04/14
** 修 改:  
** 日 期:  
** 版  本:  V0.0
**************************************************************************************************/
void GS_CreateProgBar(u8 y)
{
	u8 i;
	
	ProgressXpos = 2;
	ProgressYpos = y;
	_GS_lcd_setaddr(0, ProgressYpos);
	_GS_lcd_send(0xff ,1);
	for(i=1; i<127; i++)
		_GS_lcd_send(0x81, 1);
	_GS_lcd_send(0xff ,1);
}

/**************************************************************************************************
** 函数名: GS_AddProgBar
** 输 入: u8 AddStup,范围[1,123]
** 输 出: void
** 功能描述:  进度条加 1
** 说  明: 无
** 作 者:  SIMPLE
** 日 期:  2005/04/14
** 修 改:  
** 日 期:  
** 版  本:  V0.0
**************************************************************************************************/
void GS_AddProgBar(u8 AddStup)
{
	u8 i;
	
	for(i=0; i<AddStup; i++)
	{
		if(ProgressXpos < 125 )
		{
			_GS_lcd_setaddr(ProgressXpos++, ProgressYpos);
			_GS_lcd_send(0xbd, 1);
			_GS_lcd_send(0xbd, 1);
	  	}
	}
}

/**************************************************************************************************
** 函数名: GS_DrawPic
** 输 入: void
** 输 出: void
** 功能描述:  输出图片
** 说  明: void
** 作 者:  KIKYO
** 日 期:  2005/3/3
** 修 改:  
** 日 期:  
** 版  本:  V0.0
**************************************************************************************************/
void GS_DrawPic(u8 x, u8 y, u8 Width, u8 Height, u8 * Pic, u8 FNo)
{
     u8 volatile i, j, temp_data;
	 u8 * Sp;

	 Sp= Pic;
     for(i=0; i<Height; i++)
     {
        _GS_lcd_setaddr(x, y+i);

        for(j=0; j<Width; j++)
        {
			temp_data = *Sp;
			if(FNo)
				temp_data =~temp_data;
			_GS_lcd_send(temp_data, 1);
			Sp++;
        }
     }
}

/**************************************************************************************************
** 函数名: GS_CreateForm
** 输 入: P_u8 HeadStr
** 输 出: void
** 功能描述:  本函数创建一个以字符串 HeadStr 为标题的Form。
** 说  明: void
** 作 者:  KIKYO
** 日 期:  2005/3/3
** 修 改:  
** 日 期:  
** 版  本:  V0.0
**************************************************************************************************/
void GS_CreateForm(u8 * HeadStr)
{
	//GS_ClearLCD();
	_GS_lcd_setaddr(0, 0);
	GS_PutString(0, 0, HeadStr, TEXT_ALIGN_CENTER, NEGATE_COLOR_LINE);
	GS_DrawOneLine(1);
}

/*
void GS_PutStId(u8 x,  u8 y, U16 Id, u8 ucAlignMode, u8 ucNegateColor)
{
//   u8  data   Disp[43];

	if(GS_ReadStrings(Id))
		GS_PutString(x, y,g_aucDtcDefBuf,ucAlignMode, ucNegateColor);
}
*/

⌨️ 快捷键说明

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