OLED整体刷新到结合switch刷新方式演变

news2024/11/24 16:42:36

OLED整体刷新到结合switch刷新方式演变

引言

OLED刷新模式, 其实很简单, 就和prinf输出一样, 只是我们这里利用OLED来输出我们所需要的东西了。

至于OLED单独整体刷新, 还是利用switch刷新, 都是形而上学, 形的东西, 至于底层, 江协科技大佬已经帮我整理好了, 我们是站在巨人的肩膀上呦。

[模块教程] 第1期 0.96寸OLED显示屏_哔哩哔哩_bilibili

OLED单独刷新

很直白, 就直接初始化一下OLED后, 直接把这段代码复制到while循环里面

image-20240820122845765

整体刷新改进

存在的问题:

单独刷新, 我们观察刷新模式, 会发现我们一直在刷新 文字和数据, OLED, 只要我们不动其数据区,我们只供电, 就可以持续的将文字留在上面.

所以, 如果我们只是显示一个页面, 那么需要刷新修改的只是数据区, 文字区域就不用刷新了,

如果我们重复刷新文字, 就相当于白白浪费CPU算力了

解决方案:

我们的做法是这样的:

只刷新一次文字区域, 然后重复刷新数据区域

OLED_ShowChinese(0, 0, "温度");
OLED_ShowChinese(0, 24, "湿度:");
OLED_ShowChinese(0, 48, "烟雾浓度:");
while(1)
{
    OLED_Printf(48,0,OLED_8X16,"%2d",temp);
    OLED_Printf(48,24,OLED_8X16,"%2d",humi);
    OLED_Printf(80,48,OLED_8X16,"%2.1f",ad_value);    
}   

多界面切换, 分隔刷新

多界面修改方案

当只有一个界面的时候, 我们在while循环前, 刷新一次文字, while循环里面只是修改数据就可以了.

但是有很多界面呢? 这存在一个问题, 因为我们运行都是在while循环里面运行的, 也不可能再跳转到while循环外去刷新.

多界面刷新文字区域

所以我们探讨一个问题, 我们什么时候, 才去刷新文字区域, 当然是我们要切换界面的时候, 那我们是什么时候要切换界面呢? 那当然是, 控制界面的变量, 切换的时候, 确切可以说, 我们从界面1 切换到 界面2 的时候, 我们就要刷新文字了, 当切换到界面2的时候, 我们整体刷新一次,

但是到第二次, 如果还是界面2, 我们就没必要重复刷新界面2的文字了, 而是只刷新数据.

所以我们要定义一个变量, 控制我们当前应该显示哪个界面, 再定义一个变量, 表示, 我们此时界面是否切换,

因为切换的话, 就需要整体刷新, 没切换的话, 就只刷新数据区.

image-20240820140536173

代码变量实现流程

(1)刷新流程

只有当我们要切换界面的时候, 我们才整体刷新, 否则, 整体刷新过一次后, 就只刷新数据即可. 这样可以节省CPU算力, 加快刷新速率。

image-20240820141027098

(2)界面挑选

当我们有多个界面的时候, 我们可以选择switch来选择进行多界面的刷新。

image-20240820154826038

(3)界面内部刷新

我们要把握一个点, 我们分开刷新的目的: 因为我们要重复刷新一个界面, 对于界面中不变动的文字, 就可以只刷新一次, 但是对于需要刷新变动的数据, 则需要重复刷新。

整体刷新的时机:

当刚切换到新界面的时候, 我们要整体刷新一次, 保证页面显示完整

局部刷新时机:

当已经整体刷新完, 只刷新需要更新的区域, 保证数据的实时性.

那如何区分当前是 , 刚切换完新界面, 还是已经整体刷新完呢?

那就是当界面变动的标志位触发的时候.

我们举个例子,我们可以说, 我们按下了切换界面的按键, 所以默认当前选择的界面是需要整体刷新的, 所以, 我们可以挑选一个button_down变量, 来定义, 我们是否按下了切换界面的按键, 当按下之后, 我们就要整体刷新界面( 整体刷新完后, 记得把button_down修改回来,避免重复整体刷新)

image-20240820155951091

那后面当检测到, buton_down == 0 的时候, 就说明此时没有界面切换, 那么我们就局部刷新数据

image-20240820160013762

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

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

相关文章

[ 全部搞定 - 发票导出表格 ] PDF发票提取到表,图片发票提取到表格,扫描件发票提取到表格,全电发票PDF,全电发票扫描件识别导出EXCEL表格

最近很多朋友说找PDF发票提取Excel表格的,找到了图片识别Excel表格的,有的找图片识别Excel表格的,找到了PDF发票提取表格的,所以就很难搞,还有的说都想要 今天一篇文章,全部搞定所有发票【电子发票&#x…

运维学习————nginx3-keepalived及高可用nginx集群

目录 一、高可用nginx规划图 二、克隆一个nginx 启动测试 ​编辑 三、keepalived简介 四、安装配置keepalived保活nginx 4.1、安装 ​编辑 4.2、配置 4.2.1、主机配置(nginx1(主)配置) 4.2.2、从机配置(nginx2(主)配置)…

敏捷架构框架:数字化转型的核心驱动力

在数字化转型的浪潮中,传统的企业架构和组织结构正面临严峻挑战。为了在快速变化的市场环境中保持竞争力,企业不仅需要灵活的开发流程,还需要一种能够支持敏捷方法的架构体系。《数字化时代的敏捷架构》提出的敏捷架构框架(Agile …

建筑物规则化(实现) --- 特征边分组、重构、直角化

规则化建筑物 一、摘 要 建筑物多边形在地图综合中的两类处理模型:化简与直角化。 建筑物矢量数据来源广泛,在数据获取过程中,受GPS精确度、遥感影像分辨率或人为因素的影响,数据往往存在不同程度的误差。其中,图像分割、深度学习…

规范化JavaBean

Java Bean 是一个很常见的概念,简单来说就是一个 Java 类,其中的内容就是各种属性,以及各个属性的 getter/setter 。例如: class Student {private String name;private int age;public String getName() {return this.name;}pub…

网络协议与Netty

1、讲一讲什么是RPC? 说到RPC就必须要聊一聊单体项目和分布式/微服务项目 单体项目时:一次服务调用发生在同一台机器上的 同一个进程内部 ,也就是说调用发生在本机内部,因此也被叫作本地方法调用。 分布式/微服务项目时&#x…

负载均衡:定义与核心作用

负载均衡:定义与核心作用 一、负载均衡的定义二、负载均衡的核心作用 💖The Begin💖点点关注,收藏不迷路💖 负载均衡,作为网络技术的重要一环,对优化资源利用和提升服务器响应速度至关重要。本文…

Ps:首选项 - 界面

Ps菜单:编辑/首选项 Edit/Preferences 快捷键:Ctrl K Photoshop 首选项中的“界面” Interface选项卡可以定制 Photoshop 的界面外观和行为,从而创建一个最适合自己工作习惯和需求的工作环境。这些设置有助于提高工作效率,减轻眼…

快速带你玩转高性能web服务器

目录 一.Web 服务基础介绍 ​编辑1.1 互联网发展历程回顾 1.2 Web 服务介绍 1.2.1 Apache的图标 1.2.2 NGINX的图标: 1.2.3 Apache 经典的 Web 服务端 1.2.3.1 Apache prefork 模型 1.2.3.2 Apache worker 模型 1.2.3.3 Apache event模型 1.2.4 Nginx-高性能的 Web …

PanDownload 网页复刻版最新PHP源码

源码介绍 PanDownload 网页复刻版,PHP语言版,PanDownload在线解析下载的优点,速度快,受用户自身带宽限制,就是说你的宽度交多少决定你下载的速度,不用下载百度网盘客户端,你可以直接使用解析所…

PingCAP 携手 CCF 数据库专委会打造“开源数据库领域拔尖创新人才培育计划”,共塑数据库教育未来丨NDBC 2024

2024 年 8 月 7 日 - 10 日,由中国计算机学会主办、中国计算机学会数据库专业委员会和新疆大学承办、新疆 IT 三会等单位协办的第 41 届中国数据库学术会议(NDBC 2024)在新疆乌鲁木齐成功举办。 大会上 PingCAP 联合创始人黄东旭发表了主题演…

LabVIEW深度监测系统

随着果园机械化作业的迅速发展,传统的人工监测方式已难以满足现代农业的高效率与精准性需求。本文介绍了一种基于LabVIEW软件的果园开沟深度监测系统,该系统通过集成先进的传感技术与数据处理算法,实现了对开沟深度的实时精确监测和自动控制&…

11.SPI通信

SPI理论 常规四线:SCLK、CS、MOSI(主向从发)、MISO(从向主发) 同步、串行、全双工、速率(MHz) 一主一从、一主多从、不能多主 工作模式: CPOL 0:总线空闲状态时钟为低电平,1:总线空闲状态时钟为高电平 CPHA 0&#…

【Python系列】执行 Shell 命令的六种方法

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

0.91寸OLED迷你音频频谱

一、简介 音频频谱在最小0.91寸OLED 屏幕上显示,小巧玲珑 二、应用场景 本模块为音频频谱显示模块,用来获取声音频谱并展示频谱,跟随音乐声音律动 三、产品概述 基于主控芯片设计的将声音采集分析频谱,显示到0.91寸OLED的功能…

【Git】常见命令的使用

Git 介绍流程安装常见命令本地仓与远程仓关联 介绍 Git、Svn:版本控制器(用于多人团队协作) Svn:集中式版本控制器;版本库集中放在中央服务器,操作非常简单,鼠标右键提交、新增、下载 Git&…

华为OD机试 - 模拟目录管理 - 栈(Java 2024 D卷 100分)

华为OD机试 2024D卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(D卷C卷A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测…

博弈论,CF 1600E - Array Game

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1600E - Array Game 二、解题报告 1、思路分析 记最长递增前缀长度为L&a…

点云倒角距离(Chamfer Distance,CD)

本文为专栏《Python三维点云实战宝典》系列文章,专栏介绍地址“【python三维深度学习】python三维点云从基础到深度学习_python3d点云从基础到深度学习-CSDN博客”。配套书籍《人工智能点云处理及深度学习算法》提供更加全面和系统的解析。 点云倒角距离&#xff08…

零基础5分钟上手亚马逊云科技-高可用Web系统设计最佳实践

简介: 欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。 我会每天介绍一个基于亚马逊云科技…