前言
之前在专栏里已经介绍过LCD相关库文件的移植,今天来介绍一下对于LCD屏幕的使用技巧。
屏幕基本配置与函数
一、屏幕初始化
使用lcd前的必要步骤就是对LCD屏幕进行初始化操作,这也是一个容易忘记的操作。
LCD_Init();\\使用lcd前的必要步骤就是对LCD屏幕进行初始化操作
二、清屏
void LCD_Clear(u16 Color);
该函数的作用是把LCD屏幕上的内容清空,并且将屏幕颜色设置为传入的颜色参数。
三、清行
void LCD_ClearLine(u8 Line);
该函数作用是将屏幕上特定行的内容清空,不改变背景颜色,除非清空前设置了背景色。
四、设置背景与字体颜色
void LCD_SetTextColor(vu16 Color); //设置文本颜色
void LCD_SetBackColor(vu16 Color);//设置背景颜色
我对这两个函数的理解在于对于LCD函数的分类上。其实不难发现,LCD函数分为设置类与输出类两种。
一般来说都是设置对其后的输出产生影响,换句话说,大家不要想当然认为SetBackColor后屏幕的背景色就会整体变色,设置背景色只对后面的输出函数造成影响。
举个例子:
LCD_Init();
/* USER CODE END 2 */
LCD_Clear(Blue);
LCD_SetBackColor(white);//设置背景色为白
LCD_SetTextColor(Black);//设置文本为黑
LCD_DisplayStringLine(Line4,(uint8_t*)"Hello World");
HAL_Delay(2000);
LCD_SetBackColor(Black); //设置背景为黑
LCD_ClearLine(Line4);
上面这个结果告诉我们:设置背景与字体颜色只对后面输出语句那一行起作用,并且如果不更新会一直保持之前的设置。
五、显示一行字符串
void LCD_DisplayStringLine(u8 Line, u8 *ptr)
这个函数大家用的最多了,但是我们需要注意,后面输入的参数为一个u8的指针,如果我们直接输出字符串,会出现报错,要在前面加上(uint8_t*),如果传入的是一个uint8_t类型的数组,则不需要担心这个问题。
LCD_DisplayStringLine(Line2,(uint8_t*)" PASSWORD ");
并且要熟知,一行只能显示20个字符。
其实重点在于如何在字符串中传入参数。
sprintf函数
sprintf函数用于格式化输出,使用前需要包含头文件“stdio.h”
int sprintf( char *buffer, const char *format [, argument,...] );
sprintf(准备存储的数组名," ABCD =%d/%f/%s",变量名1,变量名2);
sprintf(text," volitage =%.2f",val); //实例
之后再使用:
LCD_DisplayStringLine(LineX,数组名);
即可显示变量嵌套。
六、在某个位置上显示单个字符
void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii);
该函数第一个参数为字符的行数,第二个参数比较特别,是字符的列,类型是u16位的,意味着这个参数是以像素点为单位,范围在0-320,其实其中有个换算关系:
320-(16 * R),参数R的值为列。
最后一个参数为显示字符的ASCII码。例如:
LCD_DisplayChar(Line6,Pos,' '); //在某个位置显示一个空格
大家可能要问,这个函数有什么用呢?其实这个函数的用途主要是配合之前的设置背景颜色和字体颜色来显示“高亮”,“闪动”等等效果。
例如高亮:
LCD_Init();
/* USER CODE END 2 */
LCD_Clear(Blue);
LCD_SetBackColor(Blue);
LCD_SetTextColor(Black);
LCD_DisplayStringLine(Line4,(uint8_t*)"Hello World");
//相当于重写
LCD_SetBackColor(Yellow);
LCD_DisplayChar(Line4,320,'H');
LCD_DisplayChar(Line4,320-16,'e');
LCD_DisplayChar(Line4,320-32,'l');
LCD_DisplayChar(Line4,320-48,'l');
LCD_DisplayChar(Line4,320-64,'o');
这个的优点是可以在中间的某个位置显示高亮。