蓝桥杯嵌入式--LCD屏幕使用提升

前言

之前在专栏里已经介绍过LCD相关库文件的移植,今天来介绍一下对于LCD屏幕的使用技巧。

屏幕基本配置与函数

一、屏幕初始化

使用lcd前的必要步骤就是对LCD屏幕进行初始化操作,这也是一个容易忘记的操作

LCD_Init();\\使用lcd前的必要步骤就是对LCD屏幕进行初始化操作

二、清屏

void LCD_Clear(u16 Color);

该函数的作用是把LCD屏幕上的内容清空,并且将屏幕颜色设置为传入的颜色参数。

三、清行

void LCD_ClearLine(u8 Line);

该函数作用是将屏幕上特定行的内容清空,不改变背景颜色,除非清空前设置了背景色

四、设置背景与字体颜色

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

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

我对这两个函数的理解在于对于LCD函数的分类上。其实不难发现,LCD函数分为设置类输出类两种。

一般来说都是设置对其后的输出产生影响,换句话说,大家不要想当然认为SetBackColor后屏幕的背景色就会整体变色,设置背景色只对后面的输出函数造成影响。

举个例子:

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

LCD_Clear(Blue);

LCD_SetBackColor(white);//设置背景色为白

LCD_SetTextColor(Black);//设置文本为黑

LCD_DisplayStringLine(Line4,(uint8_t*)"Hello World");

HAL_Delay(2000);

LCD_SetBackColor(Black); //设置背景为黑

LCD_ClearLine(Line4);

刚开始

2s后

上面这个结果告诉我们:设置背景与字体颜色只对后面输出语句那一行起作用,并且如果不更新会一直保持之前的设置。

五、显示一行字符串

void LCD_DisplayStringLine(u8 Line, u8 *ptr)

这个函数大家用的最多了,但是我们需要注意,后面输入的参数为一个u8的指针,如果我们直接输出字符串,会出现报错,要在前面加上(uint8_t*),如果传入的是一个uint8_t类型的数组,则不需要担心这个问题。

LCD_DisplayStringLine(Line2,(uint8_t*)"      PASSWORD      ");

并且要熟知,一行只能显示20个字符。

其实重点在于如何在字符串中传入参数

sprintf函数

sprintf函数用于格式化输出,使用前需要包含头文件“stdio.h”

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

    sprintf(准备存储的数组名,"  ABCD =%d/%f/%s",变量名1,变量名2); 

    sprintf(text,"  volitage =%.2f",val); //实例

之后再使用:

LCD_DisplayStringLine(LineX,数组名);

即可显示变量嵌套。

六、在某个位置上显示单个字符

void LCD_DisplayChar(u8 Line, u16 Column, u8 Ascii);

该函数第一个参数为字符的行数,第二个参数比较特别,是字符的列,类型是u16位的,意味着这个参数是以像素点为单位,范围在0-320,其实其中有个换算关系:

320-(16 * R),参数R的值为列。

最后一个参数为显示字符的ASCII码。例如:

LCD_DisplayChar(Line6,Pos,' '); //在某个位置显示一个空格

大家可能要问,这个函数有什么用呢?其实这个函数的用途主要是配合之前的设置背景颜色和字体颜色来显示“高亮”,“闪动”等等效果。

例如高亮:

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

LCD_Clear(Blue);

LCD_SetBackColor(Blue);

LCD_SetTextColor(Black);

LCD_DisplayStringLine(Line4,(uint8_t*)"Hello World");

//相当于重写
LCD_SetBackColor(Yellow);

LCD_DisplayChar(Line4,320,'H');
LCD_DisplayChar(Line4,320-16,'e');
LCD_DisplayChar(Line4,320-32,'l');
LCD_DisplayChar(Line4,320-48,'l');
LCD_DisplayChar(Line4,320-64,'o');

效果图

这个的优点是可以在中间的某个位置显示高亮。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【10】核心易中期刊推荐——模式识别与机器学习

🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…

Github隐藏功能显示自己的README,个人化你的Github主页

Github隐藏功能:显示自己的README 你可能还不知道,GitHub 悄悄上线了一个全新的个人页功能,显示一个自定义的 README.MD 在个人首页。要激活此功能,需要新建一个与自己 ID 同名的 Repository,新 Repo 里的README.MD将…

【嵌入式烧录/刷写文件】-1-详解Motorola S-record(S19/SREC/mot/SX)格式文件

目录 1 什么是Motorola S-record 2 Motorola S-record的格式 2.1 Motorola S-record的结构 2.1.1 “Record type记录类型”的说明 2.1.2 “Record length记录长度”的说明 2.1.3 如何计算“Checksum校验和” 2.2 Record order记录顺序 2.3 Text line terminator文本行终…

[入门必看]数据结构2.3:线性表的链式表示

[入门必看]数据结构2.3:线性表的链式表示第二章 线性表2.3 线性表的链式表示知识总览2.3.1 单链表的定义2.3.2_1 单链表的插入删除2.3.2_2 单链表的查找2.3.2_3 单链表的建立2.3.3 双链表2.3.4 循环链表2.3.5 静态链表2.3.6 顺序表和链表的比较2.3.1 单链表的定义单…

【Linux】进程控制

进程创建fork/vfork1.1.fork函数初识在linux中fork函数时非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。#include <unistd.h> pid_t fork(void); //返回值&#xff1a;自进程中返回0&#xff0c;父进程返回子…

Java并发高频面试题

分享50道Java并发高频面试题。 线程池 线程池&#xff1a;一个管理线程的池子。 为什么平时都是使用线程池创建线程&#xff0c;直接new一个线程不好吗&#xff1f; 嗯&#xff0c;手动创建线程有两个缺点 不受控风险频繁创建开销大 为什么不受控&#xff1f; 系统资源有…

固定优先级仲裁器设计

前言仲裁器Arbiter是数字设计中非常常见的模块&#xff0c;应用也非常广泛。定义就是当有两个或两个以上的模块需要占用同一个资源的时候&#xff0c;我们需要由仲裁器arbiter来决定哪一个模块来占有这个资源。一般来说&#xff0c;提出占有资源的模块要产生一个请求(request)&…

OSPF综合大实验

实验要求&#xff1a; 1、R4为ISP&#xff0c;其上只能配置IP地址&#xff1b;R4和其他所有直连设备只能使用公有IP 2、R3-R5/6/7为MGRE环境&#xff0c;R3为中心站点 3、整个OSPF环境IP基于172.16.0.0/16划分&#xff1b; 4、所以设备均可访问R4环回 5、减少LSA的更新量&…

我眼中的‘C’——动态内存+柔型数组

目录 C/C程序内存分配的几个区域 柔性数组方案 柔性数组的特点 结构中指针方案 两种方案那个比较好&#xff1f; &#x1f60e;博客昵称&#xff1a;陈大大陈 &#x1f60a;座右铭&#xff1a;所谓觉悟&#xff0c;就是在漆黑的荒野上开辟出一条理当前进的光明大道。 &…

蓝桥杯刷题冲刺 | 倒计时17天

作者&#xff1a;指针不指南吗 专栏&#xff1a;蓝桥杯倒计时冲刺 &#x1f43e;马上就要蓝桥杯了&#xff0c;最后的这几天尤为重要&#xff0c;不可懈怠哦&#x1f43e; 文章目录1.长草2.分考场1.长草 题目 链接&#xff1a; 长草 - 蓝桥云课 (lanqiao.cn) 题目描述 小明有一…

单片机 | 51单片机原理

【金善愚】 单片机应用原理篇 笔记整理 课程视频 &#xff1a;https://space.bilibili.com/483942191/channel/collectiondetail?sid51090 文章目录一、引脚分布介绍1.分类2.电源引脚3.时钟引脚(2根)4.控制引脚(4根)5.端口引脚(32根)二、存储器结构及空间分布介绍1.存储器的划…

免费搭建个人博客

免费搭建个人博客,并发布到公网 利用hexo搭建个人博客&#xff0c;通过gitee的pages发布到公网 1 前置准备 安装git、安装node.js&#xff08;尽量选择长期支持的版本) node.js官网&#xff1a;https://nodejs.org/en/ git官网&#xff1a;https://git-scm.com/book/zh/v2 安装…

Linux驱动开发——串口设备驱动

Linux驱动开发——串口设备驱动 一、串口简介 串口全称叫做串行接口&#xff0c;通常也叫做 COM 接口&#xff0c;串行接口指的是数据一个一个的顺序传输&#xff0c;通信线路简单。使用两条线即可实现双向通信&#xff0c;一条用于发送&#xff0c;一条用于接收。串口通信距…

正式环境关闭swagger

直接上步骤&#xff0c;如图&#xff1a;1&#xff0c;启动判断写在相应的环境配置文件中&#xff0c;根据条件判断是否启动 swagger &#xff1a;添加配置项&#xff1a;swagger.is.enable配置文件中添加&#xff1a;#是否激活 swagger true or falseswagger.is.enabletrue2&a…

Hive数据仓库简介

文章目录Hive数据仓库简介一、数据仓库简介1. 什么是数据仓库2. 数据仓库的结构2.1 数据源2.2 数据存储与管理2.3 OLAP服务器2.4 前端工具3. 数据仓库的数据模型3.1 星状模型3.2 雪花模型二、Hive简介1. 什么是Hive2. Hive的发展历程3. Hive的本质4. Hive的优缺点4.1 优点4.2 缺…

在家查找下载最新《柳叶刀》The Lancet期刊文献的方法

《柳叶刀》The Lancet简介&#xff1a; 《柳叶刀》The Lancet是全球顶尖综合性医学期刊&#xff0c;每周都会发表来自世界各地顶尖科学家的研究精粹。是由托马斯威克利&#xff08;Thomas Wakley&#xff09;创办于1823年&#xff0c;由爱思唯尔&#xff08;Elsevier&#xff…

linux简单入门

目录Linux简介Linux目录结构Linux文件命令文件处理命令文件查看命令常用文件查看命令Linux的用户和组介绍Linux权限管理Linux简介 Linux&#xff0c;全称GNU/Linux&#xff0c;是一种免费使用和自由传播的类UNIX操作系统&#xff0c;其内核由林纳斯本纳第克特托瓦兹&#xff0…

【你不知道的 CSS】你写的 CSS 太过冗余,以至于我对它下手了

:is() 你是否曾经写过下方这样冗余的CSS选择器: .active a, .active button, .active label {color: steelblue; }其实上面这段代码可以这样写&#xff1a; .active :is(a, button, label) {color: steelblue; }看~是不是简洁了很多&#xff01; 是的&#xff0c;你可以使用…

算法的时间复杂度和空间复杂度

目录 1 如何衡量一个算法的好坏 2.时间复杂度 2.1 时间复杂度的概念 2.2 大O的渐进表示法 2.3常见代码举例 2.3.1 Func2 O(N) 2.3.2 Func3 O(MN) 2.3.3 Func4 O(1) 2.3.4 Func5 strchr O(N) 2.3.5 Func6 冒泡排序 O(N^2) 2.3.6 Func7 二分…

让Ai帮你工作(4)--锁定图片生成角色

背景&#xff1a;Gpt4多模态模型上来后&#xff0c;MJ也是紧接着发布了V5&#xff0c;微软发布自己Ai作图工具&#xff0c;Abode、unity这些传统老牌作图软件工具也是紧跟着发布自己的AI作图插件工具。这已经标志着Ai作图已经成为计算成像的另一条生成链。各大厂都已经发布了这…
最新文章