Arduino Màn hình 4 chữ số 7 đoạn TM1637

Một màn hình hiển thị 7 đoạn 4 chữ số tiêu chuẩn được sử dụng cho các dự án đồng hồ, bộ hẹn giờ và bộ đếm, nhưng nó thường yêu cầu 12 kết nối. Mô-đun TM1637 làm cho việc này dễ dàng hơn bằng cách chỉ yêu cầu 4 kết nối: 2 cho nguồn và 2 để điều khiển các đoạn.

Hướng dẫn này sẽ không làm bạn quá tải bằng cách đi sâu vào phần cứng. Thay vào đó, chúng ta sẽ học cách kết nối màn hình 7 đoạn 4 chữ số với Arduino và cách lập trình nó để hiển thị những gì chúng ta muốn.

màn hình 7 đoạn 4 chữ số tm1637 cho Arduino

Tutorial này sẽ sử dụng mô-đun hiển thị 7 đoạn 4 chữ số có dấu hai chấm phân cách. Nếu bạn muốn hiển thị các số thực, vui lòng sử dụng Arduino - Màn hình 7 đoạn 4 chữ số 74HC595

Phần cứng cần chuẩn bị

1×Arduino Uno R3
1×USB 2.0 cable type A/B (for USB-A PC)
1×USB 2.0 cable type C/B (for USB-C PC)
1×TM1637 4-digit 7-segment Display (colon-separated)
1×dây jumper
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino Uno
1×(Khuyến nghị) Breadboard Shield for Arduino Uno
1×(Khuyến nghị) Enclosure for Arduino Uno
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về màn hình 7 đoạn 4 chữ số TM1637

Một mô-đun TM1637 thường gồm bốn đèn LED 7 đoạn và một đèn LED hình dấu hai chấm ở giữa: Nó lý tưởng để hiển thị thời gian theo giờ và phút, hoặc phút và giây, hoặc điểm số của hai đội.

Sơ đồ các chân

Mô-đun hiển thị 7 đoạn 4 chữ số TM1637 gồm 4 chân:

  • Chân CLK: là chân đầu vào đồng hồ. Kết nối với bất kỳ chân số nào trên Arduino.
  • Chân DIO: là chân dữ liệu I/O. Kết nối với bất kỳ chân số nào trên Arduino.
  • Chân VCC: là chân cấp nguồn cho mô-đun. Kết nối nó với nguồn 3.3V–5V.
  • Chân GND: là chân đất.
bố trí chân của mô-đun tm1637

Sơ đồ đấu dây

Để kết nối TM1637 với Arduino, hãy kết nối bốn dây: hai dây cấp nguồn và hai dây điều khiển màn hình. Module có thể được cấp nguồn từ nguồn 5V của Arduino. Nối các chân CLK và DIO với bất kỳ chân số kỹ thuật số nào trên Arduino. Ví dụ, chân 2 và 3 trên Arduino. Các số chân trong mã (code) nên được thay đổi nếu sử dụng các chân khác.

sơ đồ nối dây của mô-đun Arduino tm1637

This image is created using Fritzing. Click to enlarge image

Cài đặt thư viện

Để lập trình dễ dàng cho màn hình 7 đoạn 4 chữ số TM1637, chúng ta cần cài đặt thư viện TM1637Display của Avishay Orpaz. Làm theo các bước dưới đây để cài đặt thư viện:

  • Đi tới biểu tượng Thư viện ở thanh bên trái của Arduino IDE.
  • Tìm kiếm “TM1637”, sau đó tìm thư viện TM1637Display của Avishay Orpaz.
  • Nhấn nút Cài đặt.
thư viện hiển thị 4 chữ số 7 đoạn tm1637 cho Arduino

Cách lập trình cho TM1637 4 chữ số 7 đoạn bằng Arduino

  • Bao gồm thư viện
#include <TM1637Display.h>
  • Định nghĩa các chân của Arduino kết nối với CLK và DIO của mô-đun hiển thị. Ví dụ, chân D9 và D10
#define CLK 9 #define DIO 10
  • Tạo một đối tượng hiển thị có kiểu TM1637Display
TM1637Display display = TM1637Display(CLK, DIO);
  • Sau đó bạn có thể hiển thị số nguyên, số thập phân, số âm, hoặc chữ cái. Trong trường hợp là chữ cái, bạn cần xác định định dạng chữ cái. Hãy xem lần lượt từng cái một.
  • Hiển thị số: xem các ví dụ bên dưới, '_' trong mô tả bên dưới đại diện cho một chữ số không hiển thị bất kỳ ký tự nào trong thực tế:
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
  • Hiển thị số với dấu hai chấm hoặc dấu chấm:
// displayed 15:30 in the colon-separated module, or 15.30 in the colon-separated module display.showNumberDecEx(1530, 0b11100000, false, 4, 0);

Bạn có thể xem thêm chi tiết trong phần tham khảo các hàm ở cuối bài hướng dẫn này.

Mã Arduino

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/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, // 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 }; // degree celsius symbol const uint8_t celsius[] = { SEG_A | SEG_B | SEG_F | SEG_G, // Degree symbol SEG_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-9 int i; for (i = 0; i < 10; i++) { display.showNumberDec(i); delay(500); display.clear(); } display.showNumberDec(-91); // displayed _-91 delay(2000); display.clear(); display.showNumberDec(-109); // displayed -109 delay(2000); display.clear(); display.showNumberDec(21, false); // displayed __21 delay(2000); display.clear(); display.showNumberDec(21, true); // displayed 0021 delay(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:30 display.showNumberDecEx(1530, 0b11100000, false, 4, 0); delay(2000); display.clear(); // displayed 23°C int temperature = 23; // or read from temperature sensor display.showNumberDec(temperature, false, 2, 0); display.setSegments(celsius, 2, 2); delay(2000); display.clear(); // displayed letters: dOnE display.setSegments(done); delay(2000); display.clear(); }

Hướng dẫn từng bước

  • Sao chép mã ở trên và mở bằng Arduino IDE
  • Nhấn nút Tải lên trên Arduino IDE để tải mã lên cho Arduino
  • Xem các trạng thái của màn hình 7 đoạn

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.

Tham khảo hàm

Dưới đây là các tham khảo cho các chức năng sau:

  • display.xoa()
  • display.hienThiSoThapPhan()
  • display.hienThiSoThapPhanMoRong()
  • display.thietLapCacDoan()
  • display.thietLapDoSang()

display.clear()

Mô tả

Chức năng này xóa hiển thị. Nó tắt tất cả các đèn LED.

display.showNumberDec()

Mô tả

Hàm được sử dụng để hiển thị một số thập phân trên màn hình 7 đoạn.

Cú pháp

void showNumberDec(int num, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);

Tham số

  • num: Đây là số cần hiển thị trên màn hình 7 đoạn. Nó nên nằm trong phạm vi từ -9999 đến 9999.
  • leading_zero: Đây là một tham số tùy chọn với giá trị mặc định là false. Nếu được đặt thành true, các chữ số 0 ở đầu sẽ được hiển thị.
  • length: Đây là một tham số tùy chọn với giá trị mặc định là 4. Nó thiết lập số chữ số được hiển thị trên màn hình 7 đoạn.
  • pos: Đây là một tham số tùy chọn với giá trị mặc định là 0. Nó thiết lập vị trí của chữ số có giá trị lớn nhất của số.

Xin lưu ý rằng, nếu số nằm ngoài phạm vi hoặc nếu giá trị của độ dài lớn hơn 4, hàm sẽ không hiển thị gì.

showNumberDecEx()

Mô tả

Chức năng này được sử dụng để hiển thị một số thập phân trên màn hình 7 đoạn với các tính năng bổ sung so với hàm showNumberDec(). Đây là phiên bản nâng cao của showNumberDec() cho phép bạn điều khiển các điểm (dot) hoặc dấu hai chấm (colon) của từng chữ số một cách riêng biệt.

Cú pháp

void showNumberDecEx(int num, uint8_t dots, bool leading_zero = false, uint8_t length = 4, uint8_t pos = 0);

Tham số

  • num1: Đây là số sẽ được hiển thị trên màn hình 7-segment. Nó nên nằm trong phạm vi từ -9999 đến 9999.
  • dots: Tham số này được dùng để chỉ định các đoạn của màn hình nên được bật thành dấu chấm. Mỗi bit của giá trị tương ứng với một chữ số trên màn hình: Giá trị hợp lệ
    • 0b10000000: hiển thị dấu chấm đầu tiên: 0.000
    • 0b01000000: hiển thị dấu chấm thứ hai: 00.00
    • 0b00100000: hiển thị dấu chấm thứ ba: 000.0
    • 0b01000000: Đối với màn hình chỉ có hai chấm: 00:00
  • leading_zero: Đây là một tham số tùy chọn có giá trị mặc định là false. Nếu được đặt thành true, các số 0 ở đầu sẽ được hiển thị.
  • length: Đây là một tham số tùy chọn có giá trị mặc định là 4. Nó xác định số chữ số sẽ được hiển thị trên màn hình 7-segment.
  • pos: Đây là một tham số tùy chọn có giá trị mặc định là 0. Nó xác lập vị trí của chữ số có giá trị lớn nhất trong số.

Ví dụ, nếu bạn gọi display.showNumberDecEx(1530,0b01000000); nó sẽ hiển thị số 15:30 trên màn hình 7-segment.

Xin lưu ý rằng nếu số nằm ngoài phạm vi hoặc nếu giá trị của độ dài lớn hơn 4, hàm sẽ không hiển thị bất cứ điều gì.

Thiết lập các phân đoạn()

Mô tả

Chức năng này được dùng để thiết lập trực tiếp các đoạn trên màn hình 7 đoạn. Nó có thể được dùng để hiển thị chữ cái, ký tự đặc biệt, hoặc bật tất cả các đoạn LED.

Cú pháp

void setSegments(const uint8_t segments[], uint8_t length = 4, uint8_t pos = 0);

Thông số

  • segments: Tham số này thiết lập các đoạn của màn hình hiển thị 7 đoạn, nó là một mảng các byte, trong đó mỗi byte đại diện cho các đoạn của mỗi chữ số. Mỗi đoạn được đại diện bởi một bit trong byte.
  • length: Đây là một tham số tùy chọn có giá trị mặc định là 4. Nó xác định số chữ số được hiển thị trên màn hình 7 đoạn.
  • pos: Đây là một tham số tùy chọn có giá trị mặc định là 0. Nó xác định vị trí của chữ số có giá trị lớn nhất của số.

Hàm này hữu ích khi bạn muốn hiển thị các ký tự hoặc ký hiệu không có trong màn hình 7 đoạn cơ bản. Bằng cách thiết lập các đoạn trực tiếp, bạn có thể hiển thị bất kỳ mẫu nào bạn muốn.

Xin lưu ý rằng nếu số nằm ngoài phạm vi hoặc nếu độ dài lớn hơn 4, hàm sẽ không hiển thị gì.

thiết lập độ sáng()

Mô tả

Chức năng được sử dụng để thiết lập độ sáng của màn hình 7 đoạn.

Cú pháp

void setBrightness(uint8_t brightness, bool on = true);

Tham số

  • brightness: Tham số này thiết lập mức sáng của màn hình 7 đoạn. Giá trị nên nằm trong phạm vi từ 0 đến 7. Giá trị cao hơn sẽ làm màn hình sáng hơn.
  • on: Đây là một tham số tùy chọn với giá trị mặc định là true. Nó được dùng để bật hoặc tắt màn hình. Nếu nó được đặt thành false, màn hình sẽ bị tắt.