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

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

文章目录

  • 一、动态显示原理
  • 二、动态显示的目的
    • 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);
}

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

未完待续…

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

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

相关文章

Java SE入门及基础(10)

switch选择结构 1. 概念 switch 表示开关的意思&#xff0c;为了帮助理解&#xff0c;下面以线路为例&#xff0c;进行解释说明 上图中表示一条带有多个开关的线路&#xff0c;当开关打开时&#xff0c;该开关所控制的灯即被点亮。 2. 语法规则 switch ( 表达式 ){ //…

SECS/GEM的变量SVID是什么?JAVA SECS通信 JAVA与SECS集成资料大全JAVA开发SECS快速入门资料

Java与SECS基础通信 Java实现SECS指令S2F17获取时间 Java实现SECS指令 S10F3 终端单个显示例子 工艺配方管理S7FX Java实现SECS指令 S5F1报警/取消报警上传 实例源码及DEMO请查阅 变量可以是设备的状态信息 定义&#xff1a; 此功能允许主机查询设备数据变量&#x…

C#基于ScottPlot进行可视化

前言 上一篇文章跟大家分享了用NumSharp实现简单的线性回归&#xff0c;但是没有进行可视化&#xff0c;可能对拟合的过程没有直观的感受&#xff0c;因此今天跟大家介绍一下使用C#基于Scottplot进行可视化&#xff0c;当然Python的代码&#xff0c;我也会同步进行可视化。 P…

虚幻引擎nDisplay教程:如何同步nDisplay节点与Switchboard + Helix Core

对于使用大型LED屏幕进行拍摄的虚拟制作团队来说&#xff0c;虚幻&#xff08;Unreal&#xff09;的nDisplay是一个重要的工具。但是&#xff0c;在nDisplay中将正确版本的文件发送到每个节点会非常耗时。立即阅读本文&#xff0c;您将了解到如何使用Perforce Helix Core版本控…

【b站咸虾米】新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握

课程地址&#xff1a;【新课uniapp零基础入门到项目打包&#xff08;微信小程序/H5/vue/安卓apk&#xff09;全掌握】 https://www.bilibili.com/video/BV1mT411K7nW/?p12&share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 三、vue语法 继续回到官…

Python之jieba分词相关介绍

1.jieba分词的安装 直接在cmd窗口当中pip install即可 2.jieba分词的介绍 jieba分词是目前比较好的中文分词组件之一&#xff0c;jieba分词支持三种模式的分词(精确模式、全模式、搜索引擎模式)&#xff0c;并且支持自定义词典(这一点在特定的领域很重要&#xff0c;有时候…

VMware workstation搭建与安装AlmaLinux-9.2虚拟机

VMware workstation搭建与安装AlmaLinux-9.2虚拟机 适用于需要在VMware workstation平台安装AlmaLinux-9.2&#xff08;最小化安装、无图形化界面&#xff09;虚拟机。 1. 安装准备 1.1 安装平台 Windows 11 1.2. 软件信息 软件名称软件版本安装路径VMware-workstation 1…

【前端素材】bootstrap5实现美食餐饮网站RegFood

一、需求分析 美食餐饮网站是指专门提供关于美食和餐饮的信息、服务和资源的在线平台。这类网站通常提供以下功能&#xff1a; 餐厅搜索和预订&#xff1a;用户可以在网站上搜索附近的餐厅&#xff0c;并预订桌位。网站会提供餐厅的详细信息&#xff0c;包括菜单、地址、电话号…

Jmeter 性能-监控服务器

Jmeter监控Linux需要三个文件 JMeterPlugins-Extras.jar (包&#xff1a;JMeterPlugins-Extras-1.4.0.zip) JMeterPlugins-Standard.jar (包&#xff1a;JMeterPlugins-Standard-1.4.0.zip) ServerAgent-2.2.3.zip 1、Jemter 安装插件 在插件管理中心的搜索Servers Perform…

JDK介绍

JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来&#xff0c;JDK已经成为使用最广泛的Java SDK&#xff08;Software development kit&#xff09;&#xff0c;JDK是一个写Java的applet和应用程序的程序开发环境。它由一个处于操作系统层之…

vue3-计算属性

计算属性 模板中的表达式虽然方便&#xff0c;但也只能用来做简单的操作。如果在模板中写太多逻辑&#xff0c;会让模板变得臃肿&#xff0c;难以维护。 根据作者今年是否看过书展示不同信息 <script lang"ts" setup> import { ref, reactive } from "…

C++11 14 17内存管理

智能指针 unique_ptr 初始化 访问和移动赋值 重置和移动内存资源 自定义删除器 shared_ptr 原理 自定义删除器 分配器allocator和new重载 new表达式原理 operator new delete placement new new (buf) 是一种 "placement new" 的使用方式&#xff0c;它允许在已…

thinkphp学习06-连接数据库与模型初探

新建数据库 CREATE DATABASE tp6stu01 CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;创建表和数据 DROP TABLE IF EXISTS tp_user; CREATE TABLE tp_user (id mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 自动编号,username varchar(20) CHARACTER SET utf8 COLL…

绘制几何图形(Shape)

目录 1、创建绘制组件 2、形状视口viewport 3、自定义样式 4、场景示例 绘制组件用于在页面绘制图形&#xff0c;Shape组件是绘制组件的父组件&#xff0c;父组件中会描述所有绘制组件均支持的通用属性。具体用法请参考Shape。 1、创建绘制组件 绘制组件可以由以下两种形式…

Spring MVC的RequestMapping注解、controller方法返回值

1.使用说明 作用&#xff1a;用于建立请求URL和处理请求方法之间的对应关系。 出现位置&#xff1a; 类上&#xff1a; 请求 URL的第一级访问目录。此处不写的话&#xff0c;就相当于应用的根目录。写的话需要以/开头。它出现的目的是为了使我们的 URL 可以按照模块化管理&…

Netty开篇——NIO章上(三)

Java NIO基本介绍 java non-blocking I/O 称为NIO(也叫New IO)。JDK4开始提供,同步非阻塞相关内容在 java.nio 包及子包下&#xff0c;对java.io 包中的很多类进行改写。三大核心: Channel(通道)&#xff0c;Buffer(缓冲区),Selector(选择器)NIO是面向缓冲区或者面向块编程的。…

企业网站建设中常用的英文翻译

下面好代码网在长期的网站建设业务中总结的&#xff0c;一些在企业网站建设中词语的常用翻译&#xff0c;可以让你的企业网站更具有专业性。如果你做中英文双语版本网站或者外贸网站的请收藏备用。 网站导航 site map 公司简介 PROFILE or COMPANY Profile or Company 综述 Gen…

Java文件自动生成文档

说明 此文章根据Gemini Pro 生成资料整理。 生成文档 javadoc -d mydoc -author -version HelloWorld.java javadoc -d mydoc -author -version HelloWorld.java 命令用于生成 Java 源文件的javadoc文档&#xff0c;并将javadoc文档输出到 mydoc 目录中。 javadoc&#xf…

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

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

【服务器数据恢复】Hyper-V虚拟化数据恢复案例

服务器数据恢复环境&#xff1a; Windows Server操作系统服务器&#xff0c;部署Hyper-V虚拟化环境&#xff0c;虚拟机的硬盘文件和配置文件存放在某品牌MD3200存储中&#xff0c;MD3200存储中有一组由4块硬盘组成的raid5阵列&#xff0c;存放虚拟机的数据文件&#xff1b;另外…