1 如何在您的项目中添加数码管-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在您的项目中添加数码管

胖子的逆袭 来源:DevicePlus 作者:DevicePlus 2023-03-23 15:13 次阅读

这篇文章来源于DevicePlus.com英语网站的翻译稿。

在之前的项目中,我们已经展示了如何使用Arduino来控制LED矩阵。但是,如果您的项目只需要显示数字,那么最好使用七段数码管。这些数码管看起来像复古的数字闹钟,只需要七个LED就可以显示出数字。本指南将向您展示如何完成这个工作。

七段LED数码管工作原理

七段数码管是由7个LED组成的阵列,呈8字形,可以分别被点亮以显示不同的数字(在某些情况下显示的是字母)。通常会有第8个LED用作显示小数点。一些模块带有多个七段阵列。例如, 一个4位七段数码管可以用作时钟

为了简单起见,在本指南中,我们只显示一位数字。七段数码管可以采用以下两种形式之一:共阳极和共阴极 。在共阳极配置中,所有LED都连接到电源,可以通过将LED选择性地接地来对其进行控制。在共阴极配置中,情况刚好相反:所有LED都接地,然后通过选择性地连接电源来对LED单独进行控制。

您的数码管的确切配置可能会有所不同,所以请查看模块上的标记并找到规格表,以确认数码管连接的配置,以及哪些引脚对应于哪个LED。在本指南中,我们将使用5611AS,为共阴极配置。

为了成功运行代码,您还需要SevSeg库,可以在Github上找到资源。下载.zip文件后,进入Sketch > Include library > Add .ZIP library然后选择SevSeg库。现在,您就可以将此库导入到您的草图中了。

所需部件

与LED矩阵一样,该项目将需要相当多的布线和电阻器。由于每个LED都需要有自己的电阻器以避免烧坏,所以请确保准备足够的电阻器。对于整个项目,您需要以下部件:

Arduino Uno

poYBAGPy0h-AKVGzAACK9V2MX8I102.png

七段LED数码管

pYYBAGPy0iGAYz05AACjVM2S-RU983.jpg

电线

poYBAGPy0iSARikFAACVaV8CZI0452.png

8x 220 ohm电阻器

pYYBAGPy0ieAJAYkAAB_1g7BEic815.png

面包板

poYBAGPy0iqAXOKlAAFsqBFbUfo719.png

USB数据线

poYBAGPy0iyAC2qFAAA80oFZfRA595.png

Arduino IDE

pYYBAGPy0i-AfIx9AABB1vG6gtU835.png

由于接线会比较繁杂,请确保面包板上有足够的空间放置所需要的所有电线和电阻器。一切准备就绪后,我们开始进入下一环节。

代码

因为我们使用了SevSeg库,所以该项目的代码非常简单。首先,以下是您可以粘贴到IDE并上传的完整代码:

#include “SevSeg.h”
SevSeg digit;

void setup(){
byte numDigits = 1;
byte digitPins[] = {2, 3, 4, 5, 6, 7, 8, 9};
byte segmentPins[] = {6, 5, 2, 3, 4, 7, 8, 9};
bool resistorsOnSegments = true;

byte hardwareConfig = COMMON_CATHODE;
digit.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
digit.setBrightness(90);
}

void loop(){
for (int i = 0;i < 10;i++){
digit.setNumber(i);
digit.refreshDisplay();
delay(1000);
}
}

接下来,我们从前两行开始查看一下代码的各个部分。

#include “SevSeg.h”
SevSeg digit;

此处的第一行用于导入SevSeg.h库,让您可以使用该库中的所有命令。第二个用于创建一个SevSeg类型的对象,在本例中命名为“digit”,将用于控制您的数码管。对于具有多个数字的模块,您可以为每个数字添加一个对象,并分别进行命名。

void setup(){
byte numDigits = 1;
byte digitPins[] = {2, 3, 4, 5, 6, 7, 8, 9};
byte segmentPins[] = {6, 5, 2, 3, 4, 7, 8, 9};
bool resistorsOnSegments = true;

byte hardwareConfig = COMMON_CATHODE;
digit.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
digit.setBrightness(90);
}

在本部分中,我们将对数码管进行设置。这里的大部分工作都是由digit.begin()函数来完成的。根据SevSeg库文档,此命令用于告诉Arduino您的数码管具有哪些特征,例如位数(在本例中为1)、您用于寻址数码管的Arduino引脚(引脚2-9),以及电路中是否有电阻。segmentPins数组指定了哪个Arduino引脚对应于哪个段,包括从A到G以及最后的小数点。请参阅您的数码管文档以确认哪些段与哪些引脚相对应。

在传递给digit.begin函数之前,以上的每个参数都会被分配给一个变量,这有助于在之后对草图进行扩展。最后,digit.setBrightness用来指定点亮LED的亮度。

void loop(){
for (int i = 0;i < 10;i++){
digit.setNumber(i);
digit.refreshDisplay();
delay(1000);
}
}

在loop()部分,我们将通过一个循环来执行显示工作,在该循环中将从0计数到9,然后再重新开始。在每次迭代中,变量i将在用于在digit.setNumber 命令中告诉数码管显示哪个数字。SevSeg库会自动编译这一命令,然后将正确的信号发送到正确的LED段(只要您在上一部分中正确分配了它们)。接下来,调用digit.refreshDisplay来通知数码管更新数字。

最后,我们添加了一个 delay(1000)命令来使每个数字可以显示一秒钟。

接线


连接数码管将会涉及很多的接线工作,不过其实该过程并不像看起来那么复杂。再次说明,我们所使用的型号是5611AS,但如果您使用的是其他型号,请查看您的数码管规格。从数码管的底部(有小数点LED的一侧)开始,从左到右,引脚为1到5。在顶部,从左到右为引脚10到6。您可以将其视为从左下角开始为引脚1,然后沿逆时针绕数码管计数依次到引脚10。

对于该数码管,您需要在Arduino与数码管引脚之间连接8个电路,并且每个电路中间都有一个220欧姆电阻器。每个LED都需要一个电阻器来防止被烧坏。虽然您也可以在公共接地引脚后添加一个更高阻值的电阻器,但是这会导致不同数字显示出不同级别的亮度,而该亮度取决于点亮的段数。

在下面每个连接中,都要使用面包板在Arduino和数码管之间的电路中添加一个电阻器,并且将Arduino上的引脚连接到数码管上相应的引脚:

● 连接Arduino引脚2和数码管引脚 4
● 连接Arduino引脚3和数码管引脚 2
● 连接Arduino引脚4和数码管引脚 1
● 连接Arduino引脚5和数码管引脚 6
● 连接Arduino引脚6和数码管引脚 7
● 连接Arduino引脚7和数码管引脚 9
● 连接Arduino引脚8和数码管引脚 10
● 连接Arduino引脚9和数码管引脚 5

最后,数码管每一侧的两个中间引脚——引脚3和8——应该连接到Arduino上的GND。连接好数码管后,您可以上传代码并将其开启。请尝更改代码以显示不同的数字,然后查看您的显示效果。

pYYBAGPbhjqAbi1JAAAGd6_rQT0867.png

DevicePlus 编辑团队

设备升级版适用于所有热爱电子和机电一体化的人。

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    242

    文章

    23252

    浏览量

    660543
  • 数码管
    +关注

    关注

    32

    文章

    1882

    浏览量

    91060
  • Arduino
    +关注

    关注

    188

    文章

    6468

    浏览量

    186946
收藏 人收藏

    评论

    相关推荐

    请问SHT11测到的温湿度如何在数码管上显示?SHT11的程序用的官方的,如何增加数码管显示?

    请问SHT11测到的温湿度如何在数码管上显示?SHT11的程序用的官方的,如何增加数码管显示?采用四位数码管显示温度,四位数码管显示湿度。
    发表于 05-22 22:44

    请问有米字数码管与8段数码管的资料吗?

    我想做一个米字数码管与8段数码管的 Arduino 显示类库,可以用于一些小的LED米字与8段数码管的显示项目中。比如:计时器、日期牌、售
    发表于 06-24 01:49

    学51单片机之数码管部分

    从零学51单片机之数码管部分 目录1 数码管应用2 数码管内部结构及硬件原理图3 数码管硬件设计方法4 单片机驱动
    发表于 02-10 14:36 155次下载

    数码管的分类

    数码管的分类     数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管
    发表于 11-06 11:41 7462次阅读

    DS1302 数码管显示

    ds1302的使用程序,加数码管显示,只要自己改改管脚就行了。
    发表于 05-09 11:57 15次下载

    静态数码管

    静态数码管静态数码管静态数码管静态数码管
    发表于 05-13 15:39 6次下载

    数码管驱动电路的作用、分类及驱动电路设计

    本文为介绍数码管驱动电路的作用,数码管驱动电路有什么作用,数码管的分类及驱动电路设计、原理图。
    发表于 08-05 17:50 5.4w次阅读
    <b class='flag-5'>数码管</b>驱动电路的作用、分类及驱动电路设计

    数码管的用途

    本文首先介绍了数码管的分类,其次介绍了数码管的驱动方式,最后介绍了数码管的用途及应用范围。
    的头像 发表于 08-21 18:46 1.5w次阅读

    使用AVR单片机编写的宏定义加数码管的代码详细资料免费下载

    本文档的主要内容详细介绍的是使用AVR单片机编写的宏定义加数码管的代码详细资料免费下载。
    发表于 11-12 08:00 0次下载
    使用AVR单片机编写的宏定义<b class='flag-5'>加数码管</b>的代码详细资料免费下载

    led数码管怎么接线_LED数码管的测试

    本文主要介绍了LED数码管的安装接线方式及LED数码管的测试方法。
    发表于 10-09 10:44 2.7w次阅读

    51单片机按键控制数码管0~9_项目数码管应用实例

    (一)项目任务任务1:显示数字子任务1.1 数码管硬件电路认识子任务1.2 了解段选和位选概念子任务1.3 掌握数码管的静态显示方法任务2:数码管倒计时子任务2.1 掌握
    发表于 11-23 10:06 6次下载
    51单片机按键控制<b class='flag-5'>数码管</b>0~9_<b class='flag-5'>项目</b>五 <b class='flag-5'>数码管</b>应用实例

    静态数码管和动态数码管

    目录一,什么是数码管二,静态数码管的驱动三,动态数码管四,动态数码管显示编程实战五,使用38译码器驱动动态数码管一,什么是
    发表于 01-12 18:31 40次下载
    静态<b class='flag-5'>数码管</b>和动态<b class='flag-5'>数码管</b>

    数码管时钟开源项目

    德赢Vwin官网 网站提供《数码管时钟开源项目.zip》资料免费下载
    发表于 08-17 09:34 4次下载
    <b class='flag-5'>数码管</b>时钟开源<b class='flag-5'>项目</b>

    何在Raspberry Pi项目中添加Siri控制

    目的:本教程旨在教如何使用SiriControl开源Python框架在RaspberryPi项目中添加Siri功能和控制功能。
    的头像 发表于 02-27 10:27 761次阅读
    如<b class='flag-5'>何在</b>Raspberry Pi<b class='flag-5'>项目中</b><b class='flag-5'>添加</b>Siri控制

    51单片机数码管静态显示

    数码管静态显示其实在实际应用中很少,除非项目中就只用到了一位数码管显示,否则的话静态显示非常占用IO口。但是,静态显示又是动态显示的基础,所以,在这里我打算跟大家分享一下,数码管
    的头像 发表于 02-26 11:05 2020次阅读
    51单片机<b class='flag-5'>数码管</b>静态显示