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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 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);
相关文章
|
7月前
|
物联网 开发者 智能硬件
STM32:引领嵌入式系统新时代的微控制器
STM32:引领嵌入式系统新时代的微控制器
|
6月前
|
Web App开发 传感器 Linux
【嵌入式软件工程师面经】STM32单片机
【嵌入式软件工程师面经】STM32单片机
153 1
|
5月前
|
传感器 编解码 API
【STM32开发入门】温湿度监测系统实战:SPI LCD显示、HAL库应用、GPIO配置、UART中断接收、ADC采集与串口通信全解析
SPI(Serial Peripheral Interface)是一种同步串行通信接口,常用于微控制器与外围设备间的数据传输。SPI LCD是指使用SPI接口与微控制器通信的液晶显示屏。这类LCD通常具有较少的引脚(通常4个:MISO、MOSI、SCK和SS),因此在引脚资源有限的系统中非常有用。通过SPI协议,微控制器可以向LCD发送命令和数据,控制显示内容和模式。
176 0
|
6月前
|
存储 数据安全/隐私保护 芯片
【STM32】详解嵌入式中FLASH闪存的特性和代码示例
【STM32】详解嵌入式中FLASH闪存的特性和代码示例
|
7月前
|
缓存 网络协议 算法
[蓝桥杯嵌入式]hal库 stm32 PWM的使用(随时修改占空比,随时修改频率)
[蓝桥杯嵌入式]hal库 stm32 PWM的使用(随时修改占空比,随时修改频率)
|
7月前
|
人工智能 算法
第十三届蓝桥杯真题解析
第十三届蓝桥杯真题解析
67 3
|
16天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
45 2
|
2月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
70 0
|
2月前
|
算法 Java 容器
Map - HashSet & HashMap 源码解析
Map - HashSet & HashMap 源码解析
57 0
|
2月前
|
存储 Java C++
Collection-PriorityQueue源码解析
Collection-PriorityQueue源码解析
64 0

推荐镜像

更多