ArduinoMshop

Hướng dẫn dùng màn hình TM1637 4 chữ số 7 đoạn với ESP32

Thứ Năm, 12/03/2026
Admin

ESP32 TM1637 Display

Hướng dẫn sử dụng module màn hình LED 7 đoạn 4 chữ số TM1637 với ESP32 và Arduino IDE. Bài viết bao gồm kết nối phần cứng, cài thư viện, các hàm cơ bản và 2 ví dụ thực tế: đồng hồ sốhiển thị nhiệt độ.

1. Giới thiệu module TM1637

Module TM1637

Module TM1637 4 chữ số

TM1637 chân kết nối

Sơ đồ chân TM1637

Module TM1637 là màn hình LED 7 đoạn 4 chữ số, giao tiếp qua 2 dây (CLK + DIO) — không cần nhiều chân GPIO như màn hình thông thường. Đặc điểm:

  • 4 chữ số, mỗi chữ số gồm 7 đoạn LED
  • Dấu hai chấm (:) ở giữa — phù hợp làm đồng hồ
  • Giao tiếp 2 dây đơn giản (CLK + DIO)
  • Điều chỉnh 8 mức độ sáng
  • Điện áp 3.3V–5V, tương thích ESP32

2. Sơ đồ kết nối

Sơ đồ kết nối ESP32 TM1637

Sơ đồ kết nối ESP32 với TM1637

TM1637 ESP32
CLK GPIO 19
DIO GPIO 18
VCC 3.3V hoặc 5V
GND GND

3. Cài thư viện TM1637

Cài thư viện TM1637 Arduino IDE

Mở Arduino IDE → Sketch → Include Library → Manage Libraries → tìm "TM1637" → cài thư viện của Avishay Orpaz.

4. Các hàm cơ bản

Hàm Mô tả
setBrightness(n) Độ sáng 0–7
setSegments(data) Bật/tắt đoạn LED thủ công (byte)
showNumberDec(n) Hiển thị số thập phân
showNumberDecEx(n, mask) Hiển thị số + điều khiển dấu hai chấm
showNumberHexEx(n) Hiển thị số thập lục phân
clear() Xóa màn hình

5. Code kiểm tra cơ bản

/*
  Rui Santos & Sara Santos - Random Nerd Tutorials
  https://RandomNerdTutorials.com/esp32-tm1637-4-digit-7-segment-display-arduino/
*/
#include <Arduino.h>
#include <TM1637Display.h>

#define CLK 19
#define DIO 18
#define TEST_DELAY 2000

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
};

TM1637Display display(CLK, DIO);

void setup() {}

void loop() {
  int k;
  uint8_t data[] = { 0xff, 0xff, 0xff, 0xff };
  display.setBrightness(0x0f);

  display.setSegments(data);          // Tất cả đoạn sáng
  delay(TEST_DELAY);
  display.showNumberDecEx(1230, 0b01000000);  // Hiển thị 12:30
  delay(TEST_DELAY);

  display.showNumberDec(0, false);    // ___0
  delay(TEST_DELAY);
  display.showNumberDec(0, true);     // 0000
  delay(TEST_DELAY);
  display.showNumberDec(301, false);  // _301
  delay(TEST_DELAY);
  display.showNumberDec(-999);        // -999
  delay(TEST_DELAY);

  // Kiểm tra độ sáng
  for(k = 0; k < 7; k++) {
    display.setBrightness(k);
    display.setSegments(data);
    delay(TEST_DELAY);
  }

  display.setSegments(SEG_DONE);
  while(1);
}
Kết quả test TM1637

Kết quả sau khi upload code test

6. Ví dụ thực tế: Đồng hồ số với ESP32

ESP32 lấy thời gian thực qua WiFi và NTP server, hiển thị giờ:phút trên TM1637 với dấu hai chấm nhấp nháy.

/*
  Rui Santos & Sara Santos - Random Nerd Tutorials
  https://RandomNerdTutorials.com/esp32-tm1637-4-digit-7-segment-display-arduino/
*/
#include <WiFi.h>
#include "time.h"
#include <TM1637Display.h>

const char* ssid     = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";

#define CLK 19
#define DIO 18
TM1637Display display(CLK, DIO);

// Timezone Việt Nam (GMT+7)
const char* TZ_INFO = "ICT-7";

void initWiFi() {
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi..");
  }
}

void initTime() {
  configTime(0, 0, "pool.ntp.org");
  setenv("TZ", TZ_INFO, 1);
  tzset();
}

void displayTime() {
  static bool colon = false;
  colon = !colon;
  struct tm timeinfo;
  if (!getLocalTime(&timeinfo)) return;
  int value = timeinfo.tm_hour * 100 + timeinfo.tm_min;
  uint8_t colonMask = colon ? 0b01000000 : 0;
  display.showNumberDecEx(value, colonMask, true);
}

void setup() {
  Serial.begin(115200);
  display.setBrightness(7);
  display.clear();
  initWiFi();
  initTime();
}

void loop() {
  displayTime();
  delay(1000);
}
ESP32 đồng hồ TM1637
ESP32 đồng hồ TM1637 demo
💡 Ứng dụng module TM1637
  • Đồng hồ số hiển thị giờ:phút
  • Hiển thị nhiệt độ từ cảm biến hoặc API thời tiết
  • Đếm ngược timer
  • Hiển thị điểm số, tốc độ, các số liệu cần theo dõi

Viết bình luận của bạn

Tin liên quan

Hướng dẫn điều khiển Servo Motor với ESP32 qua Web Server (Arduino IDE)

Bài hướng dẫn này giúp bạn xây dựng một web server bằng ESP32 để điều khiển góc quay của động cơ servo thông qua thanh trượt...

Hướng dẫn dùng cảm biến PIR với ESP32 (Interrupt & Timer millis())

Bài này hướng dẫn cách dùng cảm biến PIR với ESP32 để phát hiện chuyển động bằng Interrupt (ngắt) và Timer (bộ đếm thời gian millis())....

Hướng dẫn cài đặt VS Code và PlatformIO IDE để lập trình ESP32/ESP8266

Bài viết này hướng dẫn cài đặt và sử dụng VS Code + PlatformIO IDE để lập trình ESP32 và ESP8266 — một môi trường lập...

Hướng dẫn cài đặt ESP32 vào Arduino IDE (Windows, Linux, macOS)

Bài viết này hướng dẫn chi tiết cách cài đặt board ESP32 vào Arduino IDE để bắt đầu lập trình ESP32. Đây là bước đầu tiên bắt buộc trước khi...

Hướng dẫn dùng cảm biến DHT11/DHT22 với ESP32 (Nhiệt độ & Độ ẩm)

Trong bài này, bạn sẽ học cách kết nối cảm biến DHT11 hoặc DHT22 với ESP32 để đọc nhiệt độ và độ ẩm bằng Arduino IDE....

Danh sách so sánh
Messenger