蓝桥杯STM32G431RBT6学习——LCD

蓝桥杯STM32G431RBT6学习——LCD

前言

作为在开发板上最显眼的LCD屏幕,自然而然也是每年的必考考点。国信长天开发板使用的是一块2.4寸(240*320)的TFT-LCD液晶屏,其引脚占用如下:
蓝桥杯STM32G431RBT6学习——LCD_第1张图片

其中,CS为片选信号引脚,RS为数据/命令选择引脚,WR为写入控制引脚,RD为读取控制引脚,RST为复位控制引脚,D0~D15为数据线。

STM32CubeMX配置

通过观察底层驱动(比赛提供)可以发现,其实单论LCD驱动来说这一步是并不需要的,因为在官方给的驱动文件就已经实现了对LCD的GPIO配置,如下所示:
蓝桥杯STM32G431RBT6学习——LCD_第2张图片
其中配置引脚为PA8,PB5、8、9,PC0~PC15,所有引脚均配置为推挽输出模式,因此CubeMX配置可以省略。

Keil代码编写
LCD驱动相关API如下:

LCD初始化
函数内部实现了GPIO的对应初始化及液晶寄存器配置

void LCD_Init(void);

设置显示颜色
文本默认颜色为黑色
文本背景默认颜色为黑色(不同于背景色,这里指的是文本的所在背景色)

void LCD_SetTextColor(vu16 Color);	//设置文本颜色
void LCD_SetBackColor(vu16 Color);	//设置文本背景颜色

参数:颜色,其宏定义如下:

颜色 地址值
White 0xFFFF
Black 0x0000
Grey 0xF7DE
Blue 0x001F
Blue2 0x051F
Red 0xF800
Magenta 0xF81F
Green 0x07E0
Cyan 0x7FFF
Yellow 0xFFE0

清除显示

void LCD_ClearLine(u8 Line);	//清除一行显示
void LCD_Clear(u16 Color);		//清除全屏显示

LCD_ClearLine参数:清除行号
LCD_Clear参数:清除后的背景色
绘制类函数

void LCD_SetCursor(u8 Xpos, u16 Ypos);	//设置绘制起始坐标					
void LCD_DrawChar(u8 Xpos, u16 Ypos, uc16 *c);	//绘制字符(未使用字库)
void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii);	//绘制字符
void LCD_DisplayStringLine(u8 Line, u8 *ptr);	//显示一行字符串
void LCD_SetDisplayWindow(u8 Xpos, u16 Ypos, u8 Height, u16 Width);	//设置一个显示窗口,后面的绘制以该窗口为坐标系
void LCD_WindowModeDisable(void);	//禁用窗口模式,重新以全屏为坐标系
void LCD_DrawLine(u8 Xpos, u16 Ypos, u16 Length, u8 Direction);	//绘制线段
void LCD_DrawRect(u8 Xpos, u16 Ypos, u8 Height, u16 Width);	//绘制矩形
void LCD_DrawCircle(u8 Xpos, u16 Ypos, u16 Radius);	//绘制圆形
void LCD_DrawMonoPict(uc32 *Pict);	//显示单色图
void LCD_WriteBMP(u32 BmpAddress);	//从Flash中读取图片显示
void LCD_DrawBMP(u32 BmpAddress);	//未实现
void LCD_DrawPicture(const u8* picture);	//显示16色图片

绘制类函数参数列表:
Xpos:X坐标,取值为0~240;
Ypos:Y坐标,取值为0~320;
c :字符数据,注意此处为字模数组;
Line :行,取值Line0~Line9;
Column:同Ypos;
Ascii:ASCII字符,取值 0x20~0x7E;
ptr :字符串;
Height:窗口高度;
Width:窗口宽度;
Length:线段长度;
Direction:线段方向,取值Horizontal(水平)或其他(竖直);
Radius:圆形半径;
Pict:图片取模数组数据
字符流函数

int sprintf( char *buffer, const char *format [, argument,] );

参数1:写入的字符串数组;
参数2:字符串及格式符;
参数3:格式符中对应的变量数据

基本使用

API还算得上丰富(主要题目使用难度不大),通俗易懂,直接使用即可。
显示两行数据并清除:

  LCD_Init();
  LCD_Clear(White);
  LCD_SetBackColor(White);
  LCD_SetTextColor(Blue);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  int num = 1;
	  char text[30];
	  sprintf(text,"%d    Hello World!",num);
	  LCD_DisplayStringLine(Line4, (u8*)text);
	  LCD_DisplayStringLine(Line5, (u8*)text);
	  HAL_Delay(1000);
	  LCD_ClearLine(Line4);
	  HAL_Delay(1000);
	  LCD_Clear(White);
	  HAL_Delay(1000);
  }

你可能感兴趣的:(蓝桥杯STM32-复习使用,stm32,单片机,蓝桥杯)