本篇介绍四位数码管的使用,通过数码管库驱动四位数码管从0开始累加显示数字。

1. 四位数码管介绍

根据实际需要,把多个一位数码管封装在一起就成了多位数码管。常见的有两位、三位、四位、五位、六位等。

数码管根据位数不同,其封装的引脚也各不相同。但其内部都是将单个数码管的段选线a,b,c,d,e,f,g,dp对应连接在一起,公共极则相互独立。使用时分别通过控制不同的位选线(即单个数码管的公共极)来控制单个数码管的显示。以人眼难以分辨的速度进行刷新显示,即可达到多个数码管同时显示的效果。

2. 实验材料

  • Uno R3开发板
  • 配套USB数据线
  • 面包板及配套连接线
  • 四位共阴极数码管
  • 4个220Ω限流电阻

四位数码管引脚分布如下图所示,其中1,2,3,4表示对应位数码管的公共极。

3.实验步骤

1. 根据原理图搭建电路。

本次实验连线非常多,要注意不要接错。根据四位数码管的引脚图,a,b,c,d,e,f,g,dp引脚分别连接开发板的数字引脚7,6,5,10,11,8,9,4。数码管的1,2,3,4引脚分别串联220Ω限流电阻,电阻另一端分别连接开发板的数字引脚2,3,12,13。

实验原理图如下图所示:

实物连接图如下图所示:

2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

/** SevSegFour* 驱动四位数码管显示0到9999*/
#include "SevSeg.h"SevSeg sevseg;byte numDigits = 4; //数码管位数
byte digitPins[] = {2, 3, 12, 13}; //数码管公共极连接Arduino的引脚
byte segmentPins[] = {7, 6, 5, 10, 11, 8, 9, 4}; //数码管a,b,c,d,e,f,g,dp对应引脚
byte hardwareConfig = COMMON_CATHODE ; // 共阴极数码管int numToShow = 0;
int delaycount = 0;void setup() {sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins); //初始化数码管
}void loop() {delaycount++;if (delaycount  == 1000) { //通过变量自加来达到延时效果,如果使用delay函数则会打断数码管显示delaycount = 0;numToShow++;}if (numToShow > 9999){numToShow = 0;}sevseg.setNumber(numToShow, -1); //设置要显示的数据,不显示小数点sevseg.refreshDisplay(); // 必须重复运行刷新数码管显示}

3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。

4. 实验现象

数码管从0开始累加显示数据。

5. 实验分析

程序中根据实验原理图,通过数码管库函数进行数码管初始化,不断对numToShow变量进行累加,然后对数码管进行设置数据、刷新显示的操作。在程序中我们没有使用delay()函数进行延时,而是通过不断累加delaycount变量,在其达到理想阈值时对numToShow变量进行累加。

因为数码管需要不断重复刷新数据才能保持显示,若使用delay()进行延时,则程序将停止进行等待,这段时间数码管得不到刷新,显示就会受到影响,数码管会变暗、闪烁甚至熄灭。更加理想的做法是通过定时器来对数码管进行刷新。

更多内容,欢迎关注我的公众号。 微信扫一扫下方二维码即可关注:

Arduino基础入门篇17—四位数码管的驱动相关推荐

  1. arduino二位数码管_Arduino基础入门篇17—四位数码管的驱动

    本篇介绍四位数码管的使用,通过数码管库驱动四位数码管从0开始累加显示数字. 1. 四位数码管介绍 根据实际需要,把多个一位数码管封装在一起就成了多位数码管.常见的有两位.三位.四位.五位.六位等. 多 ...

  2. Arduino基础入门篇16—数码管库的使用

    Arduino官方提供了丰富的驱动库来方便对外设进行操作,很多爱好者也在开源精神下提供了很多第三方库.本篇介绍数码管库的使用,通过读取电位器输入,使用数码管库驱动数码管显示对应数据. SevSeg库是 ...

  3. Arduino基础入门篇15—随机骰子

    上一篇介绍了数码管的使用,一位数码管可显示数字0到9.本篇使用random()函数产生随机数并在数码管上进行显示,制作一个随机骰子. 在Arduino中,random()函数用来产生伪随机数,可以传入 ...

  4. Arduino基础入门篇14—跳动的数码管

    本篇介绍数码管显示器件,通过控制一位共阴极数码管动态显示数字0到9来了解数码管的使用. 1. 数码管介绍 数码管,又称LED数码管,是常见的用来显示数字的电子器件.通常由八段发光二极管封装在一起组成& ...

  5. Arduino基础入门篇(按键控制LED)

    本篇我们主要介绍通过检测按键状态来控制LED灯亮灭,把LED的亮灭变成人为可控制的. 一.按键开关介绍 按键开关主要是指轻触式按键开关,也称之为轻触开关.按键开关是一种电子开关,属于电子元器件类,最早 ...

  6. Arduino基础入门篇01—进入Arduino的世界

    欢迎来到Arduino的世界,本文主要介绍Arduino的优势,开发所涉及的硬件分类,开发语言及开发环境的下载.可登陆Arduino官网学习了解更多Arduino信息. 什么是Arduino Ardu ...

  7. Arduino基础入门篇02—Arduino开发环境IDE安装使用

    工欲善其事,必先利其器.本文主要介绍Arduino开发环境IDE的安装及功能介绍. Arduino IDE安装 从官网下载IDE开发环境,IDE下载地址 .笔者使用Win10系统,点击 Windows ...

  8. Arduino基础入门篇26—步进电机

    步进电机是一种将电脉冲转化为角位移的执行机构.通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(即步进角),多用于雕刻机.3D打印机等需要精确控制的设备.本篇 ...

  9. Arduino基础入门篇30—数字温度传感器DS18B20

    温度传感器的种类繁多,按照测量方式分为接触式和非接触式,按照传感器材料分为热电阻和热电偶两类,按照工作原理分为模拟式和数字式.上一篇介绍了模拟温度传感器LM35,本篇介绍数字温度传感器DS18B20的 ...

最新文章

  1. matlab处理图片建系,求MATLAB处理一张图片,把图片放入坐标系,建立类似于经纬度的网格...
  2. VS2015+MySql+EF6采坑经验总结
  3. 波卡链Substrate (6)SubstrateUI界面
  4. TF-A代码阅读: 双系统切换时是如何保存寄存器的(cpu_context介绍)
  5. 24 个好用到爆的 Python 实用技巧!
  6. 企业内网利用devpi搭建pypi私服
  7. 认识JVM--第一篇-对象分配&回收算法
  8. wordpress archive.php,wordpress分类目录模板(archive.php)制作
  9. Elasticsearch Curator使用
  10. linux的cache过高的原因定位与解决echo 3 > /proc/sys/vm/drop_caches
  11. Redis 中文入库成功,读取数据写入文件乱码问题
  12. javascript - return
  13. android python .xlsx_python读写xlsx
  14. API调用,API传参,面向对接开发,你真的会写接口文档吗?
  15. css手册.chm + W3CSchool.chm下载
  16. 可能是颜值最高的微信Markdown编辑器,用Markdown的你一定会爱上
  17. xMAP/NMAP/MIAP/移动办公/手机办公/移动适配
  18. oracle dba_waiters中的lockid是什么,Oracle 锁机制学习
  19. GIS(一)——在js版搜索地图上添加Marker标记
  20. 中国柔性电子行业应用需求及发展前景展望报告(2022-2027年)

热门文章

  1. uniapp,小程序倒计时结束后在哪个页面就在哪个页面弹出全局弹窗
  2. windows电脑版便签工具用哪个?
  3. ffmpeg录制系统声音
  4. 删除Windows右键菜单不必要功能
  5. 小猪WIN7旗舰SP1精简版V4正式版,仅704M的GHOST版,绝对纯净,可正常使用
  6. 9个非常实用的计算机网络命令
  7. ipconfig、ping命令、其他常用网络命令
  8. 傅里叶级数的理解与简单推导
  9. MySQL:数据库练习题-1
  10. 什么是强引用,软引用,弱引用,虚引用