📄 lcd.c
字号:
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 + -