【蓝桥杯嵌入式】LCD屏的原理图解析与代码实现(第十三届省赛为例)——STM32

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 【蓝桥杯嵌入式】LCD屏的原理图解析与代码实现(第十三届省赛为例)——STM32

目录


原理图解析

设置STM32CubeMX

配置文件

测试LCD屏函数

实例运用


正文


原理图解析


观察LCD的原理图,LCD的引脚比较多,在下一个步骤设置STM32CubeMX时,最好一一对应地去设置,以免缺漏。

但需要注意的是,在官方文件的实例代码中,已有LCD.c与.h文件,我们可以直接移动到我们的工程文件即可


设置STM32CubeMX


对照原理图将各个引脚设置好即可


配置文件


这一步与上一步选择一个便可。推荐使用官方资料中的文件,因为方便快捷,且不易出错。

在官方资料中找到fonts.h与lcd.h,还有lcd.c三个文件,复制到我们工程文件bsp中。


打开keil5

右击左侧Project中的bsp文件,点击添加文件到bsp中,选中lcd.c添加即可


测试LCD屏函数


我们打开刚刚找lcd.c文件同文件夹中的main.c,部分如下:

  LCD_Init();                //LCD初始化
  /* USER CODE END 2 */
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  LCD_Clear(Blue);                //LCD清屏
  LCD_SetBackColor(Blue);         //LCD背景颜色
  LCD_SetTextColor(White);        //LCD文本颜色
  LCD_DisplayStringLine(Line0, (uint8_t *)"                    ");
  LCD_DisplayStringLine(Line1, (uint8_t *)"                    ");
  LCD_DisplayStringLine(Line2, (uint8_t *)"      LCD Test      ");
  LCD_DisplayStringLine(Line3, (uint8_t *)"                    ");
  LCD_DisplayStringLine(Line4, (uint8_t *)"                    ");
  LCD_SetBackColor(White);
  LCD_SetTextColor(Blue);
  LCD_DisplayStringLine(Line5, (uint8_t *)"                    ");
  LCD_DisplayStringLine(Line6, (uint8_t *)"       HAL LIB      ");
  LCD_DisplayStringLine(Line7, (uint8_t *)"                    ");
  LCD_DisplayStringLine(Line8, (uint8_t *)"         @80        ");
  LCD_DisplayStringLine(Line9, (uint8_t *)"                    ");

可以看到,LCD的初始化已经是现成的了,不需要我们再去写,所以我们在给LCD初始化时直接调用  “ LCD_Init();  ”  即可。

下面还有三个函数,作用分别如下:

    LCD_Clear(Blue);                LCD清屏,并选择清屏后的颜色
    LCD_SetBackColor(Blue);      LCD背景颜色
 LCD_SetTextColor(White);         LCD文本颜色

最后一个函数就是指定在第几行什么位置显示上面文本了,如:

LCD_DisplayStringLine(Line2, (uint8_t *)"      LCD Test      ");

就是在LCD屏第三行,显示      LCD Test      ,空格也是占格数的哦。

可以将这一部分拷贝到自己的主函数中,然后烧入开发板中去试试,看看有什么效果。


实例运用


我们以第十三届省赛题中的LCD为例子试一试:

题目如下:

写代码时,一定要注意行数与列数必须和题目中一样哦(特别是空格要数对),大家可以先写出来,再看下面的代码,有什么异同欢迎评论哦。

代码实现

int X_shop = 1,Y_shop = 8;
char text[30];
sprintf(text,"        SHOP   ");
LCD_DisplayStringLine(Line1, (uint8_t *)text);
sprintf(text,"     X:%d",X_shop);
LCD_DisplayStringLine(Line3, (uint8_t *)text);
sprintf(text,"     Y:%d",Y_shop);
LCD_DisplayStringLine(Line4, (uint8_t *)text);
相关文章
|
8天前
|
机器学习/深度学习 数据采集 算法
特征工程与数据预处理全解析:基础技术和代码示例
在机器学习和数据科学的世界里,数据的质量是建模成功与否的关键所在。这就是特征工程和数据预处理发挥作用的地方。本文总结的这些关键步骤可以显著提高模型的性能,获得更准确的预测,我们将深入研究处理异常值、缺失值、编码、特征缩放和特征提取的各种技术。
12 0
|
12天前
结构体\判断日期是否合法(代码分步解析)
结构体\判断日期是否合法(代码分步解析)
8 1
|
4天前
|
C语言
C语言实现猜数字游戏:代码详解与函数解析
C语言实现猜数字游戏:代码详解与函数解析
7 0
|
25天前
数据结构学习记录——堆的删除(思路图解、代码实现、逐段解析)
数据结构学习记录——堆的删除(思路图解、代码实现、逐段解析)
14 1
|
4天前
|
存储 安全 Java
Java文件操作,让你的代码更“有型”!读写、复制、删除全解析!
【6月更文挑战第27天】在Java中进行文件操作是程序基础功能之一,涉及读写、复制和删除。使用`FileReader/FileWriter`进行文本文件的读写,如示例所示,通过`try-with-resources`保证资源释放。文件复制利用`FileInputStream/FileOutputStream`,而删除文件则依赖`File`的`delete()`方法,确保条件安全执行。这些标准库类提供了高效且健壮的文件管理能力。
|
26天前
|
存储 算法 Java
必会的10个经典算法题(附解析答案代码Java/C/Python看这一篇就够)(二)
必会的10个经典算法题(附解析答案代码Java/C/Python看这一篇就够)(二)
24 1
|
11天前
|
存储 算法 Java
面试高频算法题汇总「图文解析 + 教学视频 + 范例代码」之 二分 + 哈希表 + 堆 + 优先队列 合集
面试高频算法题汇总「图文解析 + 教学视频 + 范例代码」之 二分 + 哈希表 + 堆 + 优先队列 合集
|
2月前
|
人工智能 算法 Java
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1005 数字游戏
66 0
|
2月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1000 kAc给糖果你吃
53 0
|
2月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-999 数的潜能
51 0

推荐镜像

更多