Arduino - TM1637 4 位 7 段显示器

Arduino - TM1637 4 位 7 段显示器

Arduino-TM1637 4 位 7 段显示器

A standard 4-digit 7-segment display is needed for clock, timer and counter projects, but it usually requires 12 connections. The TM1637 module makes it easier by only requiring 4 connections: 2 for power and 2 for controlling the segments.
时钟、定时器和计数器项目需要标准的 4 位 7 段显示器,但通常需要 12 个连接。TM1637 模块只需 4 个连接即可简化操作:2 个用于电源,2 个用于控制段。

This tutorial will not overload you by deep driving into hardware. Instead, We will learn how to connect the 4-digit 7-segment display to Arduino, how to program it do display what we want.
本教程不会通过深入硬件来使您超载。相反,我们将学习如何将 4 位 7 段显示器连接到 Arduino,如何对其进行编程以显示我们想要的内容。

Arduino TM1637 4-digit 7-segment display

This tutorial are going to use the colon-separated 4-digit 7-segment display module. If you want to display the float numbers, please use the 74HC595 4-digit 7-segment Display Module
本教程将使用冒号分隔的 4 位 7 段显示模块。如果要显示浮点数,请使用 74HC595 4 位 7 段显示模块

关于 TM1637 4 位 7 段显示器

A TM1637 module typically consists of four 7-segment LEDs and a colon-shaped LED in the middle: It is ideal for displaying time in hours and minutes, or minutes and seconds, or scores of two teams.
TM1637 模块通常由四个 7 段 LED 和一个中间的冒号形 LED 组成:它非常适合以小时和分钟、分钟和秒或两个团队的分数显示时间。

Pinout 引脚排列

TM1637 4-digit 7-segment display module includes 4 pins:
TM1637 4 位 7 段显示模块包括 4 个引脚:

  • CLK pin: is a clock input pin. Connect to any digital pin on Arduino.
    CLK引脚:是时钟输入引脚。连接到Arduino上的任何数字引脚。
  • DIO pin: is a Data I/O pin. Connect to any digital pin on Arduino.
    DIO 引脚:是数据 I/O 引脚。连接到Arduino上的任何数字引脚。
  • VCC pin: pin supplies power to the module. Connect it to the 3.3V to 5V power supply.
    VCC引脚:引脚为模块供电。将其连接到 3.3V 至 5V 电源。
  • GND pin: is a ground pin.
    GND 引脚:是接地引脚。

TM1637 module pinout

Wiring Diagram 接线图

To connect a TM1637 to an Arduino, connect four wires: two for power and two for controlling the display. The module can be powered from the 5-volt output of the Arduino. Connect the CLK and DIO pins to any digital pins of Arduino. For example, 2 and 3 on the Arduino. The pin numbers in the code should be changed if different pins are used.
要将 TM1637 连接到 Arduino,请连接四根电线:两根用于电源,两根用于控制显示器。该模块可由 Arduino 的 5 伏输出供电。将 CLK 和 DIO 引脚连接到 Arduino 的任何数字引脚。例如,Arduino 上的 2 和 3。如果使用不同的引脚,则应更改代码中的引脚编号。

Arduino TM1637 Module Wiring Diagram

This image is created using Fritzing. Click to enlarge image
此图像是使用 Fritzing 创建的。点击放大图片

Library Installation 库安装

To program easily for TM1637 4-digit 7-segment Display, we need to install TM1637Display library by Avishay Orpaz. Follow the below steps to install the library:
为了轻松对 TM1637 4 位 7 段显示器进行编程,我们需要安装 Avishay Orpaz 的 TM1637Display 库。按照以下步骤安装库:

  • Navigate to the Libraries icon on the left bar of the Arduino IDE.
    导航到 Arduino IDE 左侧栏上的 Libraries 图标。
  • Search “TM1637”, then find the TM1637Display library by Avishay Orpaz
    搜索“TM1637”,然后找到 Avishay Orpaz 的 TM1637Display 库
  • Click Install button. 单击“安装”按钮。

Arduino TM1637 4-digit 7-segment display library

如何使用Arduino对TM1637 4位7段进行编程

  • Include the library 包括库
#include <TM1637Display.h>
  • Define Arduino’s pins that connects to CLK and DIO of the display module. For example, pin D9 and D10
    定义连接到显示模块的 CLK 和 DIO 的 Arduino 引脚。例如,引脚 D9 和 D10
#define CLK 9
#define DIO 10
  • Create a display object of type TM1637Display
    创建 TM1637Display 类型的显示对象
TM1637Display display = TM1637Display(CLK, DIO);

TM1637Display display = TM1637Display(CLK, DIO);

  • Then you can display number, number with decimal, number with minus sign, or letter. In the case of leter, you need to define the letter form. Let’s see one by one.
    然后,您可以显示数字、带十进制的数字、带减号的数字或字母。对于 leter,您需要定义字母形式。让我们一一看看。
  • Display number: see below examples, '’ in below description represents for a digit that does not display anything in pratice:
    显示数字:请参阅以下示例,以下描述中的“
    ”表示不显示任何内容的数字:
display.showNumberDec(-12);          // displayed _-12
display.showNumberDec(-999);        // displayed -999
display.showNumberDec(42);              // displayed __42
display.showNumberDec(42, false);      // displayed __42
display.showNumberDec(42, false, 2, 0);  // displayed 42__ => display 2 digit at position 0
display.showNumberDec(42, true);      // displayed 0042 => zero padding
display.showNumberDec(14, false, 2, 1);  // displayed _14_
display.showNumberDec(-5, false, 3, 0);  // displayed _-5_
display.showNumberDec(1234);          // displayed 1234
  • Display the number with a colon or dot:
    用冒号或圆点显示数字:
// displayed 15:30 in the colon-separated module, or 15.30 in the colon-separated module
display.showNumberDecEx(1530, 0b11100000, false, 4, 0);

// displayed 15:30 in the colon-separated module, or 15.30 in the colon-separated module display.showNumberDecEx(1530, 0b11100000, false, 4, 0);
在冒号分隔的模块中显示 15:30,或在冒号分隔的模块中显示 15:30

You can see more detail in the function references at the end of this tutorial
您可以在本教程末尾的函数参考中查看更多详细信息

Arduino Code Arduino代码

/** Created by ArduinoGetStarted.com** This example code is in the public domain** Tutorial page: https://arduinogetstarted.com/tutorials/arduino-tm1637-4-digit-7-segment-display*/#include <TM1637Display.h>// define the connections pins
#define CLK 9
#define DIO 10// create a display object of type TM1637Display
TM1637Display display = TM1637Display(CLK, DIO);// an array that sets individual segments per digit to display the word "dOnE"
const uint8_t done[] = {SEG_B | SEG_C | SEG_D | SEG_E | SEG_G,         // dSEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // OSEG_C | SEG_E | SEG_G,                         // nSEG_A | SEG_D | SEG_E | SEG_F | SEG_G          // E
};// degree celsius symbol
const uint8_t celsius[] = {SEG_A | SEG_B | SEG_F | SEG_G,  // Degree symbolSEG_A | SEG_D | SEG_E | SEG_F   // C
};void setup() {display.clear();display.setBrightness(7); // set the brightness to 7 (0:dimmest, 7:brightest)
}void loop() {// show counter 0-9int i;for (i = 0; i < 10; i++) {display.showNumberDec(i);delay(500);display.clear();}display.showNumberDec(-91);             // displayed _-91delay(2000);display.clear();display.showNumberDec(-109);            // displayed -109delay(2000);display.clear();display.showNumberDec(21, false);       // displayed __21delay(2000);display.clear();display.showNumberDec(21, true);        // displayed 0021delay(2000);display.clear();display.showNumberDec(28, false, 2, 1); // displayed _28_delay(2000);display.clear();display.showNumberDec(-9, false, 3, 0); // displayed _-9_delay(2000);display.clear();// displayed 15:30display.showNumberDecEx(1530, 0b11100000, false, 4, 0);delay(2000);display.clear();// displayed 23°Cint temperature = 23; // or read from temperature sensordisplay.showNumberDec(temperature, false, 2, 0);display.setSegments(celsius, 2, 2);delay(2000);display.clear();// displayed letters: dOnEdisplay.setSegments(done);delay(2000);display.clear();
}
Quick Steps 快速步骤
  • Copy the above code and open with Arduino IDE
    复制上面的代码并使用Arduino IDE打开
  • Click Upload button on Arduino IDE to upload code to Arduino
    单击Arduino IDE上的“上传”按钮,将代码上传到Arduino
  • See the states of the 7-segment display
    查看 7 段显示器的状态

Function References

The below are references for the following functions:

  • display.clear()
  • display.showNumberDec()
  • display.showNumberDecEx()
  • display.setSegments()
  • display.setBrightness()

display.clear()

Description

This function clear the display. It turns all LEDs off

display.showNumberDec()

Description 描述

The function is used to display a decimal number on the 7-segment display.
该函数用于在 7 段显示器上显示十进制数。

Syntax 语法
void showNumberDec(int num, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);void showNumberDec(int num, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);
Parameter 参数
  • num: This is the number to be displayed on the 7-segment display. It should be within the range of -9999 to 9999.
    num:这是要在 7 段显示屏上显示的数字。它应该在 -9999 到 9999 的范围内。
  • leading_zero: This is an optional parameter with a default value of false. If it is set to true, leading zeros will be displayed.
    leading_zero:这是一个可选参数,默认值为 false。如果设置为 true,则将显示前导零。
  • length: This is an optional parameter with a default value of 4. It sets the number of digits to be displayed on the 7-segment display.
    length:这是一个可选参数,默认值为 4。它设置要在 7 段显示器上显示的位数。
  • pos: This is an optional parameter with a default value of 0. It sets the position of the most significant digit of the number.
    pos:这是一个可选参数,默认值为 0。它设置数字最高有效数字的位置。

Please note that, if the number is out of range or if the value of length is greater than 4, the function will not display anything.
请注意,如果数字超出范围或长度值大于 4,则该函数将不会显示任何内容。

showNumberDecEx() showNumberDecEx()

Description 描述

The function is used to display a decimal number on the 7-segment display with additional features compared to the showNumberDec() function. It is an advanced version of showNumberDec() that allows you to control the dot or colon segments of each digit individually.
该函数用于在 7 段显示器上显示十进制数,与 showNumberDec() 函数相比具有附加功能。它是 showNumberDec() 的高级版本,允许您单独控制每个数字的点段或冒号段。

Syntax 语法
void showNumberDecEx(int num, uint8_t dots, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);void showNumberDecEx(int num, uint8_t 点, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);
Parameter 参数
  • num1: This is the number to be displayed on the 7-segment display. It should be within the range of -9999 to 9999.
    num1:这是要显示在 7 段显示屏上的数字。它应该在 -9999 到 9999 的范围内。
  • dots: This parameter is used to specify which segments of the display should be turned on as dots. Each bit of the value corresponds to a digit on the display: Valid value
    dots:此参数用于指定应以点的形式打开显示器的哪些部分。该值的每一位对应于显示屏上的一个数字: 有效值
    • 0b10000000: display the first dot: 0.000
      0b10000000:显示第一个点:0.000
    • 0b01000000: display the second dot: 00.00
      0b01000000:显示第二个点:00.00
    • 0b00100000: display the third dot: 000.0
      0b00100000:显示第三个点:000.0
    • 0b01000000: For displays with just a colon: 00:00
      0b01000000:对于仅带有冒号的显示器:00:00
  • leading_zero: This is an optional parameter with a default value of false. If it is set to true, leading zeros will be displayed.
    leading_zero:这是一个可选参数,默认值为 false。如果设置为 true,则将显示前导零。
  • length: This is an optional parameter with a default value of 4. It sets the number of digits to be displayed on the 7-segment display.
    length:这是一个可选参数,默认值为 4。它设置要在 7 段显示器上显示的位数。
  • pos: This is an optional parameter with a default value of 0. It sets the position of the most significant digit of the number.
    pos:这是一个可选参数,默认值为 0。它设置数字最高有效数字的位置。

For example, if you call display.showNumberDecEx(1530,0b01000000); it will display the number 15:30 on the 7-segment display.
例如,如果调用 display.showNumberDecEx(1530,0b01000000);它将在 15 段显示屏上显示数字 30:7。

Please note that, if the number is out of range or if the value of length is greater than 4, the function will not display anything.
请注意,如果数字超出范围或长度值大于 4,则该函数将不会显示任何内容。

setSegments()

Description 描述

The function is used to set the segments of the 7-segment display directly. It can be used to dislay letters, special character, or turn all all LED segment.
该功能用于直接设置 7 段显示的段。它可用于铺设字母、特殊字符或转动所有 LED 段。

Syntax 语法
void setSegments(const uint8_t segments[], uint8_t length = 4, uint8_t pos = 0);void setSegments(const uint8_t segments[], uint8_t length = 4, uint8_t pos = 0);
Parameter 参数
  • segments: This parameter sets the segments of the 7-segment display, it’s an array of bytes, where each byte represents the segments of each digit. Each segment is represented by a bit in the byte.
    segments:此参数设置 7 段显示的段,它是一个字节数组,其中每个字节代表每个数字的段。每个段都由字节中的位表示。
  • length: This is an optional parameter with a default value of 4. It sets the number of digits to be displayed on the 7-segment display.
    length:这是一个可选参数,默认值为 4。它设置要在 7 段显示器上显示的位数。
  • pos: This is an optional parameter with a default value of 0. It sets the position of the most significant digit of the number.
    pos:这是一个可选参数,默认值为 0。它设置数字最高有效数字的位置。

This function is useful when you want to display characters or symbols that are not included in the basic 7-segment display. By setting the segments directly, you can display any pattern you want.
当您想要显示基本 7 段显示中未包含的字符或符号时,此功能非常有用。通过直接设置段,您可以显示所需的任何图案。

Please note that, if the number is out of range or if the value of length is greater than 4, the function will not display anything.
请注意,如果数字超出范围或长度值大于 4,则该函数将不会显示任何内容。

setBrightness()

Description 描述

The function is used to set the brightness of the 7-segment display.
该功能用于设置 7 段显示器的亮度。

Syntax 语法
void setBrightness(uint8_t brightness, bool on = true); 
Parameter 参数

brightness: This parameter sets the brightness level of the 7-segment display. The value should be in the range of 0 to 7. A higher value results in a brighter display.
亮度:此参数设置 7 段显示器的亮度级别。该值应在 0 到 7 的范围内。值越高,显示效果越亮。

on: This is an optional parameter with a default value of true. It’s used to turn on or off the display. If it’s set to false, the display will be turned off.
on:这是一个可选参数,默认值为 true。它用于打开或关闭显示器。如果设置为 false,则显示将关闭。

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

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

相关文章

开始尝试从0写一个项目--后端(一)

创建文件的目录结构 利用这个界面创建 序号 名称 说明 1 SEMS maven父工程&#xff0c;统一管理依赖版本&#xff0c;聚合其他子模块 2 sems-common 子模块&#xff0c;存放公共类&#xff0c;例如&#xff1a;工具类、常量类、异常类等 3 sems-pojo 子模块&#x…

【Qt】之【Bug】大量出现“未定义的标识符”问题

背景 构建时出现大量错误 原因 中文注释问题 解决 方法1. 报错代码附近的中文注释全部删掉。。。 方法2. 报错的文件添加 // Chinese word comment solution #pragma execution_character_set("utf-8")

【C语言】—— 文件操作(下)

【C语言】—— 文件操作&#xff08;下&#xff09; 前言&#xff1a;五、文件的顺序读写5.1、 顺序读写函数介绍5.2、 f p u t c fputc fputc 函数5.3、 f g e t c fgetc fgetc 函数5.4、 f p u t s fputs fputs 函数5.5、 f g e t s fgets fgets 函数5.6、 f p r i n t f…

神经网络在机器学习中的应用:手写数字识别

机器学习是人工智能的一个分支&#xff0c;它使计算机能够从数据中学习并做出决策或预测。神经网络作为机器学习的核心算法之一&#xff0c;因其强大的非线性拟合能力而广泛应用于各种领域&#xff0c;包括图像识别、自然语言处理和游戏等。本文将介绍如何使用神经网络对MNIST数…

2024亚太杯中文赛数学建模选题建议及各题思路来啦!

大家好呀&#xff0c;2024年第十四届APMCM亚太地区大学生数学建模竞赛&#xff08;中文赛项&#xff09;开始了&#xff0c;来说一下初步的选题建议吧&#xff1a; 首先定下主基调&#xff0c; 本次亚太杯推荐大家选择B题目。C题目难度较高&#xff0c;只建议用过kaiwu的队伍…

怎样将word默认Microsoft Office,而不是WPS

设置——>应用——>默认应用——>选择"word"——>将doc和docx都选择Microsoft Word即可

PE文件学习

一、介绍 PE文件&#xff0c;即Portable Executable文件&#xff0c;是一种标准的文件格式&#xff0c;主要用于微软的Windows操作系统上。这种格式被用来创建可执行程序&#xff08;如.exe文件&#xff09;、动态链接库&#xff08;.DLL文件&#xff09;、设备驱动&#xff0…

苹果电脑虚拟机运行Windows Mac环境安装Win PD19虚拟机 parallels desktop19虚拟机安装教程免费密钥激活

在如今多元的数字时代&#xff0c;我们经常需要在不同的操作系统环境下进行工作和学习。而对于 Mac 用户来说&#xff0c;有时候需要在自己的电脑上安装 Windows 操作系统&#xff0c;以体验更多软件及功能&#xff0c;而在 Mac 安装 Windows 虚拟机是常用的一种操作。下面就来…

Codeforces Round 955 (Div. 2, with prizes from NEAR!)(A~C题解)

这场比赛怎么说呢&#xff0c;一开始打的还算好&#xff0c;能进前1000&#xff0c;但是后面就被卡住了&#xff0c;这个确实没办法水平还是不够&#xff0c;学过的还是没想起来&#xff0c;后面继续练 A. Soccer 题解&#xff1a;水题一个&#xff0c;想要在过程中出现平局的…

使用 iconfont.ttf文件保存多个图标文件,并且像文字一样使用代码绘制出来

先看演示效果 这里的多个图标其实是存储在 iconfont.ttf文件中 这个文件里面的图标对应的编码 显示代码 void CMFCApplication3Dlg::OnBnClickedOk() {// 加载字体文件CString fontPath = _T("C:\\Users\\35497\\Desktop\\test\\MFCApplication3\\font\\iconfont.ttf&qu…

pytorch中的contiguous()

官方文档&#xff1a;https://pytorch.org/docs/stable/generated/torch.Tensor.contiguous.html 其描述contiguous为&#xff1a; Returns a contiguous in memory tensor containing the same data as self tensor. If self tensor is already in the specified memory forma…

mongdb学习与使用

1. 基础概念 MongoDB简介&#xff1a; MongoDB是一个基于文档的NoSQL数据库&#xff0c;具有高性能、高可用性和易扩展性。数据存储在类似JSON的BSON格式中。 基本术语&#xff1a; Database&#xff08;数据库&#xff09;&#xff1a; 集合的容器。Collection&#xff08;集合…

25.labview数据采集中的读取和写入文本文件和Excel表格文件

①本文将会讲解labview读取和写入文本文件和Excel文件的几种不同方式&#xff0c;讲解程序的基本原理&#xff0c;并提出具体的实施方案&#xff0c;本文内容如下所示。 ②本文文章结束会提供大家 文本和表格读取写入的源程序 &#xff0c;以便于大家学习和使用。 本文中可能用…

Linux Rsyslog+LogAnalyzer+MariaDB部署日志服务器

文章目录 Linux RsyslogLogAnalyzerMariaDB部署日志服务器1 环境准备1.1 服务器端安装LAMP环境1.2 服务启动并加入开机启动1.2.1 Apache1.2.2 MariaDB1.2.3 Php 2 Rsyslog服务端安装及配置2.1 安装Rsyslog及Rsyslog连接MySQL的模块2.2 导入rsyslog-mysql数据库文件2.3 查看刚导…

艾体宝干货 | IOTA流量分析秘籍第二招:IDS或终端保护系统分析

终端保护解决方案或入侵检测系统&#xff08;IDS&#xff09;可以基于启发式方法、特征码以及新解决方案中的人工智能来检测恶意事件。它们通过电子邮件、Syslog、Webhooks或其他方式生成警报。然而&#xff0c;有效地分析这些警报消息的根本原因&#xff0c;以识别和响应潜在威…

数学建模(1):期末大乱炖

1 概述&#xff01;&#xff01; 1.1 原型和模型 原型&#xff1a;客观存在的研究对象称为原型&#xff0c;也称为“系统”、“过程”。 机械系统、电力系统、化学反应过程、生产销售过程等都是原型&#xff1b; 研究原型的结构和原理&#xff0c; 从而进行优化、预测、评价…

【Android源码】Gerrit安装

前言 如果你打开 https://android.googlesource.com/platform/manifest&#xff0c;就会发现&#xff0c;google官方管理Android源码&#xff0c;使用的是Gerrit。Android系统源码是非常大的&#xff0c;用Git肯定是不适合。对于大型项目&#xff0c;得用Gerrit&#xff0c;今…

解决微信小程序使用textarea输入框 type=“textarea“ 文本输入限制问题

出现的问题 type"textarea" 这个限制 微信小程序使用textarea , 输入字数大于140 时就输入不进去了 加入这个就解决了 maxlength"-1" <u-inputv-model"queryParams.orderIdTxt"border"true":focus"true":auto-height&q…

c++:动态内存变量

典型的C面向对象编程 元素 (1)头文件hpp中类的定义 (2)源文件cpp中类的实现&#xff08;构造函数、析构函数、方法&#xff09; (3)主程序 案例 (1)用C来编程“人一天的生活” (2)“人”的属性&#xff1a;name、age、male (3)“人”的方法&#xff1a;eat、work(coding/shop…

【虚拟机】虚拟机网络无法访问问题【已解决】

【虚拟机】虚拟机无法上网问题【已解决】 问题探究解决方法法1&#xff1a;查看相关“网络服务”是否处于正常启动状态法2&#xff1a;重启网络法3&#xff1a;重新安装VMWare法4&#xff1a;使用NAT模式&#xff0c;每次打开win7都没连上网的解决办法 问题探究 安装了很多个虚…