STM32-蓝桥杯嵌入式LCD字符颜色、高亮显示

STM32-蓝桥杯嵌入式LCD字符颜色、高亮显示

在做第九届省赛电子定时器的时候,里面有一个要求是高亮显示某个字符,然后就研究了一下如何进行字符颜色更改和高亮。

一、重要函数介绍

首先,我们要特别注意下面这两个函数:

void LCD_SetTextColor(vu16 Color);	// 设置字体颜色
void LCD_SetBackColor(vu16 Color);	// 设置背景颜色
void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii);
  1. void LCD_SetTextColor(vu16 Color);
    这个函数只有一个参数,就是颜色,他起到的作用就是设置字体颜色。但是作用效果仅对后面的显示有效。下面举一个例子:
LCD_SetTextColor(White);
LCD_DisplayStringLine(Line1 ,"   HELLO WORLD!     ");

LCD_SetTextColor(Red);
LCD_DisplayStringLine(Line2 ,"   HELLO CT117E!    ");

首先设置了字体颜色是白色,然后在Line1显示了" HELLO WORLD! “,这后面显示的字符都是白色。
然后又将字体颜色设置为红色,然后在Line2显示了” HELLO CT117E! “,这后面显示的字符都是红色,但是并不会对之前显示了” HELLO WORLD! "产生影响,仍然是白色,所以只对后面的生效。

  1. void LCD_SetBackColor(vu16 Color);
    和上面的函数一样,参数一样,也是只对后面的生效,区别在于这个函数是设置的背景颜色,这里就不举例了。

  2. void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii);
    这个函数有三个参数。
    第一个参数是行选择。
    第二个参数是列选择。由于官方没有给出每一列的宏定义,所以需要我们自己推一下。这里列选择需要了解一下我们这个lcd的分辨率。在官方给的参考资料里面介绍了分辨率是240RGBx320,我们知道我们的lcd一共分为10行,20列,所以一个字符的高实际上是24*16,所以我们可以看到lcd.h宏定义里面每一行之间的差值就是24,那么每一列之间的差值就是16啦,实际上表示一列的时候是反着来的,320表示第一列,320-16表示第二列,那么320-(16 * i)表示第i列。
    第三个参数就是我们需要显示的字符了。下面举一个例子:

LCD_DisplayChar(Line4,(320 - (16 * 5)),'*');
// 作用:在Line4,第5列显示字符'*'

二、高亮显示字符

假设我们要在某一行显示一行字符串,指定某个字符高亮,可以用下面的代码:
思路:不是目标字符的时候正常显示,当我们要高亮显示某一个字符的时候,就将背景颜色更改为高亮颜色,然后再显示这个字符,最后我们还要背景颜色改回原本的颜色,以避免影响后面的显示。

void highlight(uint8_t *str,uint8_t pos)
{
     
	int i = 0;
	for(i = 0; i <= 19; i++)
	{
     
		if(i != pos)
			LCD_DisplayChar(Line4,(320 - (16 * i)),str[i]);
	}
	LCD_SetBackColor(Yellow);
	LCD_DisplayChar(Line4,(320 - (16 * pos)),str[pos]);
	LCD_SetBackColor(Blue);	
}

STM32-蓝桥杯嵌入式LCD字符颜色、高亮显示_第1张图片

三、更改字体颜色.

和上面的例子一样,仅仅是把背景颜色改为字体颜色就行了。

void highlight(uint8_t *str,uint8_t pos)
{
     
	int i = 0;
	for(i = 0; i <= 19; i++)
	{
     
		if(i != pos)
			LCD_DisplayChar(Line4,(320 - (16 * i)),str[i]);
	}
	LCD_SetTextColor(Yellow);
	LCD_DisplayChar(Line4,(320 - (16 * pos)),str[pos]);
	LCD_SetTextColor(Blue);	
}

你可能感兴趣的:(STM32,蓝桥杯,蓝桥杯嵌入式,stm32)