|
在本篇文章中,我们将学习如何在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模块包括四个0.36英寸七段数码管。该模块的中心有一个“冒号”,用于创建时钟或基于时间的项目。在显示模块的背面,有一个Titan MicroElectronics的廉价串行LED驱动器,称为TM1637。TM1637支持许多功能——包括LED段的开/关和亮度控制以及访问每个段。
该模块工作在3.3V至5V,电流消耗为80mA。我们可以使用两个数据引脚将TM1637与Arduino或任何其他微控制器进行连接。市面上有多个用于Arduino的TM1637库,这消除了复杂性并使其更容易与数码管模块通信。
TM1637模块共有4个引脚,并使用一个4针排针引出用于连接。
1. GND:接地引脚 2. VCC:3.3V至5V电源引脚 3. DIO:数据输入/输出引脚 4. CLK:时钟输入引脚
TM1637四位七段数码管显示模块与Arduino的硬件连接 现在,让我们将TM1637数码管显示模块与Arduino Nano开发板连接起来。连接相当简单。如下图所示进行连接。
将TM1637模块的VCC和GND引脚连接到Arduino开发板的5V和GND引脚。同样,将模块的CLK和DIO引脚分别连接到Arduino开发板的数字引脚2和3。
安装TM1637 Arduino库 TM1637数码管显示模块有很多个库。在所有这些库中,Avishay Orpaz提供的库最受欢迎。这个库有几个内置函数,使控制显示变得简单。我们需要指定要显示的数字以及它将处理的数字。
您可以从Github链接下载TM1637库。您也可以访问库管理器并直接安装库。通过键入“tm1637”进行搜索并检查 Avishay Orpaz 的库。单击,然后选择安装。
这个库有几个内置函数,使控制显示相当容易。 ● setSegments() - 设置每个数字段的原始值 ● showNumberDec() - 显示一个十进制数 ● showNumberDecEx() – 显示带小数点或冒号的十进制数 ● setBrightness() - 设置显示器的亮度 ● clear() - 清空显示内容
代码说明 - #include <Arduino.h>
- #include <TM1637Display.h>
复制代码首先在代码中包含库文件。必须安装正确的库,否则编译代码时会收到错误消息。 接下来我们需要指定CLK 和DIO的连接引脚。 - const uint8_t SEG_DONE[] = {
- SEG_B | SEG_C | SEG_D | SEG_E | SEG_G, // d
- SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F, // O
- SEG_C | SEG_E | SEG_G, // n
- SEG_A | SEG_D | SEG_E | SEG_F | SEG_G // E
- };
复制代码您可以创建数组来拼写单词。每个段由 | 分隔和显示的数字用逗号分隔。该数码将在数码管上显示“done”。 这是测试之间的时间量(以毫秒为单位)。这意味着下一件事将在200毫秒的间隔后显示。 - TM1637Display display(CLK, DIO);
复制代码然后使用函数TM1637Display() 创建TM1637Display类的新实例。此函数需要两个参数,第一个是CLK引脚,第二个是DIO 引脚。 - uint8_t data[] = { 0xff, 0xff, 0xff, 0xff };
- uint8_t blank[] = { 0x00, 0x00, 0x00, 0x00 };
复制代码设置单个段的第一个选项是使用十六进制数。十六进制 0xFF 转换为二进制 11111111,它打开所有段,而 0x00 将关闭所有段。 - display.setBrightness(7, false); // Turn off
- display.setBrightness(7, true); // Turn on
复制代码函数setBrightness(brightness,on)设置数码管的亮度。您可以指定从 0(最低亮度)到 7(最高亮度)的亮度级别。您可以将其传递给 true(显示 ON)或 false(显示 OFF)。 - display.setSegments(data);
- display.setSegments(data+2, 2, 2);
复制代码该函数可用于设置显示的各个部分。第一个参数是包含段信息的数组。第二个参数指定要在0到4之间更新的位数。第三个参数确定要打印的位置(0-最左,3-最右)。
TM1637 Arduino示例基础代码 以下是取自TM1637 库示例的基本示例代码。下载以下代码并将其粘贴到您的Arduino IDE上。 然后你可以编译和上传代码。
main.rar
(988 Bytes, 下载次数: 19)
TM1637数码管模块将点亮并开始根据代码显示随机数和字符。
|