
Isi kandungan:
2025 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2025-01-23 15:01

Pengawal MAX7219 dihasilkan oleh Maxim Integrated adalah pemacu paparan katod biasa input / output bersiri yang ringkas yang boleh menghubungkan mikrokontroler ke 64 LED individu, paparan LED berangka 7 segmen hingga 8 digit, paparan grafik bar, dll. Termasuk pada -chip adalah penyahkod kod BCD, litar imbasan multipleks, pemacu segmen dan digit dan RAM statik 8 × 8 yang menyimpan setiap digit.
Modul MAX7219 sangat mudah digunakan dengan mikrokontroler seperti ATtiny85, atau, dalam kes kami, Tinusaur Board.
Langkah 1: Perkakasan


Modul MAX7219 biasanya kelihatan seperti ini. Mereka mempunyai bas input di satu sisi dan bus output di sisi lain. Ini membolehkan anda membuat daisy chain 2 atau lebih modul, satu demi satu, untuk membuat persediaan yang lebih rumit.
Modul yang kami gunakan mampu menyambung dalam rantai menggunakan 5 jumper kecil. Lihat gambar di bawah.
Langkah 2: Pinout dan Isyarat
Modul MAX7219 mempunyai 5 pin:
- VCC - kuasa (+)
- GND - tanah (-)
- DIN - Input data
- CS - Pilih cip
- CLK - Jam
Itu bermakna bahawa kita memerlukan 3 pin di sisi mikrokontroler ATtiny85 untuk mengawal modul. Mereka akan:
- PB0 - disambungkan ke CLK
- PB1 - disambungkan ke CS
- PB2 - disambungkan ke DIN
Ini mencukupi untuk menyambung ke modul MAX7219 dan memprogramkannya.
Langkah 3: Protokol

Berkomunikasi dengan MAX7219 agak mudah - ia menggunakan protokol segerak yang bermaksud bahawa untuk setiap bit data yang kami kirim ada pusingan jam yang menandakan adanya bit data tersebut.
Dengan kata lain, kami menghantar 2 urutan selari ke bit - satu untuk jam dan satu lagi untuk data. Inilah yang dilakukan oleh perisian.
Langkah 4: Perisian

Cara kerja modul MAX7219 ini adalah:
- Kami menulis bait ke daftar dalamannya.
- MAX7219 mentafsirkan data.
- MAX7219 mengawal LED dalam matriks.
Itu juga bermaksud bahawa kita tidak perlu mengelilingi pelbagai LED sepanjang masa untuk menyalakannya - pengawal MAX7219 mengurusnya. Ini juga dapat mengatur intensiti LED.
Jadi, untuk menggunakan modul MAX7219 dengan cara yang mudah, kami memerlukan perpustakaan fungsi untuk memenuhi tujuan tersebut.
Pertama, kita memerlukan beberapa fungsi asas untuk menulis ke daftar MAX7219.
- Menulis bait ke MAX7219.
- Menulis perkataan (2 bait) ke MAX7219.
Fungsi yang menulis satu bait ke pengawal kelihatan seperti ini:
batal max7219_byte (data uint8_t) {untuk (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // Tetapkan CLK ke RENDAH jika (data & 0x80) // Tutupi MSB data PORTB | = (1 << MAX7219_DIN); // Tetapkan DIN ke PORTB TINGGI yang lain & = ~ (1 << MAX7219_DIN); // Tetapkan DIN ke PORTB RENDAH | = (1 << MAX7219_CLK); // Tetapkan data CLK ke TINGGI << = 1; // Beralih ke kiri}}
Sekarang kita dapat mengirim byte ke MAX7219, kita dapat mulai mengirim perintah. Ini dilakukan dengan menghantar 2 bye - 1st untuk alamat register dalaman dan 2 untuk data yang ingin kami hantar.
Terdapat lebih daripada selusin daftar dalam pengawal MAX7219.
Menghantar perintah, atau kata, pada dasarnya menghantar 2 bait berturut-turut. Fungsi pelaksanaannya sangat mudah.
batal max7219_word (alamat uint8_t, uint8_t data) {PORTB & = ~ (1 << MAX7219_CS); // Tetapkan CS ke RENDAH max7219_byte (alamat); // Menghantar alamat max7219_byte (data); // Menghantar data PORTB | = (1 << MAX7219_CS); // Tetapkan CS ke PORTB TINGGI & = ~ (1 << MAX7219_CLK); // Tetapkan CLK ke RENDAH}
Penting untuk dicatat di sini garis di mana kita membawa isyarat CS kembali ke TINGGI - ini menandakan akhir urutan - dalam kes ini, akhir perintah. Teknik yang serupa digunakan semasa mengendalikan lebih daripada satu matriks yang disambungkan dalam rantai. Langkah seterusnya, sebelum kita mulai menghidupkan dan mematikan LED, adalah untuk memulakan pengawal MAX7219. Ini dilakukan dengan menulis nilai tertentu ke daftar tertentu. Untuk kemudahan, semasa membuat kod, kita dapat meletakkan urutan inisialisasi dalam array.
uint8_t initseq = {0x09, 0x00, // Decode-Mode Register, 00 = No decode 0x0a, 0x01, // Intensity Register, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit Register, 0x07 untuk menunjukkan semua baris 0x0c, 0x01, // Shutdown Register, 0x01 = Operasi Biasa 0x0f, 0x00, // Paparan-Uji Daftar, 0x00 = Operasi Biasa};
Kami hanya perlu menghantar 5 perintah di atas secara berurutan sebagai pasangan alamat / data. Langkah seterusnya - menyalakan sebaris LED.
Ini sangat mudah - kami hanya menulis satu arahan di mana bait pertama adalah alamat (dari 0 hingga 7) dan bait ke-2 adalah 8 bit yang mewakili 8 LED berturut-turut.
batal max7219_row (alamat uint8_t, uint8_t data) {if (alamat> = 1 && alamat <= 8) max7219_word (alamat, data); }
Penting untuk diperhatikan bahawa ini hanya akan berfungsi untuk 1 matriks sahaja. Sekiranya kita menghubungkan lebih banyak matriks dalam rantai, semuanya akan menunjukkan data yang sama. Sebabnya ialah selepas menghantar arahan, kita membawa isyarat CS kembali ke TINGGI yang menyebabkan semua pengawal MAX7219 dalam rantai mengunci dan menunjukkan apa sahaja perintah terakhir.
Disyorkan:
Cara Membina 8x8 BIG LED Matrix (MAX7219 LED 10mm): 9 Langkah (dengan Gambar)

Bagaimana Membina Matriks LED 8x8 BIG (MAX7219 LED 10mm): Adakah anda bekerja dengan matriks LED 8x8 siap pakai sebagai paparan? Mereka datang dalam pelbagai saiz dan cukup menarik untuk digunakan. Ukuran besar yang tersedia adalah sekitar 60mm x 60mm. Walau bagaimanapun, jika anda mencari matriks LED siap pakai yang jauh lebih besar
Lampu LED Bergerak Bergerak Dengan Bateri: 4 Langkah

Lampu LED Bergerak Bergerak Dengan Bateri: Sekiranya anda ingin meletakkan lampu di tempat yang tidak sesuai dengan kabel, ini mungkin hanya yang anda perlukan
Cara Memadankan Paparan TFT 4x3 "Dengan Arduino: 4 Langkah

Cara Memadankan Paparan TFT 4x3 "Dengan Arduino: FocusLCDs.com mengirimi saya sampel percuma TFT LCD 4x3" (P / N: E43RG34827LW2M300-R) untuk mencuba. Ini adalah LCD TFT matriks warna aktif (Thin Film Transistor) (paparan kristal cecair) yang menggunakan TFT silikon amorf sebagai alat beralih. Model ini adalah
Cara Memadankan LCD 16x4 Dengan Arduino: 6 Langkah

Cara Memadankan LCD 16x4 Dengan Arduino: PengenalanSaya baru-baru ini menerima beberapa sampel LCD percuma dari rakan-rakan saya di FocusLCDs.com. Salah satunya ialah LCD 16x4; P / N: C164AXBSYLY6WT. Ia menggunakan pengawal ST7066U (lihat lembaran data di sini) dan bukannya HD44780 yang biasa dijumpai dalam pelindung LCD. Bukan saya
Mastermind Dengan Matriks LED 8x8 RGB: 5 Langkah (dengan Gambar)

Mastermind Dengan Matriks LED 8x8 RGB: Bahagian yang diperlukan: Basys3 FPGA 8x8 RGB LED Matrix oleh GEEETECH9V bateri2N3904 transistor (x32) 1K perintang (x32) 100 Ohm perintang (x1) 50 Ohm perintang (x1) LED Matrix adalah matriks anod biasa dengan 32 jumlah pin. Anod biasa bermaksud bahawa setiap baris adalah