📄 +
字号:
Set_direction(0);
while(str[strlen])strlen++;
while(str[strlen-i])
{
LCD_Char((x-8*i),y,str[strlen-i],Color,bkColor);
i++;
if(i>=len || i>strlen)return;
}
}
/************************************************************
* 函数名:LCD_Str_O_P
* 描述 :在指定坐标处悬浮显示8*16大小的字符串
* 输入 : -x 显示位置横向坐标 0 ~ 319
-y 显示位置纵向坐标 0 ~ 239
* -str 字符串首址
* -Color字符串颜色
* 输出 :无
* 举例 : LCD_Str_O_P(0, 0, "Runing", 0);
LCD_Str_O_P(150, 100, "Runing", 0);
LCD_Str_O_P(320-16, 239-8*6, "Runing", 0);
* 注意 :字符串显示方向为纵向 已测试
******************************************************************/
void LCD_Str_O_P(u16 x, u16 y,const u8 *str,u16 Color)
{
Set_direction(1);
while(*str != '\0')
{
if(y > (240-8))
{ /* 换行*/
y = 0;
x -= 16;
}
if(x >(320-16))
{ /*重归起点*/
y = x = 0;
}
LCD_Char_O_P(x,y,*str,Color);
str ++ ;
y += 8 ;
}
}
/******************************************************
* 函数名:LCD_Num_6x12_O
* 描述 :在指定坐标处悬浮显示6*12大小的数字
* 输入 : -x 显示位置横向坐标 0 ~ 319
-y 显示位置纵向坐标 0 ~ 239
-num 需要显示的数字
-Color 数字颜色
* 输出 :无
* 举例 : LCD_Num_6x12_O(200, 100, 65535, BLACK);
LCD_Num_6x12_O(320-5*6, 240-12, 65535, BLACK);
LCD_Num_6x12_O(0, 0, 65535, BLACK);
* 注意 : 显示方向为横向 已测试
*********************************************************/
void LCD_Num_6x12_O(u16 x,u16 y,u32 num, u16 Color)
{
u32 res=num;
u8 t=0;
Set_direction(0);
if( num == 0 )
{
LCD_Char_6x12_O(x, y, '0',Color);
return;
}
while( res ) /*得到数字长度t*/
{
res/=10;
t++;
}
while(num)
{
LCD_Char_6x12_O(x+(6*(t--)-6), y, (num%10)+'0',Color);/*先显示低位在显示高位*/
num /= 10 ;
}
}
/******************************************************
* 函数名:LCD_Str_6x12_O
* 描述 :在指定坐标处悬浮显示6*12大小的字符串
* 输入 : -x 显示位置横向坐标 0 ~ 319
-y 显示位置纵向坐标 0 ~ 239
* -str 字符串首址
* -Color字符串颜色
* 输出 :无
* 举例 : LCD_Str_6x12_O(300, 10,"LOVE STM32", BLACK);
LCD_Str_6x12_O(0, 0,"LOVE STM32", BLACK);
LCD_Str_6x12_O(320-6*9, 10,"LOVE STM3", BLACK);
LCD_Str_6x12_O(320-6*10, 240-12,"LOVE STM32", BLACK);
* 注意 : 字符串显示方向为横向 已测试
*********************************************************/
void LCD_Str_6x12_O(u16 x, u16 y, const u8 *str,u16 Color)
{
Set_direction(0);
while(*str != '\0')
{
if(x > (320-6))
{
//换行
x = 0;
y += 12;
}
if(y > (240-12))
{
//一屏
x = y = 0;
}
LCD_Char_6x12_O(x ,y, *str,Color);
x += 6;
str ++ ;
}
}
/******************************************************
* 函数名:LCD_Str_6x12_O_P
* 描述 :在指定坐标处悬浮显示6*12大小的字符串
* 输入 : -x 显示位置横向坐标 0 ~ 319
-y 显示位置纵向坐标 0 ~ 239
* -str 字符串首址
* -Color字符颜色
* 输出 :无
* 举例 : LCD_Str_6x12_O_P(200, 0,"LOVE STM32", 0);
LCD_Str_6x12_O_P(0, 0,"LOVE STM32", 0);
LCD_Str_6x12_O_P(320-12, 239-6*10,"LOVE STM32", 0);
* 注意 : 字符串显示方向为纵向 已测试
*********************************************************/
void LCD_Str_6x12_O_P(u16 x, u16 y, const u8 *str, u16 Color)
{
Set_direction(1);
while(*str != '\0')
{
if(y > (240-6))
{ /* 换行*/
y = 0;
x -= 12;
}
if(x >(320-12))
{ /*重归起点*/
y = x = 0;
}
LCD_Char_6x12_O_P(x, y , *str,Color);
y +=6;
str ++ ;
}
}
/********************************************************************
* 函数名:LCD_Char_CH
* 描述 :显示单个汉字字符
* 输入 : x: 0~(319-16)
* y: 0~(239-16)
* str: 中文字符串首址
* Color: 字符颜色
* bkColor: 背景颜色
* 输出 :无
* 举例 : LCD_Char_CH(200,100,"好",0,0);
* 注意 :如果输入大于1的汉字字符串,显示将会截断,只显示最前面一个汉字
************************************************************************/
void LCD_Char_CH(u16 x,u16 y,const u8 *str,u16 Color,u16 bkColor)
{
#ifndef NO_CHNISEST_DISPLAY /*如果汉字显示功能没有关闭*/
u8 i,j;
u8 buffer[32];
u16 tmp_char=0;
GetGBKCode_from_sd(buffer,str); /* 取字模数据 */
for (i=0;i<16;i++)
{
tmp_char=buffer[i*2];
tmp_char=(tmp_char<<8);
tmp_char|=buffer[2*i+1];
for (j=0;j<16;j++)
{
if ( (tmp_char >> 15-j) & 0x01 == 0x01)
{
LCD_ColorPoint(x+j,y+i,Color);
}
else
{
LCD_ColorPoint(x+j,y+i,bkColor);
}
}
}
#endif
}
/******************************************************************
* 函数名:LCD_Char_CH_P
* 描述 :显示单个汉字字符
* 输入 : x: 0~(319-16)
* y: 0~(239-16)
* str: 中文字符串首址
* Color: 字符颜色
* bkColor: 背景颜色
* 输出 :无
* 举例 : LCD_Char_CH_P(200,100,"好",0,0);
* 注意 :如果输入大于1的汉字字符串,显示将会截断,只显示最前面一个汉字
***********************************************************************/
void LCD_Char_CH_P(u16 x,u16 y,const u8 *str,u16 Color,u16 bkColor)
{
#ifndef NO_CHNISEST_DISPLAY /*如果汉字显示功能没有关闭*/
u8 i,j;
u8 buffer[32];
u16 tmp_char=0;
Set_direction(1);
GetGBKCode_from_sd(buffer,str); /* 取字模数据 */
for (i=0;i<16;i++)
{
tmp_char=buffer[i*2];
tmp_char=(tmp_char<<8);
tmp_char|=buffer[2*i+1];
for (j=0;j<16;j++)
{
if ( (tmp_char >> 15-j) & 0x01 == 0x01)
{
LCD_ColorPoint(x+16-i,y+j,Color);
}
else
{
LCD_ColorPoint(x+16-i,y+j,bkColor);
}
}
}
#endif
}
/********************************************************************************
* 函数名: LCD_Char_CH_O
* 描述 : 悬浮显示单个汉字字符
* 输入 : x: 0~(319-16)
* y: 0~(239-16)
* str: 中文字符串首址
* Color: 字符颜色
* 输出 :无
* 举例 : LCD_Char_CH_O(200,100,"好",0,0);
* 注意 :1 横屏2 如果输入大于1的汉字字符串,显示将会截断,只显示最前面一个汉字
********************************************************************************/
void LCD_Char_CH_O(u16 x,u16 y,const u8 *str,u16 Color)
{
u8 i,j;
u8 buffer[32];
u16 tmp_char=0;
Set_direction(0);
GetGBKCode_from_sd(buffer,str); /* 取字模数据 */
for (i=0;i<16;i++)
{
tmp_char=buffer[i*2];
tmp_char=(tmp_char<<8);
tmp_char|=buffer[2*i+1];
for (j=0;j<16;j++)
{
if ( (tmp_char >> 15-j) & 0x01 == 0x01)
{
LCD_ColorPoint(x+j,y+i,Color);
}
}
}
}
/******************************************************************************
* 函数名:LCD_Char_CH_O_P
* 描述 :在Lcd屏上任意位置悬浮显示一个中文字
* 输入 : - x: 水平坐标
* - y: 垂直坐标
* - str: 显示的中文字
* - Color: 字符颜色
* 输出 :无
* 举例 : LCD_Char_CH_O_P(200,100,"云",0);
* 注意 : 1 竖屏2 如果输入大于1的汉字字符串,显示将会截断,只显示最前面一个汉字
*********************************************************************************/
void LCD_Char_CH_O_P(u16 x,u16 y,const u8 *str,u16 Color)
{
#ifndef NO_CHNISEST_DISPLAY /*如果汉字显示功能没有关闭*/
u8 i,j;
u8 buffer[32];
u16 tmp_char=0;
Set_direction(1);
GetGBKCode_from_sd(buffer,str); /* 取字模数据 */
for (i=0;i<16;i++)
{
tmp_char=buffer[i*2];
tmp_char=(tmp_char<<8);
tmp_char|=buffer[2*i+1];
for (j=0;j<16;j++)
{
if ( (tmp_char >> 15-j) & 0x01 == 0x01)
{
LCD_ColorPoint(x+16-i,y+j,Color);
}
}
}
#endif
}
/***************************************************************************
* 函数名:LCD_Str_CH
* 描述 :在指定坐标处显示16*16大小的指定颜色汉字字符串
* 输入 : - x: 显示位置横向坐标
* - y: 显示位置纵向坐标
* - str: 显示的中文字符串
* - Color: 字符颜色
* - bkColor: 背景颜色
* 输出 :无
* 注意 : 字符串显示方向为横向 已测试
******************************************************************************/
void LCD_Str_CH(u16 x,u16 y,const u8 *str,u16 Color,u16 bkColor)
{
Set_direction(0);
while(*str != '\0')
{
if(x>(320-16))
{
/*换行*/
x =0;
y +=16;
}
if(y >(240-16))
{
/*重新归零*/
y =0;
x =0;
}
LCD_Char_CH(x,y,str,Color,bkColor);
str += 2 ;
x += 16 ;
}
}
/********************************************************************************
* 函数名:LCD_Str_CH_P
* 描述 :在指定坐标处显示16*16大小的指定颜色汉字字符串
* 输入 : - x: 显示位置横向坐标
* - y: 显示位置纵向坐标
* - str: 显示的中文字符串
* - Color: 字符颜色
* - bkColor: 背景颜色
* 输出 :无
* 注意 : 字符串显示方向为纵向 已测试
**********************************************************************************/
void LCD_Str_CH_P(u16 x,u16 y,const u8 *str,u16 Color,u16 bkColor)
{
Set_direction(1);
while(*str != '\0')
{
if(y >(240-16))
{
y = 0;
x -= 16;
}
if(x >(320-16))
{
y = 0;
x = 0;
}
LCD_Char_CH_P(x,y,str,Color,bkColor);
str += 2 ;
y += 16 ;
}
}
/*********************************************************************************
* 函数名:LCD_Str_CH_O
* 描述 :在指定坐标处悬浮显示16*16大小的指定颜色汉字字符串
* 输入 : - x: 显示位置横向坐标
* - y: 显示位置纵向坐标
* - str: 显示的中文字符串
* - Color: 字符颜色
* 输出 :无
* 注意 : 字符串显示方向为横向 已测试
***************************************************************************************/
void LCD_Str_CH_O(u16 x,u16 y,const u8 *str,u16 Color)
{
Set_direction(0);
while(*str != '\0')
{
if(x>(320-16))
{
/*换行*/
x =0;
y +=16;
}
if(y >(240-16))
{
/*重新归零*/
y =0;
x =0;
}
LCD_Char_CH_O(x,y,str,Color);
str += 2 ;
x += 16 ;
}
}
/**********************************************************************************
* 函数名:LCD_Str_CH_O_P
* 描述 :在指定坐标处悬浮显示16*16大小的指定颜色汉字字符串
* 输入 : - x: 显示位置横向坐标
* - y: 显示位置纵向坐标
* - str: 显示的中文字符串
* - Color: 字符颜色
* 输出 :无
* 注意 : 字符串显示方向为纵向 已测试
**************************************************************************************/
void LCD_Str_CH_O_P(u16 x,u16 y,const u8 *str,u16 Color)
{
Set_direction(1);
while(*str != '\0')
{
if(y > 240-16)
{
y = 0;
x -=16;
}
if(x > 320-16)
{
y = 0;
x = 0;
}
LCD_Char_CH_O_P(x,y,str,Color);
str += 2 ;
y += 16 ;
}
}
/**********************************************************************************
* 函数名:LCD_Str_ENCH_O_P
* 描述 :中英文混合悬浮显示,英文大小为16*8
* 输入 : - x: 显示位置横向坐标
* - y: 显示位置纵向坐标
* - str: 显示的中文字符串
* - Color: 字符颜色
* 输出 :无
* 注意 : 字符串显示方向为纵向 已测试
**************************************************************************************/
void LCD_Str_ENCH_O_P(u16 x,u16 y,const u8 *str,u16 Color)
{
u16 Tmp_x, Tmp_y;
Tmp_x = x;
Tmp_y = y;
Set_direction(1);
while(*str != '\0')
{
if(*str<125)
{
if(Tmp_y >(240-8))
{
/*换行*/
Tmp_y =0;
Tmp_x -=16;
}
LCD_Char_O_P(Tmp_x,Tmp_y, *str,Color);
str++ ;
Tmp_y += 8;
}
else
{
if(*str==163) /*163-172 是中文逗号 163-187是中文分号*/
{
LCD_Char_O_P(Tmp_x,Tmp_y, ' ',Color); /*改为显示1个空格*/
str += 2 ;
Tmp_x += 8 ;
}
if(Tmp_y >(240-16))
{
/*换行*/
Tmp_y =0;
Tmp_x -=16;
}
LCD_Char_CH_O_P(Tmp_x,Tmp_y,str,Color);
str += 2 ;
Tmp_y += 16 ;
}
}
}
/******************* CHD1807 Team *****END OF FILE************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -