蓝桥杯单片机组备赛——数码管动态显示

✨文章内容会不断优化,如果你感兴趣的话,欢迎点藏收藏关注我哟
🧨如果文章有哪里看不懂的欢迎评论区或私信留言,我会及时回复的
⏰如果文章出现错误,欢迎指正,看到后我会马上改正

文章目录

  • 一、动态显示原理
  • 二、动态显示的目的
    • 2.1 单片机IO口有限
    • 2.2 节省IO口资源
    • 2.3 节能
  • 三、代码编写

一、动态显示原理

  在数码管动态显示中,工作原理主要基于视觉暂留效应。视觉暂留效应是一种生理现象,当图像快速闪烁或移动时,它在我们眼睛中留下的影像会持续留存短暂的时间,这使得我们可以看到一个连续不断的图像,而不是一系列单独的闪烁或移动的图像。
  数码管动态显示具体来说是这样实现的:首先,你选中其中一个数码管(通常由硬件电路如译码器完成),并且将你想要在数码管上显示的数字或字符传送到相应的段上。然后,你迅速切换(20ms左右)到下一个数码管,并将你想要显示的内容传送到这个数码管的相应段上。这个过程在所有的数码管之间快速循环,以达到同时显示在所有数码管上的效果。每个数码管的点亮时间非常短,但由于视觉暂留效应,我们看到的效果是所有的数码管都在同时显示内容。
  这种方式的优点是,尽管一次只能驱动一个数码管,但节省了大量的硬件资源。然而,缺点在于需要通过编程控制,以确保显示内容持续更新,从而创建出一种所有数码管都在持续显示的错觉。如果刷新速度过慢,我们可能会看到显示内容的闪烁。一般来说,如果刷新频率能够达到50Hz或以上,就足以避免人眼察觉到的闪烁现象。

二、动态显示的目的

2.1 单片机IO口有限

假设开发板上8个数码管都有独立的段码输入,8个数码管每个都要8个段选输入IO(a b c d e f g dp),且每一个都要有位选IO(com x),那么一共需要8*8+8=72个IO口,很明显51没有那么多IO口。如果8个数码管共用段码输入,那么只需要8+8=16个IO口,又因为段选和位选共用一个P0口,所以只需要8个IO口就能够实现段选和位选。

2.2 节省IO口资源

即使IO口够用的情况下,通常也不会采用每个数码管独立的段选信号,太浪费资源了。

2.3 节能

通过视觉暂留效应和数码管余辉效应,大脑感受不到数码管熄灭了一段时间,熄灭的这段时间就可以节省下大量的能力。

三、代码编写

动态数码管显示就是基于静态数码管显示的基础上
单个数码管显示代码

void display_SMG_Bit(unsigned char dat, unsigned pos)
{/*消影法2*/P0=0xff;selectHC573(7);selectHC573(0);P0=0x01<<(pos-1);selectHC573(6);selectHC573(0);P0=dat;selectHC573(7);selectHC573(0);
}

动态数码管显示代码

void display_D_SMG(int dat1)
{	display_SMG_Bit(dat[2],1);  // 显示第一个数码Delay(300);					// 延时一段时间2ms左右最佳display_SMG_Bit(dat[0],2);	// 显示第二个数码Delay(300);					// 延时一段时间display_SMG_Bit(dat[2],3);	// 显示第三个数码Delay(300);					// 延时一段时间display_SMG_Bit(dat[3],4);Delay(300);display_SMG_Bit(dat[16],5);Delay(300);display_SMG_Bit(dat[16],6);Delay(300);display_SMG_Bit(dat[dat1 / 10],7);Delay(300);display_SMG_Bit(dat[dat1 % 10],8);Delay(300);
}

📌数码管刷新频率指的是,所有用到的数码管刷新的频率,并不是单个数码管的刷新频率!
📌如何解决数码管“串台”,导致数码管显示不正常!
📌利用软件延时或定时器实现动态数码管显示有什么区别?
📌动态数码管显示有一个重要的细节——消影
在这里插入图片描述

未完待续…

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

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

相关文章

Pandas实战100例 | 案例 29: 时间序列分析 - 滚动窗口计算

案例 29: 时间序列分析 - 滚动窗口计算 知识点讲解 时间序列数据分析是数据科学中的一个重要领域。Pandas 提供了处理时间序列的强大功能&#xff0c;包括滚动窗口计算。滚动窗口计算可以用于平滑时间序列数据&#xff0c;识别趋势和模式。 滚动窗口计算: 使用 rolling 方法…

oracle 19c容器数据库data dump数据泵传输数据(3)---完全传输

目录 查看pdb1 创建pdb2 从pdb1 中导出元数据 在pdb2中导入元数据&#xff08;dmp文件&#xff09; Full Transportable Export/Import: Example 只传输除了system&#xff0c;sysaux&#xff0c;temp&#xff0c;undo以外的用户表空间&#xff0c;這種方式傳輸的是用戶自定…

一文学会服务网格与istio使用

服务网格 现代应用程序通常被设计成微服务的分布式集合&#xff0c;每个服务执行一些离散的业务功能。服务网格是专门的基础设施层&#xff0c;包含了组成这类体系结构的微服务网络。 服务网格不仅描述了这个网络&#xff0c;而且还描述了分布式应用程序组件之间的交互。所有在…

如何生成文本: 通过 Transformers 用不同的解码方法生成文本

如何生成文本: 通过 Transformers 用不同的解码方法生成文本 假设 $p0.92$&#xff0c;Top-p 采样对单词概率进行降序排列并累加&#xff0c;然后选择概率和首次超过 $p92%$ 的单词集作为采样池&#xff0c;定义为 $V_{\text{top-p}}$。在 $t1$ 时 $V_{\text{top-p}}$ 有 9 个…

运用AI搭建中间服务层(五)

其他文件的修改 ValuesControllers.cs 注意Post的参数从[FromBody]变成了[FromForm]&#xff0c;以便接收上传的图片流数据 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading.Tasks; using CognitiveMi…

Halcon滤波器sobel_amp算子

Halcon滤波器sobel_amp算子 Halcon 提供了大量的边缘滤波器&#xff0c;最常用的是Sobel滤波器。它是一种经典的边缘检测算子&#xff0c;速度和效率都非常令人满意。其在Halcon中对应的算子为sobel amp算子和sobel_dir算子&#xff0c;二者都是使用Sobel算子进行边缘检测。前…

【LangChain学习之旅】—(8) 输出解析:用OutputParser生成鲜花推荐列表

【LangChain学习之旅】—&#xff08;8&#xff09; 输出解析&#xff1a;用OutputParser生成鲜花推荐列表 LangChain 中的输出解析器Pydantic&#xff08;JSON&#xff09;解析器实战第一步&#xff1a;创建模型实例第二步&#xff1a;定义输出数据的格式第三步&#xff1a;创…

运算电路(1)——加法器

一、引言 微处理器是由一片或少数几片大规模集成电路组成的中央处理器。这些电路执行控制部件和算术逻辑部件的功能。微处理器能完成取指令、执行指令&#xff0c;以及与外界存储器和逻辑部件交换信息等操作&#xff0c;是微型计算机的运算控制部分。它可与存储器和外围电路芯片…

VB6,VBA保存ADO记录集并重新加载更新adPersistADTG

便携式计算&#xff08;例如&#xff0c;使用笔记本电脑&#xff09;催生了对可以同时在连接和断开状态下运行的应用程序的需求。 ADO 增加了这方面的支持&#xff0c;使开发人员能够将客户端游标 Recordset 保存到磁盘并稍后重新加载。 有多种场景可以使用这种类型的功能&…

Redis面试题13

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式是什么&#xff1f; Redis 的发布订阅模式允许多个客户端订阅一个频道&#xff0c;当消息被发布到该频道时&#xff0c;所有订阅该频道的客户端都会收到该消息。Redis 的发布订阅模式分为两个角色&#xff1a;发布者和订阅…

K8S Nginx Ingress Controller client_max_body_size 上传文件大小限制

现象 k8s集群中&#xff0c;上传图片时&#xff0c;大于1M就会报错 413 Request Entity Too Large Nginx Ingress Controller 的版本是 0.29.0 解决方案 1. 修改configmap kubectl edit configmap nginx-configuration -n ingress-nginx在 ConfigMap 的 data 字段中设置参数…

Zabbix监控系统及部署

目录 前言 一个完整的项目 业务架构 运维架构 优秀监控软件的好处 1.zabbix概述 zabbix是什么 zabbix监控原理 Zabbix6.0新特性 1.Zabbix server高可用防止硬件故障或计划维护期的停机 2.Zabbix6.0 LTS新增Kubernetes监控功能&#xff0c;可以在Kubernetes系统从多个…

JS中的File(一):Blob对象详解

一、定义 Blob是一个装着二进制数据的容器对象。Blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取&#xff0c;也可以转换成 ReadableStream 来用于数据操作。 二、属性 size&#xff1a;只读属性&#xff0c;Blob中的字节数type&…

前端工程化相关

工具方法&#xff1a; 知道软件包名&#xff0c;拿到源码或者路径的方法 在浏览器输入以下内容&#xff0c;就可以找到你想要的。。。 unpkg.com/输入包名 一、模块化 ESM特性清单&#xff1a; 自动采取严格模式&#xff0c;忽略“use strict”每个ESM模块都是单独的私有作用…

nSum的java解法

两数之和 1. 两数之和 - 力扣&#xff08;LeetCode&#xff09; 可以使用哈希表的方法来解决 如果哈希表中不存在 target - a 这个元素&#xff0c;将这个元素值座位 key&#xff0c;下标作为 value 加入到哈希表中如果存在&#xff0c;返回两个元素的下标即可如果遍历到数组…

网络——华为与华三

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆云计算学堂 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 写在前面 大家好&#xff0c;我是网络豆&#xff0…

Elasticsearch:是时候离开了! - 在 Elasticsearch 文档上使用 TTL

作者&#xff1a;来自 Elastic David Pilato 想象一下&#xff0c;圣诞老人必须向世界上所有的孩子们分发礼物。 他有很多工作要做&#xff0c;他需要保持高效。 他有一份所有孩子的名单&#xff0c;并且知道他们住在哪里。 他很可能会将礼物按区域分组&#xff0c;然后再交付。…

docker部署ng实现反向代理

场景 按规定尽可能减少开放到外网的端口&#xff0c;所以需要将多个服务部署到一个ip一个端口上。 方案 使用ng实现请求转发。根据http请求中的host与ng配置文件中的server_name匹配&#xff0c;转发到对应的机器上。 在docker上部署三个容器&#xff0c;每个容器中启动一个…

Java内存模型之可见性

文章目录 1.什么是可见性问题2.为什么会有可见性问题3.JMM的抽象&#xff1a;主内存和本地内存3.1 什么是主内存和本地内存3.2 主内存和本地内存的关系 4.Happens-Before原则4.1 什么是Happens-Before4.2 什么不是Happens-Before4.3 Happens-Before规则有哪些4.4 演示&#xff…

【SQL注入】SQLMAP v1.7.11.1 汉化版

下载链接 【SQL注入】SQLMAP v1.7.11.1 汉化版 简介 SQLMAP是一款开源的自动化SQL注入工具&#xff0c;用于扫描和利用Web应用程序中的SQL注入漏洞。它在安全测试领域被广泛应用&#xff0c;可用于检测和利用SQL注入漏洞&#xff0c;以验证应用程序的安全性。 SQL注入是一种…