Beza TM1637 vs MAX7219: Paparan 7-Segmen Mana Nak Beli?

Cartoon of a blue TM1637 four-digit display with a red colon wired by four jumper leads to a blue Arduino Uno with a sensor shield, beside a long blue MAX7219 eight-digit display whose five input pads are still bare

Beli module TM1637 4-digit bila paparan anda ialah jam dan perlukan titik bertindih (colon), dan module MAX7219 8-digit bila anda perlukan lima digit ke atas, satu titik perpuluhan, atau beberapa panel. Separuh lagi keputusan itu ialah apa yang ada di dalam bungkusan: TM1637 kami sampai dengan headernya sudah terpasang, MAX7219 pula dengan lima pad kosong.

Jawapan ringkasnya: TM1637 atau MAX7219?

Module TM1637 dan MAX7219 menjawab satu soalan yang sama dengan cara bertentangan: berapa banyak digit, lawan berapa banyak pin Arduino yang anda mampu lepaskan.

  Module TM1637 (4DI1637) Module MAX7219 (8DI7291)
Digit 4 8 (dua blok empat)
Pemisah Titik bertindih tengah yang tetap, tiada titik perpuluhan Titik perpuluhan pada setiap digit, tiada titik bertindih
Antara muka Dua wayar (CLK + DIO), proprietari — bukan I2C Tiga wayar bersiri, gaya SPI (DIN, CS, CLK)
Pin Uno untuk satu module 2 pin isyarat 3 pin isyarat
Pin Uno untuk N module 1 + N (CLK dikongsi, satu DIO setiap satu) 3, berapa banyak pun anda rantai
Saiz board ~42 x 25 mm, empat lubang M2 di penjuru Jalur ~82 x 15 mm, empat lubang 3 mm
Kawalan kecerahan 8 tahap, ditetapkan dalam arahan paparan 16 tahap duty, ditetapkan dalam register intensity
Bagaimana ia sampai daripada kami Header right-angle 4-pin sudah disolder Lima pad kosong — header tidak dipasang
Library Arduino TM1637 oleh Avishay Orpaz LedControl oleh Eberhard Fahle

Pilihan: biar kami solderkan header untuk anda

ItemPriceQty
Soldering Service for Circuit Boards & Electronics - 5 Pins Soldering ServiceSoldering Service for Circuit Boards & Electronics - 5 Pins Soldering ServiceSOLSE05RM0.80

Lima pin pada MAX7219, disolder sebelum ia dihantar. Servis ini perlu rundingan dahulu, jadi mesej kami di WhatsApp sebelum anda masukkannya ke dalam troli.

Kenapa dua wayar TM1637 itu bukan I2C?

Pautan TM1637 nampak sama macam I2C bila dilihat pada skop: data bermula bila DIO jatuh semasa CLK masih tinggi, tamat bila DIO naik, dan cip mengaku terima dengan menarik DIO ke bawah pada tepi jatuh clock kelapan. Datasheet TM1637 keluaran Titan Micro menyatakan fakta yang menentukan: protokol ini “bukan sama sepenuhnya dengan protokol bas I2C kerana tiada alamat slave”.

Buang alamat itu, tiga perkara menyusul. Tiada laluan Wire dan tiada sebab untuk guna A4 dan A5: library itu bit-bang pautan tersebut, jadi mana-mana dua pin digital biasa boleh pakai, dan DIO ialah open-drain — library hanya menariknya ke LOW atau melepaskannya kepada pull-up module. Byte keluar bermula dengan bit paling rendah dahulu, sedangkan I2C mula dengan bit paling tinggi. Dan dua module yang berkongsi satu CLK dan satu DIO kedua-duanya menyambut byte yang sama, sebab tiada apa-apa menyatakan siapa yang sedang dialamatkan. Jadi ia berskala mengikut kiraan pin: kongsi CLK, satu DIO setiap satu.

Macam mana MAX7219 muatkan 64 digit ke atas tiga pin?

MAX7219 bercakap dalam paket 16-bit yang tetap. Datasheet MAX7219/MAX7221 keluaran Analog Devices mengeja bingkai itu satu per satu: bit dianjak masuk ke dalam satu register 16-bit dalaman pada setiap tepi naik CLK, yang pertama masuk ialah D15, D8–D11 membawa alamat register, D0–D7 pula datanya, dan perkataan itu dikunci pada tepi naik LOAD/CS. Itu SPI pada semua segi kecuali namanya — walaupun datasheet menyimpan frasa “fully SPI compatible” untuk kembarnya MAX7221, sebab pada MAX7219 data dianjak masuk pada setiap tepi naik CLK tanpa mengira apa yang CS sedang buat; CS cuma mengunci.

Rantaian itulah bahagian bijaknya. Apa sahaja yang masuk ke DIN muncul semula di DOUT 16.5 kitaran clock kemudian, jadi paket kedua menolak paket pertama keluar dari module 1 masuk ke module 2. Sambung DOUT ke DIN seterusnya, ikat semua CS bersama, dan untuk sampai ke module keempat bermakna empat paket — satu yang sebenar, tiga no-op — dikunci oleh satu tepi naik CS. LedControl memacu lapan peranti, jadi enam puluh empat digit tetap berharga tiga pin. Ketidakseimbangan itulah hujah pembeliannya.

Rajah konsep kartun membandingkan lima wayar yang merebak keluar kepada empat paparan digit merah yang kecil dengan tiga wayar yang memberi makan satu rantaian empat paparan lapan-digit yang panjang
Empat module TM1637 memakan lima pin Arduino, sebab setiap satu perlukan talian data sendiri. Empat module MAX7219 memakan tiga, dan empat puluh module pun sama.

Yang mana patut anda beli untuk projek Arduino anda?

Titik bertindih pada TM1637 ialah satu kategori projek, bukan hiasan: jam, kira detik menurun, pemasa pusingan. Binaan jam DS3231 kami meletakkan waktu pada LCD 16×2; TM1637 melakukannya dalam suku daripada ruang itu, dengan dua pin. MAX7219 pula menguasai bacaan berpecahan dan nombor yang panjang.

Kalau paparan anda… Beli
Jam atau pemasa dalam bentuk HH:MM atau MM:SS Module TM1637 4-digit
Empat digit atau kurang pada Uno yang sudah sesak Module TM1637 4-digit
Bacaan sensor dengan satu tempat perpuluhan Module MAX7219 8-digit
Lima digit ke atas, atau dua panel bersebelahan Module MAX7219 8-digit
Perkataan, nama atau menu Bukan dua-dua — lihat panduan monitor OLED kami
Rapat kartun membandingkan titik bertindih merah yang menyala pada paparan empat-digit biru yang kecil dengan titik perpuluhan merah yang menyala pada paparan lapan-digit biru yang panjang
TM1637 ada titik bertindih dan tiada titik perpuluhan. MAX7219 ada titik perpuluhan di bawah setiap digit dan tiada titik bertindih. Tiada satu pun boleh meminjam milik yang satu lagi.

Apa yang ada dalam bungkusan, dan header yang MAX7219 perlukan

Module TM1637 sampai sedia untuk diwayarkan: header right-angle empat-pinnya disolder dari kilang di hujung pendek, dan susunannya CLK, DIO, VCC, GND — bersilkscreen di sebelah bawah, jadi terbalikkan board itu dahulu.

Module MAX7219 pula sampai dengan cara yang berbeza, dan itulah fakta yang berbaloi diketahui sebelum anda pesan. Lima pad inputnya — VCC, GND, DIN, CS, CLK, dengan VCC pada pad segi empat yang menandakan pin 1 — ialah lubang plated kosong tanpa header terpasang, begitu juga lima pad rantaian di hujung sebelah sana. Bungkusan itu mengandungi paparan sahaja. Sebab itulah jalur header male 40-pin ada dalam senarai komponen: patahkan lima pin dan solder lima sambungan, sambil menentukan dari muka mana pin itu hendak menjulur keluar sebelum besi solder panas. Atau tambah servis solder 5-pin — listing itu perlu rundingan dahulu, jadi mesej kami di WhatsApp dulu.

Satu nota keselamatan, satu-satunya bahaya sebenar di sini. Hujung besi solder berada sekitar 350 °C, cukup panas untuk meninggalkan parut sebelum anda sempat rasa, dan asap flux pula merengsakan: guna permukaan tahan haba, letak besi solder semula pada standnya antara setiap sambungan, dan buka tingkap atau halakan kipas melintasi meja. Panduan solder kami merangkumi baris pin ini.

Rapat kartun lima pad solder tinned yang kosong pada board MAX7219 biru yang panjang, dengan header lima-pin hitam yang baru dipatahkan dan besi solder sedang membuat satu sambungan
Lima pad input MAX7219 sampai dalam keadaan kosong. Patahkan lima pin daripada jalur header, solder masuk, dan module itu sedia untuk wayar jumper.

Berapa banyak arus yang lapan digit menyala tarik?

MAX7219 tidak pernah menyalakan lapan digit serentak. Satu oscillator hardware mengimbas lapan pemacu digit itu satu per satu pada 500–1300 Hz, jadi pada bila-bila detik satu digit sahaja yang menyala dan sehingga lapan segmennya — tujuh bar campur titik perpuluhan — menarik arus. Arus segmen puncak ialah urusan hardware, bukan kod: satu perintang antara V+ dan pin ISET cip, dengan pemacu segmen menyumberkan kira-kira 100 kali ganda arus yang masuk ke situ. Nilai lantai datasheet untuk perintang itu, 9.53 kΩ, meletakkan satu segmen sekitar 40 mA, dan lapan daripadanya menjadi 320 mA. Dengan kelapan-lapan digit memaparkan 8. serentak, salah satu daripadanya sentiasa berada pada puncak itu, jadi puncak itu juga puratanya — sebab itulah datasheet memberi angka tipikal 330 mA dengan semua segmen dan titik perpuluhan menyala. Digit yang kosong tidak menarik apa-apa dalam slotnya, jadi bacaan dua digit purata kira-kira suku daripada itu walaupun puncaknya tidak berubah.

Port USB 2.0 memperuntukkan 500 mA dan Uno mahukan sebahagian daripadanya, jadi satu panel pada kecerahan penuh atas kabel yang sama duduk hampir dengan had itu, dan gejalanya ialah board yang reset semasa paparan makin penuh. Turunkan intensity — register itu satu kawalan duty cycle yang berjalan dari 1/32 hingga 31/32 dalam enam belas tahap, jadi arus purata turun bersamanya — atau beri paparan itu bekalan 5 V sendiri, diwayarkan ke VCC dan GND module dengan kedua-dua ground diikat bersama. Jauhkan ia daripada terminal skru shield: jumper kecil di sebelah terminal itu menyambungkannya kepada rel 5 V Uno sendiri, jadi bekalan kedua yang mendarat di situ akan bertelagah dengan bekalan USB tadi. Pengajaran bajet arus yang sama seperti dalam panduan WS2812 kami.

Perintang penetap arus itu sudah terpasang pada module kami, jadi kecerahan di sini urusan software sepenuhnya. TM1637 tiada padanannya: ia menetapkan arus segmen di dalam cip, memberi lapan tahap pulse-width tanpa apa-apa untuk disolder atau ditrim. Kedua-dua cip mengimbas dalam hardware, jadi tiada satu pun berkelip dan tiada satu pun perlukan loop() anda untuk menyegarkannya.

Macam mana nak sambung dan kodkan setiap satu?

Dengan lima pin MAX7219 sudah disolder, kedua-dua module mempamerkan pin male — pin TM1637 dipasang dari kilang — manakala header Arduino Uno pula socket female. Sensor Shield V5.0 menyelesaikannya dengan satu tekanan: ia mengeluarkan semula setiap pin digital sebagai satu pin S male dalam set tiga G/V/S, jadi jumper F-F biasa boleh merapatkan kedua-duanya.

Pin TM1637 Sambung ke
CLK Pin S lajur 2 pada shield → D2
DIO Pin S lajur 3 pada shield → D3
VCC Mana-mana pin V pada shield → 5V Uno
GND Mana-mana pin G pada shield → GND Uno
// Paparan TM1637 4-digit - minit:saat dengan titik bertindih menyala.
// Library: "TM1637" oleh Avishay Orpaz (Library Manager) - header TM1637Display.h
#include <TM1637Display.h>

const uint8_t PIN_CLK = 2;   // mana-mana dua pin digital biasa
const uint8_t PIN_DIO = 3;

TM1637Display display(PIN_CLK, PIN_DIO);

void setup() {
  display.setBrightness(3);  // 0 = paling malap, 7 = paling terang
  display.clear();
}

void loop() {
  static unsigned long shown = 0;
  unsigned long secs = millis() / 1000UL;      // saat sejak board dihidupkan
  if (secs == shown) return;                   // lukis semula hanya bila ia berubah
  shown = secs;

  unsigned int mm = (secs / 60UL) % 100UL;     // 0..99 minit
  unsigned int ss = secs % 60UL;

  // 0b01000000 menyalakan titik bertindih (bit 6 = bit titik perpuluhan digit kedua)
  display.showNumberDecEx(mm * 100 + ss, 0b01000000, true);
}
Pin MAX7219 Sambung ke
VCC Mana-mana pin V pada shield → 5V Uno
GND Mana-mana pin G pada shield → GND Uno
DIN Pin S lajur 11 pada shield → D11
CS Pin S lajur 10 pada shield → D10
CLK Pin S lajur 13 pada shield → D13
// Paparan MAX7219 8-digit - jam randik yang membaca sehingga satu tempat perpuluhan.
// Library: "LedControl" oleh Eberhard Fahle (Library Manager)
#include <LedControl.h>

const uint8_t PIN_DIN = 11;
const uint8_t PIN_CLK = 13;
const uint8_t PIN_CS  = 10;

LedControl lc(PIN_DIN, PIN_CLK, PIN_CS, 1);  // 1 = satu module dalam rantaian

void setup() {
  lc.shutdown(0, false);     // cip hidup dalam keadaan blank - baris ini mengejutkannya
  lc.setIntensity(0, 2);     // 0..15 tahap duty; rendah kekalkan arus waras
  lc.clearDisplay(0);
}

// Digit 0 ialah digit sebelah KANAN pada board ini.
void showTenths(unsigned long tenths) {
  uint8_t pos = 0;
  do {
    lc.setDigit(0, pos, (byte)(tenths % 10), pos == 1);  // dp pada digit unit
    tenths /= 10;
    pos++;
  } while ((tenths > 0 || pos < 2) && pos < 8);
}

void loop() {
  static unsigned long shown = 0;
  unsigned long tenths = millis() / 100UL;
  if (tenths == shown) return;
  shown = tenths;
  showTenths(tenths % 100000000UL);   // 8 digit muat sehingga 99999999
}

LedControl bit-bang tiga talian itu dengan shiftOut() dan bukan dengan peripheral SPI Uno, jadi D11, D13 dan D10 ialah satu konvensyen, bukan satu keperluan — mana-mana tiga pin digital boleh pakai. Tetapi jangan usik setScanLimit(): datasheet memberi amaran bahawa mengimbas tiga digit atau kurang membuatkan pemacu digit individu melesapkan kuasa yang berlebihan melainkan perintang penetap arus tadi dinaikkan untuk memadaninya, dan pada module ini nilainya tetap. Kosongkan digit yang lebih dengan lc.setRow(0, pos, 0x00) sebaliknya. Kalau anda mahu melihat hardware dan library ini bekerja di atas meja:

Kesilapan biasa yang kami nampak daripada pelanggan sebenar

MAX7219 diwayarkan dengan betul tetapi kekal gelap. Itu kelakuan yang memang direka, dua kali pula. Kata datasheet: pada permulaan kuasa, semua register kawalan direset, paparan dikosongkan, dan MAX7219/MAX7221 masuk ke mod shutdown. Konstruktor LedControl kemudian mengembalikannya semula ke shutdown supaya tiada apa-apa berkelip semasa sketch anda bersiap. Tiada apa menyala sehingga lc.shutdown(0, false) dijalankan — sebab itulah ia baris pertama dalam setup().

Ia menyala tetapi memaparkan bar rawak. Itu register decode-mode di alamat 0x09: MAX7219 sama ada mentafsir nombor biasa menjadi segmen untuk anda (BCD Code B) atau menerima bitmap segmen yang mentah, dan register itulah yang memilih antara dua. LedControl menghantar bitmap mentah dan menetapkan decode mode kepada sifar semasa permulaan, jadi kod tulisan tangan yang menghidupkan semula Code B menyebabkan setiap byte selepas itu dibaca sebagai jenis yang salah.

Nombornya terbaca terbalik. Digit 0 ialah digit sebelah kanan pada board ini, jadi digit paling rendah duduk di posisi 0 dan anda bergerak ke kiri, sama macam yang sketch itu buat — sebab itulah titik perpuluhannya mendarat pada posisi 1. Untuk pastikan, nyalakan posisi 0 seorang diri dan tengok hujung mana yang bertindak balas.

Sketch tak mahu compile. Kedua-dua nama itu sesak di dalam Library Manager: sketch TM1637 di atas perlukan library Avishay Orpaz, header TM1637Display.h, sedangkan entri TM1637 yang lain menggunakan nama class dan method yang berlainan. Untuk MAX7219 ambil LedControl — MD_MAX72xx itu library untuk matriks 8×8 dan tidak berkongsi satu pun API dengannya.

Uno reset bila paparan penuh dengan angka lapan. Bukan pepijat kod — itu bajet arus di atas tadi bertemu dengan port USB 500 mA. Dan orang masih membeli board lapan-digit untuk jam bertitik bertindih: ia ada titik perpuluhan dan tiada titik bertindih, jadi kerja itu milik TM1637.

Soalan lazim tentang TM1637 dan MAX7219

Boleh tak saya sambung TM1637 ke pin I2C A4 dan A5 Arduino?

Secara fizikal boleh, tetapi tiada faedah dan tiada laluan Wire: protokol itu tidak membawa alamat peranti, jadi ia tidak boleh berkongsi bas dengan komponen I2C. Guna mana-mana dua pin digital yang kosong.

Adakah module MAX7219 datang dengan header pin sudah terpasang?

Tidak — ia dihantar dengan lima lubang plated yang kosong di setiap hujung, dan bungkusannya mengandungi paparan sahaja. Pasang lima pin daripada jalur header 40-pin, atau tambah servis solder 5-pin kami.

Berapa banyak paparan yang satu Arduino Uno boleh jalankan?

Module MAX7219 yang dirantai berharga tiga pin berapa banyak pun anda tambah, dan LedControl mengendalikan lapan — enam puluh empat digit. Module TM1637 pula berharga satu pin setiap satu, sebab ia berkongsi CLK tetapi perlukan DIO sendiri.

Boleh tak paparan 7-segmen tunjuk huruf atau perkataan?

Hanya huruf yang muat pada tujuh bar — A, b, C, d, E, F, H, L, P dan beberapa lagi. Apa-apa yang perlu mengeja perkataan memerlukan LCD karakter atau OLED kecil.

Adakah module ini berfungsi dengan ESP32 atau NodeMCU?

Bekalkan kedua-duanya dengan 5 V. Julat bekalan MAX7219 ialah 4.0–5.5 V dan input datanya dispesifikasikan membaca logic high pada 3.5 V, jadi board 3.3 V memacunya sedikit di bawah ambang yang dijamin; satu level shifter pada DIN, CS dan CLK menjadikannya boleh diharap. DIO open-drain TM1637 pula melahu pada bekalan module itu sendiri, jadi ia pun mahukan 5 V di situ — perbandingan board kami membawa cerita penuh 3.3 V dan 5 V.

Kemas kini terakhir Ogos 2026. Tersangkut? Chat dengan kami di WhatsApp.

Leave a Reply

Your email address will not be published. Required fields are marked *