风筝
发表于: 2022-4-6 11:29:47 | 显示全部楼层

在本篇文章中,我们将学习如何在Arduino开发板上使用TM1637四位七段数码管显示模块。数码管价格便宜,且最适合显示传感器数据、时间、秒表、随机数等。它与其他的四位七段数码管功能类似,但其内部嵌入了TM1637 LED驱动器IC。这减少了额外的接线,并且仅使用2根电线即可控制数码管。


在本文中,我们介绍了三个有关TM1637的Arduino示例。在第一个示例中,我们将了解TM1637显示库的基本功能并显示一些随机数字和字母。在第二个示例中,我们将使用TM1637和Arduino开发板结合DHT11制作一个简单的温度显示功能。在第三个示例中,我们将使用 DS3231实时时钟模块在TM1637数码管上显示时间。


所需的组件

●    Arduino Nano开发板

●    TM1637四位七段数码管显示模块

●    DS3231实时时钟模块

●    DHT22/11温湿度传感器模块

●    连接跳线

●    面包板


TM1637四位七段数码管显示模块

单独的四位七段数码管通常需要12个连接引脚。但是在显示模块的背面安装TM1637后,总导线将减少到4根。电源连接需要两个引脚,另外两个引脚用于控制段。

TM1637.jpg


TM1637模块包括四个0.36英寸七段数码管。该模块的中心有一个“冒号”,用于创建时钟或基于时间的项目。在显示模块的背面,有一个Titan MicroElectronics的廉价串行LED驱动器,称为TM1637。TM1637支持许多功能——包括LED段的开/关和亮度控制以及访问每个段。


该模块工作在3.3V至5V,电流消耗为80mA。我们可以使用两个数据引脚将TM1637与Arduino或任何其他微控制器进行连接。市面上有多个用于Arduino的TM1637库,这消除了复杂性并使其更容易与数码管模块通信。


TM1637模块共有4个引脚,并使用一个4针排针引出用于连接。

TM1637-Pinout.jpg


1.   GND:接地引脚

2.    VCC:3.3V至5V电源引脚

3.    DIO:数据输入/输出引脚

4.    CLK:时钟输入引脚


TM1637四位七段数码管显示模块与Arduino的硬件连接

现在,让我们将TM1637数码管显示模块与Arduino Nano开发板连接起来。连接相当简单。如下图所示进行连接。

TM1637-Arduino-1.jpg


将TM1637模块的VCC和GND引脚连接到Arduino开发板的5V和GND引脚。同样,将模块的CLK和DIO引脚分别连接到Arduino开发板的数字引脚2和3。

Arduino-TM1637-Connection.jpg


安装TM1637 Arduino库

TM1637数码管显示模块有很多个库。在所有这些库中,Avishay Orpaz提供的库最受欢迎。这个库有几个内置函数,使控制显示变得简单。我们需要指定要显示的数字以及它将处理的数字。


您可以从Github链接下载TM1637库。您也可以访问库管理器并直接安装库。通过键入“tm1637”进行搜索并检查 Avishay Orpaz 的库。单击,然后选择安装。

TM1637-Library.jpg


这个库有几个内置函数,使控制显示相当容易。

●    setSegments() - 设置每个数字段的原始值

●    showNumberDec() - 显示一个十进制数

●    showNumberDecEx() – 显示带小数点或冒号的十进制数

●    setBrightness() - 设置显示器的亮度

●    clear() - 清空显示内容


代码说明

  1. #include <Arduino.h>
  2. #include <TM1637Display.h>
复制代码

首先在代码中包含库文件。必须安装正确的库,否则编译代码时会收到错误消息。

  1. #define CLK 2
复制代码

接下来我们需要指定CLK 和DIO的连接引脚。

  1. const uint8_t SEG_DONE[] = {
  2.     SEG_B | SEG_C | SEG_D | SEG_E | SEG_G,           // d
  3.     SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F,   // O
  4.     SEG_C | SEG_E | SEG_G,                           // n
  5.     SEG_A | SEG_D | SEG_E | SEG_F | SEG_G            // E
  6.     };
复制代码

您可以创建数组来拼写单词。每个段由 | 分隔和显示的数字用逗号分隔。该数码将在数码管上显示“done”。

  1. #define TEST_DELAY   2000
复制代码

这是测试之间的时间量(以毫秒为单位)。这意味着下一件事将在200毫秒的间隔后显示。

  1. TM1637Display display(CLK, DIO);
复制代码

然后使用函数TM1637Display() 创建TM1637Display类的新实例。此函数需要两个参数,第一个是CLK引脚,第二个是DIO 引脚。

  1. uint8_t data[] = { 0xff, 0xff, 0xff, 0xff };
  2. uint8_t blank[] = { 0x00, 0x00, 0x00, 0x00 };
复制代码

设置单个段的第一个选项是使用十六进制数。十六进制 0xFF 转换为二进制 11111111,它打开所有段,而 0x00 将关闭所有段。

  1. display.setBrightness(7, false);  // Turn off
  2. display.setBrightness(7, true);   // Turn on
复制代码

函数setBrightness(brightness,on)设置数码管的亮度。您可以指定从 0(最低亮度)到 7(最高亮度)的亮度级别。您可以将其传递给 true(显示 ON)或 false(显示 OFF)。

  1. display.setSegments(data);
  2. display.setSegments(data+2, 2, 2);
复制代码

该函数可用于设置显示的各个部分。第一个参数是包含段信息的数组。第二个参数指定要在0到4之间更新的位数。第三个参数确定要打印的位置(0-最左,3-最右)。


TM1637 Arduino示例基础代码

以下是取自TM1637 库示例的基本示例代码。下载以下代码并将其粘贴到您的Arduino IDE上。 然后你可以编译和上传代码。 main.rar (988 Bytes, 下载次数: 13)


TM1637数码管模块将点亮并开始根据代码显示随机数和字符。

Example1.jpg

跳转到指定楼层
风筝
发表于: 2022-4-6 11:45:57 | 显示全部楼层

使用DHT11传感器在TM1637模块上显示温度值

我们可以使用 DHT22/11传感器以及TM1637数码管和Arduino开发板制作数字温度计。连接图相当简单。您可以使用面包板来搭建电路。

TM1637-Arduino-DHT11.jpg


DHT11/22是一款基本的、超低成本的数字温湿度传感器。 它使用电容式湿度传感器和热敏电阻来测量周围的空气,并在数据引脚上输出数字信号。在本文中,使用面包板将DHT22传感器与Arduino和TM1637显示模块组装在一起。

Breadboard-TM1637.jpg


温度计的代码

此代码将在TM1637显示模块上显示周围的温度值。下载以下代码并将其粘贴到Arduino IDE。 在编译此代码之前,您需要将DHT库添加到库文件夹中。 TM1637-Arduino-DHT11.rar (678 Bytes, 下载次数: 14)


上传完成后,显示屏将开始以摄氏度和华氏度显示温度。

Celcius.jpg


Fahrenheit.jpg


使用TM1637显示模块和DS3231 RTC模块创建时钟

我们也可以将TM1637显示模块和DS3231 RTC模块与Arduino开发板一起使用来创建一个实时时钟。连接图如下。

TM1637-Arduino-DS3231.jpg


DS3231 RTC实时时钟模块是一种低成本、极其精确的I2C实时时钟 (RTC),具有集成的温度补偿晶体振荡器 (TCXO) 和晶体。该模块可以与Arduino和任何其他控制器连接以设计实时时钟。


温度计的源代码

该代码将在TM1637显示模块上以分钟和小时显示时间。下载以下代码并将其上传到Arduino开发板。 在此之前将DS3231 RTC库添加到库文件夹。 TM1637 Arduino DS3231.rar (802 Bytes, 下载次数: 14)


加载代码后,TM1637显示屏将立即开始显示时间。

DS3231-Clock.jpg


以上就是在Arduino开发板上使用TM1637四位七段数码管显示模块的全部内容。如果有任何疑问,请随时在本贴下面回复。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 700 | 回复: 1480



手机版|

GMT+8, 2024-4-23 15:41 , Processed in 0.043100 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表