蓝桥杯STM32G431RBT6学习——LCD

news2024/10/7 20:33:01

蓝桥杯STM32G431RBT6学习——LCD

前言

作为在开发板上最显眼的LCD屏幕,自然而然也是每年的必考考点。国信长天开发板使用的是一块2.4寸(240*320)的TFT-LCD液晶屏,其引脚占用如下:
在这里插入图片描述

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

STM32CubeMX配置

通过观察底层驱动(比赛提供)可以发现,其实单论LCD驱动来说这一步是并不需要的,因为在官方给的驱动文件就已经实现了对LCD的GPIO配置,如下所示:
在这里插入图片描述
其中配置引脚为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);	//设置背景颜色

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

颜色地址值
White0xFFFF
Black0x0000
Grey0xF7DE
Blue0x001F
Blue20x051F
Red0xF800
Magenta0xF81F
Green0x07E0
Cyan0x7FFF
Yellow0xFFE0

清除显示

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);
  }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/169305.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Netty】实现IM聊天室案例Demo

文章目录1、WebSocket链接建立2、实现用户上线功能3、私聊发送消息注意: 该文章不会详细介绍Netty相关概念和原理,主要目的是介绍如何快速构建聊天室Demo 不会在文章主体过多说明代码流程,文章中的代码已经配备了详细的注释 1、WebSocket链接…

网站建设 之 用js写wasm

为什么要这么做?编译js比解释js更快是必然的wasm是什么?我期望是一个二进制文件WebAssembly(又名wasm)是一种高效的,低级别的编程语言。 它让我们能够使用JavaScript以外的语言(例如C,C &#x…

【Linux】进度条小程序

目录一.\r && \n二.行缓存区概念问题:解答:检测:三.进度条1.进度动态条2.进度百分比3.小装饰4.颜色该篇博客会主要按步骤推导出一个在Linux上运行的进度条小程序,会用到vim编辑器和gcc编译器,如果对这两个软件…

Centos7安装、卸载nginx及配置,配置成系统服务(一步到位)

目录 前言 一、下载安装解压 1.进入临时文件夹里(随便一个都行) 2.下载并安装nginx压缩包 3.解压该压缩包 4.创建目标文件夹 5.(默认会安装在/usr/local/nginx)这里通过configure命令指定安装目录 6.编译安装 7.最后生成的…

一、初始Numpy

1、numpy简介 简介 Numpy(Numerical Python)是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库 Numpy的前身Numeric最早是有Jim Hugunin与其他协作者共同开发,20…

十五天学会Autodesk Inventor,看完这一系列就够了(九),主题/色彩/单位设置

众所周知,Autocad是一款用于二维绘图、详细绘制、设计文档和基本三维设计,现已经成为国际上广为流行的绘图工具。Autodesk Inventor软件也是美国AutoDesk公司推出的三维可视化实体模拟软件。因为很多人都熟悉Autocad,所以再学习Inventor&…

使用SpringBoot创建web项目,并使用外部Tomcat

使用SpringBoot创建web项目,并使用外部Tomcat 目录使用SpringBoot创建web项目,并使用外部Tomcat简单介绍:特点:步骤简介下面就使用SpringBoot创建一个web工程,并且使用外部的Tomcat和实现对jsp的支持:一、创…

AIDL 应用间简单通信demo及基本问题

AIDL:Android Interface Definition Language,即Android接口定义语言。 他的作用大家已经知道了,有些童鞋对于其中的使用细节可能会有一些理解误差,并且会造成一写异常或者通讯失败。 我们先看几个关键点再看代码,如果项目不符合这几点&…

ffmpeg编译android平台-(ubuntu+ndkr16b+ffmpeg3.4.12)

一、环境配置 1、下载NDK,NDK老版本 1.1、 ubuntu下载 wget https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip1.2、解压NDK unzip android-ndk-r16b-linux-x86_64.zip1.3、配置NDK环境变量 vim /etc/profile1.4、 在profile文件中添加如下内容…

String.prototype.matchAll called with a non-global RegExp argument

如上 matchAll这个API 与 正则的全局匹配是不一样的。他会将匹配到的所有字符串以迭代器的形式返回出来。 我们可以使用Array.from或者数据解构来获得匹配到的数组。 他与正则全局匹配的区别是当正则表达式包含()捕获组的时候,全局匹配无法获得子匹配组的数据。 …

【Datewhale一起吃瓜 Task1】周志华西瓜书第一章+第二章

这里写目录标题机器学习是干什么的机器学习的理论基础: PAC模型基本术语关于数据关于假设关于模型训练机器学习任务分类归纳偏好模型的评估和选择训练流程划分数据集的方法留出法交叉验证自助法性能度量机器学习是干什么的 我们目前处于大数据时代,每天会产生数以亿…

一个监控系统的典型架构是什么样的

典型架构 采集器是负责采集监控数据的,采集到数据之后传输给服务端,通常是直接写入时序库。然后就是对时序库的数据进行分析和可视化,分析部分最典型的就是告警规则判断(复杂一些的会引入统计算法和机器学习的能力做预判),即图上的告警引擎,告警引擎产生告警事件之后交给…

华为MPLS跨域带RR实验配置

目录 Option B方案实验配置 配置建立Vpnv4邻居 配置反射器 配置RR和ASBR取消RT值检测 配置ASBR相连接口开启MPLS 配置ASBR向RR发送路由时更改下一跳 Option C1方案实验配置 Option C2方案实验配置 接口IP地址、底层IGP路由协议(ISIS)、MPLS LDP协…

一种环状二肽3705-26-8,cyclo(Pro-Phe),环(PHE-PRO)环状二肽

基础产品数据(Basic Product Data):CAS号:3705-26-8中文名:环(PHE-PRO)英文名:cyclo(Pro-Phe),CYCLO(-PHE-PRO)结构式(Structural):详细产品数据(…

qq消息撤回

开发工具 工具名称工具类型说明AndroidStuduo编辑工具开发工具jadxjava工具将apk解成java项目xposed插件工具插件qq版本8.8.80 开始 先通过jadx把apk反编译出来源码,通过build出来,在android studio打开,方便分析。 要撤回自己的消息&…

TMC步进电机驱动stealthChop

一直觉得tmc系列的芯片功能很强大,但是我自己读寄存器手册的感觉就是每个字我都认识,怎么就这么难懂。。。。 stealthChop 是一种电压控制技术,基于电压斩波器的工作远离,可在低速中速范围内以最大扭矩实现绝对静音的步进电机控制…

【推荐】自用软件工具推荐 WIN

一、图片查看器 Honeyview 蜂蜜浏览器 免费的图像查看器 下载和功能说明 (bandisoft.com) 轻量而快速可以显示包括 GPS 信息在内的 JPEG 格式的 EXIF 信息对图像格式进行批量转换和调整大小支持显示 GIF 和 WebP 动图无需解压即可直接查看压缩包中的图像支持的格式 图像格式…

大厂整个项目的开发规范流程

第1节、大厂码农开发基础 内容 本章节给大家介绍在互联网做开发,基础环境、开发技术以及上线和监控都会用到哪些东西。一般互联网大厂像阿里、京东、腾讯等都会有公司自研的一些技术组件,比如:RPC、MQ、数据库路由等,但所有的这些…

API 网关的功能用途及实现方式

1. API 网关诞生背景 前言 API 经济生态链已经在全球范围覆盖, 绝大多数企业都已经走在数字化转型的道路上,API 成为企业连接业务的核心载体, 并产生巨大的盈利空间。快速增长的 API 规模以及调用量,使得企业 IT 在架构上、模式…

flume整合数据到kafka,sparkStreaming消费数据,并存储到hbase和redis中

目录 1、模拟数据生成 2、flume采集数据 1、node01配置flume的conf文件 2、node02开发flume的配置文件 3、node03开发flume的配置文件 4、开发flume启动停止脚本 5、node01执行以下命令创建kafka的topic 6、启动并查看kafka的数据 3、SparkStreaming消费kafka中的数…