蓝桥杯嵌入式(G4系列)HAL:LCD显示存在遗留

前言:

        蓝桥杯嵌入式LCD是必考的一个点,虽然官方已经提供给我们LCD的驱动,但是经过博主实践发现,LCD自带的函数存在一点小瑕疵。比如我使用LCD_DisplayStringLine()函数来显示了10个字符,下一次我又需要在这一行上显示5个字符,那么后面这5个字符不会自动刷新掉,这需要我们去用空格连填补,可这样的工作量就大了起来,所以我就想了个一劳永逸的方法:直接修改LCD驱动。

正篇开始:

        我们在LCD的驱动中找到LCD_DisplayStringLine()函数,下面是原有的函数:

void LCD_DisplayStringLine(u8 Line, u8 *ptr)
{
	u32 i = 0;
	u16 refcolumn = 319;//319;

	while ((*ptr != 0) && (i < 20))	 //	20
	{
		LCD_DisplayChar(Line, refcolumn, *ptr);
		refcolumn -= 16;
		ptr++;
		i++;
	}
}

        我们稍微修改一下:

void LCD_DisplayStringLine(u8 Line, u8 *ptr)
{
	u32 i = 0;
	u16 refcolumn = 319;//319;

	while (i < 20)	 //	20
	{
		if(*ptr==0)
		{
	  	LCD_DisplayChar(Line, refcolumn, ' ');
		}
		else
		{
			LCD_DisplayChar(Line, refcolumn, *ptr);
			
			ptr++;
		}	
		refcolumn -= 16;
		i++;
	}
}

        在行打印的时候,我们其实是在打印字符,而打印字符的停止条件一个是看是否超过了每行的最大限度,也就是20个字符,另一个就是看指针*ptr是否指向了字符串的结尾“\0”。了解了这两点之后,我们让指针指到“\0”的时候继续打印空格,直到打印满20个,这样就不需要我们时时刻刻在自己写的函数里添加空格了,十分方便。

猜你喜欢

转载自blog.csdn.net/weixin_51651698/article/details/128764797