Использование 4-разрядного 7-сегментного дисплея TM1637 с Arduino
В данном руководстве мы научимся использовать 4-разрядный 7-сегментный дисплей TM1637 с Arduino. Этот дисплей можно использовать для отображения чисел, счетчиков или любых других числовых данных. К концу проекта у вас будет работающий дисплей, который сможет считать от 0 до 500 и демонстрировать различные функции, такие как регулировка яркости.

Для этого проекта мы подключим дисплей TM1637 к Arduino, используя всего несколько проводов. Дисплей имеет четыре вывода: VCC, GND, DIO и CLK. VCC подключается к источнику питания 5В, а GND подключается к земле. Вывод DIO будет подключен к цифровому выводу 3 на Arduino, а вывод CLK будет подключен к цифровому выводу 2. Эта настройка позволяет Arduino легко взаимодействовать с дисплеем.
Чтобы увидеть практическую реализацию, обязательно следуйте за видео (в видео на 00:00) для визуального руководства.
Объяснение аппаратного обеспечения
TM1637 — универсальный драйвер 7-сегментных дисплеев, который позволяет легко управлять 4-значными дисплеями. Он контролируется с помощью интерфейса с двумя проводами, который состоит из пина данных (DIO) и пина тактирования (CLK). Это упрощает подключение к микроконтроллерам, таким как Arduino, без необходимости в дополнительных компонентах.
Дисплей может отображать десятичные числа и поддерживает управление яркостью, что делает его подходящим для различных приложений, таких как счетчики, часы и таймеры. Его компактный дизайн и простота в использовании делают его популярным выбором как среди любителей, так и среди профессионалов.
Характеристики продукта
| Производитель | Титан Майкро Электроникс |
|---|---|
| Номер детали | TM1637 |
| Логическое/входное напряжение | 5 В |
| Напряжение питания | 3.3 В - 5.5 В |
| Текущий выход (на сегмент) | 20 мА |
| Руководство по частоте ШИМ | N/A |
| Входные логические пороги | 0.3 VCC (низкий), 0.7 VCC (высокий) |
| Падение напряжения / RДС(вн)/ насыщение | 2.5 В (тип.) |
| Термические ограничения | 125 °C |
| Упаковка | 16-контактный DIP |
- Убедитесь, что VCC подключен к стабильному источнику 5V, чтобы избежать неисправности дисплея.
- Используйте ограничивающие резисторы при необходимости, чтобы предотвратить повреждение сегментов.
- Держите провода короткими, чтобы минимизировать шум и помехи.
- Всегда дважды проверяйте подключения контактов, чтобы предотвратить обратную полярность.
- Отрегулируйте уровни яркости с помощью
setBrightnessфункция для оптимальной видимости.
Инструкции по проводке


Чтобы подключить дисплей TM1637, сначала подключите вывод VCC к выходу 5В на Arduino. Затем подключите вывод GND к одному из выводов заземления на Arduino. Для передачи данных подключите вывод DIO дисплея к цифровому выводу 3 на Arduino, а CLK — к цифровому выводу 2. Эта простая схема позволяет Arduino эффективно взаимодействовать с дисплеем.
Убедитесь, что у вас есть надежные соединения, чтобы избежать проблем с ненадежной проводкой. В видео показаны альтернативные схемы подключения, но предоставленные соединения являются самыми простыми для базовой работы (в видео на 01:30).
Примеры кода и пошаговая инструкция
Предоставленный код инициализирует дисплей и настраивает необходимые конфигурации. Основные идентификаторы в коде включаютCLKиDIO, которые определены как цифровые выводы 2 и 3 соответственно. Яркость дисплея устанавливается с помощьюsetBrightnessфункция.
#define CLK 2
#define DIO 3
TM1637Display display(CLK, DIO);
void setup() {
display.setBrightness(0x0f); // Set maximum brightness
}
Эта часть кода показывает инициализацию дисплея и установку максимальной яркости. Далее, loopфункция демонстрирует, как отображать различные числа.

void loop() {
uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };
display.setSegments(data); // Clear the display
display.showNumberDec(23, false, 2, 1); // Show number 23
delay(TEST_DELAY);
}
Здесь экран очищается, и отображается число 23. ФункцияshowNumberDecпринимает параметры для управления отображаемым числом и его форматированием. Цикл продолжает отображать числа до 500.
for(int i=0; i<=500; i++) {
display.showNumberDec(i); // Show numbers from 0 to 500
}
Этот фрагмент кода иллюстрирует простой счетчик, который отображает числа от 0 до 500 на дисплее TM1637. Дисплей будет обновляться непрерывно, пока не достигнет 500, затем он вернется к 0. Полный код доступен ниже статьи для вашего ознакомления.
Демонстрация / Что ожидать
Как только все провода будут подключены, а код загружен, дисплей должен последовательно показывать числа от 0 до 500. Он также продемонстрирует различные настройки яркости и очистит экран между обновлениями. Будьте осторожны с обратной полярностью, так как это может повредить дисплей. Вы можете подтвердить функциональность, наблюдая за дисплеем во время видео (в видео на 04:00).
Временные метки видео
- 00:00- Введение в дисплей TM1637
- 01:30- Инструкции по подключению
- 02:45- Обзор кода
- 04:00- Демонстрация дисплея
/*
* This is the Arduino code for TM1637 4-digit display.
*
* Written by Ahmad S. for Robojax Video
*visit www.Robojax.com to get wiring diagram and other resources for this project
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
/*
* Original code from https://github.com/avishorp/TM1637
* Modified for Robojax video on December 6, 2017
*/
#include <Arduino.h>
#include <TM1637Display.h>
// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3
// The amount of time (in milliseconds) between tests
#define TEST_DELAY 2000
TM1637Display display(CLK, DIO);
void setup()
{
}
void loop()
{
display.setBrightness(0x0f);
uint8_t data[] = { 0x0, 0x0, 0x0, 0x0 };
display.setSegments(data);
display.showNumberDec(23, false, 2,1);
delay(TEST_DELAY);
display.setSegments(data);
display.showNumberDec(153, false, 3, 1);
delay(TEST_DELAY);
display.setSegments(data);
for(int i=0; i<=500; i++)
{
display.showNumberDec(i);
}
}
Ресурсы и ссылки
Ресурсов пока нет.
Файлы📁
Библиотеки Arduino (zip)
-
TM1637 Arduino Library
TM1637_library.zip1.36 MB
Технический паспорт (pdf)
-
TM1637 Технический паспорт
/download/datasheet/robojax_TM1637_datasheet.pdf0.67 MB
Руководство пользователя
-
Руководство по дисплею TM1637
robojax-TM1637_display_manual.pdf0.31 MB