普中51单片机:数码管显示原理与实现详解(四)

在这里插入图片描述

文章目录

  • 引言
  • 数码管的结构
  • 数码管的工作原理
  • 静态数码管
    • 电路图
    • 开发板IO连接图
    • 代码演示
  • 动态数码管
    • 实现步骤
    • 数码管驱动方式
    • 电路图
    • 开发板IO连接图
    • 真值表
    • 代码演示1
    • 代码演示2
    • 代码演示3

引言

数码管(Seven-Segment Display)是一种常见的显示设备,广泛应用于电子时钟、计算器、家电和其他数字设备中。数码管由七个独立的LED段组成,排列成一个类似数字“8”的形状。通过控制这些LED段的开关状态,可以显示0到9的数字及一些字母和符号。同时也称为LED数码管。
在这里插入图片描述

数码管的结构

一个标准的七段数码管包括七个LED段,每个段用一个字母表示,从A到G。另外,有些数码管还包括一个小数点(DP),被称为八段数码管,用于显示小数或分隔不同的数字。

						  --A--			  --A--|     |		 |     |F     B		 F     B|     |		 |     |--G--			  --G--|     |		 |     |E     C		 E     C|     |		 |     |--D--			  --D-- • DP

数码管的工作原理

数码管的每个段实际上是一个独立的LED,通过控制各个LED的通断状态,可以组合成不同的字符。数码管通常有两种连接方式:共阳极和共阴极

  1. 共阳极数码管:所有的LED阳极(正极)连接在一起,通常接到电源正极。点亮某个段时,需将相应的段的阴极(负极)接地 GND。
  2. 共阴极数码管:所有的LED阴极(负极)连接在一起,通常接地。点亮某个段时,需将相应的段的阳极(正极)接电源正极。

请添加图片描述

静态数码管

静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持直到送入新字形码为止。

电路图

从资料中提供的电路图可知,此开发板静态数码管使用的是共阳极数码管,如果使用共阴数码管,为了不影响其他IO口的电流,要增加IO口的驱动电路,单片机主要是用来控制的,如果要驱动一些外部的设备,通常会使用专门的驱动电路,比如74HC245芯片,74HC573芯片。
在这里插入图片描述

开发板IO连接图

请添加图片描述

代码演示

控制静态数码管显示数字0,即让P0口端口输出数字0的段码0x3F(共阴,共阳极取反即可),其他数字可根据连接方式自行计算。

#include <REGX52.H>#define SMG_STATIC P0void main()
{SMG_STATIC = ~0x3f;while(1){}
}

动态数码管

动态数码管显示,也称为动态扫描显示,是通过快速轮流点亮各个位数码管来实现的。利用人眼的视觉暂留效应,使人感觉所有数码管同时显示不同的数字。

实现步骤

  1. 段选和位选:将所有位数码管的段选线并联在一起,通过位选控制哪一位数码管有效。
  2. 轮流显示:轮流向各个位数码管送出字型码和相应的位选信号。由于切换速度很快,人眼无法分辨出切换过程,从而感觉所有数码管同时显示。
  3. 消影处理:在切换位选信号之前,先将段选信号清零,防止残影现象。

数码管驱动方式

  1. 单片机直接扫描:硬件设备简单,但会消耗大量的单片机CPU时间。
  2. 专用驱动芯片:内部自带显存、扫描电路,单片机只需告诉它显示什么即可。如:TM1640芯片、74HC595

电路图

请添加图片描述
由电路图可知,该开发板的动态数码管是由两个4位一体数码管组成的,一共八个数码管,它们的公共端单独引出来,位选段全部并联在一起,动态进行显示,采用的是共阴极。

八个公共端同一个时刻,只有一个数码管可以点亮,因为位选段是并联在一起的,所以即使有多个公共端同一个时刻被点亮,数码管显示的数据也是相同的。可以利用人眼视觉暂留和余晖效应进行延时操作即可!

动态数码管要搭配74H138模块74H245

  • 74H138:一种常用的 3 线到 8 线译码器芯片,主要用于地址解码、数据路由和逻辑控制。它可以将输入的三位二进制代码转换成八位的输出,常用于单片机系统中进行 I/O 扩展。即三个输入端操作8个输出端,具体操作方法可查看真值表。
    在这里插入图片描述

    • 输入端:A0、A1、A2 为三位二进制加权地址输入端口。
    • 输出端:Y0 至 Y7 为八个输出端口。
    • 使能端:E1 和 E2 为低有效,E3 为高有效。只有当 E1 和 E2 置低且 E3 置高时(默认),芯片才会工作
  • 74H245:一种常用的双向总线缓冲器芯片,防止信号干扰。可以将高电平信号转换为低电平信号,或将低电平信号转换为高电平信号,确保不同电平逻辑设备之间的兼容性。它能够隔离不同总线之间的电平差异和噪声干扰,确保数据的可靠传输。

开发板IO连接图

请添加图片描述

74H138的A0(A)与P22相连;A1(B)与P23相连;A2(C)与P24相连(真值表)

真值表

在这里插入图片描述
L表示0(低电平),H表示1(高电平)

代码演示1

根据真值表操作第五个LED数码管,显示数字6,Init_Port()函数用于操作操作真值表,为了方便对比,这里保留了静态数码管的代码。

#include <REGX52.H>#define SMG_STATIC P0void Init_Port()
{P2_2 = 0;P2_3 = 0;P2_4 = 1;
}void main()
{Init_Port();//显示LED数码管5SMG_STATIC = ~0x7d;P1 = 0x7d;while(1){}
}

代码演示2

动态数码管延时循环显示数字6,如果需要循环显示数字1到数字8,定义数组即可。

#include <REGX52.H>#define SMG_STATIC P0void DelayXms(unsigned int xms)	//@12.000MHz
{unsigned char data i, j;while(xms){i = 2;j = 239;do{while (--j);} while (--i);xms--;}
}void Init_Port(unsigned char Location)
{switch(Location){case 1:P2_2 = 0;P2_3 = 0;P2_4 = 0;break;case 2:P2_2 = 1;P2_3 = 0;P2_4 = 0;break;case 3:P2_2 = 0;P2_3 = 1;P2_4 = 0;break;case 4:P2_2 = 1;P2_3 = 1;P2_4 = 0;break;case 5:P2_2 = 0;P2_3 = 0;P2_4 = 1;break;case 6:P2_2 = 1;P2_3 = 0;P2_4 = 1;break;case 7:P2_2 = 0;P2_3 = 1;P2_4 = 1;break;case 8:P2_2 = 1;P2_3 = 1;P2_4 = 1;break;}
}void main()
{unsigned char i;SMG_STATIC = ~0x7d;while(1){for(i = 1; i <= 8;i++){Init_Port(i);P1 = 0x7d;DelayXms(1000);}}
}

代码演示3

利用余晖效应,动态持续的显示数字1到8,P1 = 0x00; 这一行用于消影。消影的作用是防止数码管显示的残影现象。具体来说,当你在多位数码管上显示不同的数字时,如果不及时清除前一个数字的显示,可能会出现残影,即前一个数字的部分段码仍然亮着,影响当前数字的显示效果。通过在每次显示完一个数字后,将 P1 置为 0x00,可以确保所有段码都熄灭,从而避免残影现象,确保每次显示的数字都是清晰且正确的。

#include <REGX52.H>#define SMG_STATIC P0//共阴极数码管显示 0~F 的段码数据
unsigned char gsmg_code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void DelayXms(unsigned int xms)	//@12.000MHz
{unsigned char data i, j;while(xms){i = 2;j = 239;do{while (--j);} while (--i);xms--;}
}void Init_Port(unsigned char Location)
{switch(Location){case 1:P2_2 = 0;P2_3 = 0;P2_4 = 0;break;case 2:P2_2 = 1;P2_3 = 0;P2_4 = 0;break;case 3:P2_2 = 0;P2_3 = 1;P2_4 = 0;break;case 4:P2_2 = 1;P2_3 = 1;P2_4 = 0;break;case 5:P2_2 = 0;P2_3 = 0;P2_4 = 1;break;case 6:P2_2 = 1;P2_3 = 0;P2_4 = 1;break;case 7:P2_2 = 0;P2_3 = 1;P2_4 = 1;break;case 8:P2_2 = 1;P2_3 = 1;P2_4 = 1;break;}
}void main()
{unsigned char i;SMG_STATIC = ~0x7d;while(1){for(i = 1; i <= 8;i++){Init_Port(i);P1 = gsmg_code[i];DelayXms(1);P1 = 0x00;//消影}}
}

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

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

相关文章

Visual studio 2023下使用 installer projects 打包C#程序并创建 CustomAction 类

Visual studio 2023下使用 installer projects 打包C#程序并创建 CustomAction 类 1 安装Visual studio 20203,并安装插件1.1 下载并安装 Visual Studio1.2 步骤二:安装 installer projects 扩展插件2 创建安装项目2.1 创建Windows安装项目2.2 新建应用程序安装文件夹2.3 添加…

A Threat Actors 出售 18 万名 Shopify 用户信息

BreachForums 论坛成员最近发布了涉及 Shopify 的重大数据泄露事件。 据报道&#xff0c;属于近 180,000 名用户的敏感数据遭到泄露。 Shopify Inc. 是一家总部位于安大略省渥太华的加拿大公司。 开发和营销同名电子商务平台、Shopify POS 销售点系统以及专用于企业的营销工…

SQL脚本初始化数据

创建或选择某个数据库&#xff0c;运行窗口输入&#xff1a;source,再拖入文件&#xff0c;回车即可&#xff1b; 虽然也可以使用图形化工具初始化数据&#xff0c;但是他会有内存限制&#xff0c;也就是较大的sql文件不可以初始化&#xff0c;而运行窗口没有sql文件大小限制&…

本周23个Github有趣项目llama-agents等

23个Github有趣的项目、工具和库 1、Positron 下一代数据科学 IDE。 您使用 VS Code 进行数据科学&#xff08;Python 或 R&#xff09;&#xff0c;但希望它包含专用控制台、变量窗格、数据浏览器和其他用于特定数据工作的功能。您使用 Jupyterlab 进行数据科学&#xff08;…

python读取csv出错怎么解决

Python用pandas的read_csv函数读取csv文件。 首先&#xff0c;导入pandas包后&#xff0c;直接用read_csv函数读取报错OSError&#xff0c;如下&#xff1a; 解决方案是加上参数&#xff1a;enginepython。 运行之后没有报错&#xff0c;正在我欣喜之余&#xff0c;输出一下d…

centos7部署mysql8.0

1.安装MySQL的话会和MariaDB的文件冲突&#xff0c;所以需要先卸载掉MariaDB。查看是否安装mariadb rpm -qa | grep mariadb 2. 卸载mariadb rpm -e --nodeps 查看到的文件名 3.下载MySQL安装包 MySQL官网下载地址: MySQL :: Download MySQL Community Serverhttps://dev.mys…

19.JWT

1►JWT博客推荐 阮老师讲得很好了&#xff0c;网址如下&#xff1a; http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html 2►ry是怎么践行JWT的呢&#xff1f; 问题一&#xff1a;不登录的时候有token吗&#xff1f; 答&#xff1a;没有&#xff0c;所…

blender 纹理绘制-贴花方式

贴画绘制-1分钟blender_哔哩哔哩_bilibili小鸡老师的【Blender风格化角色入门教程】偏重雕刻建模https://www.cctalk.com/m/group/90420100小鸡老师最新的【风格化角色全流程进阶教程】偏重绑定。早鸟价进行中&#xff01;欢迎试听https://www.cctalk.com/m/group/90698829, 视…

Splunk Enterprise 中的严重漏洞允许远程执行代码

Splunk 是搜索、监控和分析机器生成大数据的软件领先提供商&#xff0c;为其旗舰产品 Splunk Enterprise 发布了紧急安全更新。 这些更新解决了几个构成重大安全风险的关键漏洞&#xff0c;包括远程代码执行 (RCE) 的可能性。 受影响的版本包括 * 9.0.x、9.1.x 和 9.2.x&…

ARM架构和Intel x86架构

文章目录 1. 处理器架构 2. ARM架构 3. Intel x86架构 4. 架构对比 1. 处理器架构 处理器架构是指计算机处理器的设计和组织方式&#xff0c;它决定了处理器的性能、功耗和功能特性。处理器架构影响着从计算机系统的硬件设计到软件开发的各个方面。在现代计算技术中&#…

计算机组成原理学习笔记(一)

计算机组成原理 [类型:: [[计算机基础课程]] ] [来源:: [[B站]] ] [主讲人:: [[咸鱼学长]] ] [评价:: ] [知识点:: [[系统软件]] & [[应用软件]] ] [简单解释:: 管理计算机系统的软件&#xff1b; 按照任务需要编写的程序 ] [问题:: ] [知识点:: [[机器字长]] ] [简单…

绝区壹--LLM的构建模块

前言 语言是人类交流的本质&#xff0c;大型语言模型 (LLM) 凭借其出色的理解和生成类似人类的文本的能力&#xff0c;彻底改变了我们与语言互动和利用语言的方式。深入研究 LLM 的构建块&#xff08;向量、标记和嵌入&#xff09;&#xff0c;揭示了使这些模型能够以前所未有…

辣子简报芬芳喜事特辑

【辣子简报芬芳喜事特辑】&#x1f389;在这个季节的尾声&#xff0c;当一缕阳光温柔地洒在打包好的行囊上&#xff0c;我们不约而同地停下了忙碌的脚步&#xff0c;回望那段共同编织的璀璨时光——79天的并肩作战&#xff0c;如同一段精彩绝伦的旅程&#xff0c;如今已缓缓驶向…

3D地图是智慧城市可视化项目绕不开的技术!来我帮你解决

**3D地图&#xff1a;智慧城市可视化项目绕不开的技术&#xff01;来我帮你解决** 智慧城市已成为未来城市发展的必然趋势。而3D地图作为智慧城市可视化项目的核心技术之一&#xff0c;其重要性不言而喻。本文将深入探讨3D地图在智慧城市建设中的应用及其优势&#xff0c;为您…

2-5 softmax 回归的简洁实现

我们发现通过深度学习框架的高级API能够使实现线性回归变得更加容易。 同样&#xff0c;通过深度学习框架的高级API也能更方便地实现softmax回归模型。 本节如在上节中一样&#xff0c; 继续使用Fashion-MNIST数据集&#xff0c;并保持批量大小为256。 import torch from torc…

黑马的ES课程中的不足

在我自己做项目使用ES的时候&#xff0c;发现了黑马没教的方法&#xff0c;以及一些它项目的小问题 搜索时的匹配方法 这个boolQuery().should 我的项目是通过文章的标题title和内容content来进行搜索 但是黑马它的项目只用了must 如果我们的title和content都用must&#x…

Apache Seata新特性支持 -- undo_log压缩

本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 Apache Seata新特性支持 – undo_log压缩 Seata新特性支持 – undo_log压缩 现状 & 痛点…

【IT领域新生必看】 Java编程中的重写(Overriding)规则:初学者轻松掌握的全方位指南

文章目录 引言什么是方法重写&#xff08;Overriding&#xff09;&#xff1f;方法重写的基本示例 方法重写的规则1. 方法签名必须相同示例&#xff1a; 2. 返回类型可以是子类型&#xff08;协变返回类型&#xff09;示例&#xff1a; 3. 访问修饰符不能比父类的更严格示例&am…

WordPress子比主题美化文章顶部添加百度收录按钮

要在WordPress子主题中美化文章顶部并添加百度收录按钮&#xff0c;你可以按照以下步骤操作&#xff1a; 首先&#xff0c;确保你的主题支持自定义CSS。如果不支持&#xff0c;你需要在主题目录下创建一个名为style.css的文件&#xff0c;并将以下代码复制到该文件中。如果你的…

全网最详细的appium 自动化测试iOS(二)

一、环境准备&#xff1a; 1、安装appium 2、xcode (appium 版本&#xff1a;12.1.0 xcode版本&#xff1a;12.5 可正常运行&#xff0c;ps:appium 版本&#xff1a;12.1.0 xcode版本&#xff1a;13.0 一直报奇奇怪怪的错误&#xff09; 3、依赖工具包安装 brew install…