蓝桥杯stm32学习笔记(四):LCD液晶屏显示
Published in:2024-02-29 | category: 嵌入式
Words: 514 | Reading time: 2min | reading:

开发板芯片:STM32G431RBT6;HAL库开发

比赛的时候资料包里会有LCD驱动例程,可以直接在他的MX文件里配置,注意把时钟树里改为外部时钟(例程里是内部时钟)

基础配置

配置引脚

把图片中的引脚配置为GPIO_Output模式

复制官方头文件

  1. 复制官方项目Inc文件夹中的fonts.hlcd.h到自己根目录的bsp文件夹
  2. 复制Src文件夹中的lcd.c文件到bsp文件夹中

添加lcd.c

添加lcd.c到工程bsp文件夹里

添加头文件

main.c中添加#include "lcd.h"#include "stdio.h"

查看官方main.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
int main(void)
{
/* USER CODE BEGIN 1 */

/* USER CODE END 1 */

/* MCU Configuration--------------------------------------------------------*/

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();

/* USER CODE BEGIN Init */

/* USER CODE END Init */

/* Configure the system clock */
SystemClock_Config();

/* USER CODE BEGIN SysInit */

/* USER CODE END SysInit */

/* Initialize all configured peripherals */
MX_GPIO_Init();
/* USER CODE BEGIN 2 */

LCD_Init();
/* USER CODE END 2 */

/* Infinite loop */
/* USER CODE BEGIN WHILE */

LCD_Clear(Blue);
LCD_SetBackColor(Blue);
LCD_SetTextColor(White);


LCD_DrawLine(120, 0, 320, Horizontal);
LCD_DrawLine(0, 160, 240, Vertical);
HAL_Delay(1000);
LCD_Clear(Blue);

LCD_DrawRect(70, 210, 100, 100);
HAL_Delay(1000);
LCD_Clear(Blue);

LCD_DrawCircle(120, 160, 50);
HAL_Delay(1000);

LCD_Clear(Blue);
LCD_DisplayStringLine(Line4, (unsigned char *)" Hello,world. ");
HAL_Delay(1000);

LCD_SetBackColor(White);
LCD_DisplayStringLine(Line0, (unsigned char *)" ");
LCD_SetBackColor(Black);
LCD_DisplayStringLine(Line1, (unsigned char *)" ");
LCD_SetBackColor(Grey);
LCD_DisplayStringLine(Line2, (unsigned char *)" ");
LCD_SetBackColor(Blue);
LCD_DisplayStringLine(Line3, (unsigned char *)" ");
LCD_SetBackColor(Blue2);
LCD_DisplayStringLine(Line4, (unsigned char *)" ");
LCD_SetBackColor(Red);
LCD_DisplayStringLine(Line5, (unsigned char *)" ");
LCD_SetBackColor(Magenta);
LCD_DisplayStringLine(Line6, (unsigned char *)" ");
LCD_SetBackColor(Green);
LCD_DisplayStringLine(Line7, (unsigned char *)" ");
LCD_SetBackColor(Cyan);
LCD_DisplayStringLine(Line8, (unsigned char *)" ");
LCD_SetBackColor(Yellow);
LCD_DisplayStringLine(Line9, (unsigned char *)" ");

while (1)
{
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}

复制LCD_Init();和后面的lcd显示代码到自己的main.c

设置屏幕颜色

1
2
3
LCD_Clear(Blue);
LCD_SetBackColor(Blue);
LCD_SetTextColor(White);
  1. LCD_Clear(Blue);

    • 这行代码的作用是清除LCD屏幕上的内容,并将整个屏幕填充为蓝色(Blue)。
  2. LCD_SetBackColor(Blue);

    • 这行代码的作用是设置LCD屏幕的背景颜色为蓝色(Blue)。
  3. LCD_SetTextColor(White);

    • 这行代码的作用是设置LCD屏幕上文本的颜色为白色(White)。

在屏幕上打印

1
2
3
4
char text[30];
uint i=5;
sprintf(text," CNBR:%d ",i);
LCD_DisplayStringLine(Line9, (uint8_t *)text);
Prev:
零基础实践深度学习(一):波士顿房价预测问题
Next:
Python深度学习及智能车竞赛实践(一):Python 基础知识体系