Daftar Isi:
- Langkah 1: Perangkat Keras
- Langkah 2: Pinout dan Sinyal
- Langkah 3: Protokol
- Langkah 4: Perangkat Lunak
Video: Cara Menghubungkan Matriks LED Berpenggerak MAX7219 8x8 Dengan Mikrokontroler ATtiny85: 7 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:55
Kontroler MAX7219 diproduksi oleh Maxim Integrated yang ringkas, driver tampilan katoda umum input/output serial yang dapat menghubungkan mikrokontroler ke 64 LED individu, tampilan LED numerik 7-segmen hingga 8 digit, tampilan grafik batang, dll. Termasuk pada -chip adalah dekoder kode-B BCD, sirkuit pemindaian multipleks, driver segmen dan digit, dan RAM statis 8x8 yang menyimpan setiap digit.
Modul MAX7219 sangat nyaman digunakan dengan mikrokontroler seperti ATtiny85, atau, dalam kasus kami, Papan Tinusaur.
Langkah 1: Perangkat Keras
Modul MAX7219 biasanya terlihat seperti ini. Mereka memiliki bus input di satu sisi dan bus output di sisi lain. Ini memungkinkan Anda untuk membuat rantai daisy 2 atau lebih modul, yaitu satu demi satu, untuk membuat pengaturan yang lebih rumit.
Modul yang kami gunakan mampu menghubungkan dalam rantai menggunakan 5 jumper kecil. Lihat gambar di bawah ini.
Langkah 2: Pinout dan Sinyal
Modul MAX7219 memiliki 5 pin:
- VCC – daya (+)
- GND – tanah (-)
- DIN – Masukan data
- CS – Pilihan chip
- CLK – Jam
Itu berarti kita membutuhkan 3 pin pada sisi mikrokontroler ATtiny85 untuk mengontrol modul. Itu akan menjadi:
- PB0 – terhubung ke CLK
- PB1 – terhubung ke CS
- PB2 – terhubung ke DIN
Ini cukup untuk menghubungkan ke modul MAX7219 dan memprogramnya.
Langkah 3: Protokol
Berkomunikasi dengan MAX7219 relatif mudah – ia menggunakan protokol sinkron yang berarti bahwa untuk setiap bit data yang kami kirim ada siklus jam yang menandakan keberadaan bit data tersebut.
Dengan kata lain, kami mengirim 2 urutan paralel ke bit – satu untuk jam dan satu lagi untuk data. Inilah yang dilakukan perangkat lunak.
Langkah 4: Perangkat Lunak
Cara kerja modul MAX7219 ini adalah sebagai berikut:
- Kami menulis byte ke register internalnya.
- MAX7219 menafsirkan data.
- MAX7219 mengontrol LED dalam matriks.
Itu juga berarti bahwa kita tidak perlu melingkari rangkaian LED sepanjang waktu untuk menyalakannya – pengontrol MAX7219 menangani hal itu. Itu juga bisa mengatur intensitas LED.
Jadi, untuk menggunakan modul MAX7219 dengan cara yang nyaman, kita memerlukan pustaka fungsi untuk melayani tujuan itu.
Pertama, kita memerlukan beberapa fungsi dasar untuk menulis ke register MAX7219.
- Menulis satu byte ke MAX7219.
- Menulis kata (2 byte) ke MAX7219.
Fungsi yang menulis satu byte ke controller terlihat seperti ini:
void max7219_byte(uint8_t data) { for(uint8_t i = 8; i >= 1; i--) { PORTB &= ~(1 << MAX7219_CLK); // Set CLK ke LOW if (data & 0x80) // Mask MSB dari data PORTB |= (1 << MAX7219_DIN); // Set DIN ke HIGH else PORTB &= ~(1 << MAX7219_DIN); // Atur DIN ke LOW PORTB |= (1 << MAX7219_CLK); // Atur CLK ke data TINGGI <<= 1; // Geser ke kiri } }
Sekarang kita dapat mengirim byte ke MAX7219, kita dapat mulai mengirim perintah. Ini dilakukan dengan mengirimkan 2 byes – 1 untuk alamat register internal dan 2 untuk data yang ingin kami kirim.
Ada lebih dari selusin register di pengontrol MAX7219.
Mengirim perintah, atau kata, pada dasarnya mengirim 2 byte berturut-turut. Implementasi fungsi yang sangat sederhana.
void max7219_word(alamat uint8_t, data uint8_t) { PORTB &= ~(1 << MAX7219_CS); // Setel CS ke LOW max7219_byte(alamat); // Mengirim alamat max7219_byte(data); // Mengirim data PORTB |= (1 << MAX7219_CS); // Atur CS ke HIGH PORTB &= ~(1 << MAX7219_CLK); // Setel CLK ke RENDAH }
Penting untuk dicatat di sini baris di mana kita membawa sinyal CS kembali ke TINGGI – ini menandai akhir dari urutan – dalam hal ini, akhir dari perintah. Teknik serupa digunakan ketika mengontrol lebih dari satu matriks yang terhubung dalam sebuah rantai. Langkah selanjutnya, sebelum kita mulai menyalakan dan mematikan LED, adalah menginisialisasi pengontrol MAX7219. Ini dilakukan dengan menulis nilai tertentu ke register tertentu. Untuk kenyamanan, saat mengkodekannya, kita dapat menempatkan urutan inisialisasi dalam sebuah array.
uint8_t initseq = { 0x09, 0x00, // Register Mode Decode, 00 = Tanpa decode 0x0a, 0x01, // Register Intensitas, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit Register, 0x07 untuk menampilkan semua baris 0x0c, 0x01, // Register Mati, 0x01 = Operasi Normal 0x0f, 0x00, // Register Uji Tampilan, 0x00 = Operasi Normal };
Kita hanya perlu mengirimkan 5 perintah di atas secara berurutan sebagai pasangan alamat/data. Langkah selanjutnya – menyalakan deretan LED.
Ini sangat sederhana – kita hanya menulis satu perintah di mana byte pertama adalah alamatnya (dari 0 hingga 7) dan byte ke-2 adalah 8 bit yang mewakili 8 LED dalam baris.
void max7219_row(alamat uint8_t, data uint8_t) { if (alamat >= 1 && alamat <= 8) max7219_word(alamat, data); }
Penting untuk dicatat bahwa ini hanya akan berfungsi untuk 1 matriks. Jika kita menghubungkan lebih banyak matriks dalam sebuah rantai, mereka semua akan menampilkan data yang sama. Alasan untuk ini adalah bahwa setelah mengirim perintah, kami membawa sinyal CS kembali ke TINGGI yang menyebabkan semua pengontrol MAX7219 dalam rantai terkunci dan menunjukkan apa pun perintah terakhirnya.
Direkomendasikan:
Tampilan Matriks 8x8 Dengan BT: 5 Langkah (dengan Gambar)
Tampilan Matriks 8x8 Dengan BT: Saya membeli matriks 4 panel 8x8 dari Ebay (Cina) beberapa bulan yang lalu. Saya sedikit kecewa ketika saya menyadari bahwa itu adalah kabel keras dari sisi ke sisi, bukan dari atas ke bawah yang sebagian besar contoh di Net ditulis! Lihat langkah 2. Saya rasa saya bisa
Menghubungkan Mikrokontroler Atmega16 Dengan Tampilan Dot Matrix Led: 5 Langkah
Menghubungkan Mikrokontroler Atmega16 Dengan Tampilan Dot Matrix Led: Dalam proyek ini kita akan menghubungkan tampilan LED satu titik matriks dengan mikrokontroler AVR (Atmega16). Di sini kami akan menunjukkan simulasi di proteus, Anda dapat menerapkan hal yang sama di perangkat keras Anda. Jadi disini kita cetak dulu satu karakter misalkan 'A' di t
Menghubungkan Tampilan 7-Segmen Dengan Shift Register Menggunakan Mikrokontroler CloudX: 5 Langkah
Menghubungkan Tampilan 7-Segmen Dengan Shift Register Menggunakan Mikrokontroler CloudX: Dalam proyek ini kami menerbitkan tutorial tentang cara menghubungkan tampilan LED tujuh segmen dengan mikrokontroler CloudX. Tampilan tujuh segmen digunakan di banyak sistem tertanam dan aplikasi industri di mana kisaran output yang akan ditampilkan diketahui
Ekor Osilasi Berpenggerak Kawat Lembut (Kursus TfCD, TU Delft): 5 Langkah (dengan Gambar)
Soft Wire-driven Oscillating Tail (TfCD Course, TU Delft): Eksplorasi teknologi dilakukan untuk menentukan kemungkinan untuk menggerakkan robot ikan dengan badan aktif yang digerakkan kawat dan ekor yang sesuai dengan floppy. Kami menggunakan satu bahan yang kuat untuk dijadikan sebagai tulang punggung dan fleksibel, sehingga menghasilkan kelenturan yang rata
Pendulum Berpenggerak Motor: 4 Langkah (dengan Gambar)
Motor Driven Pendulums: Di sini saya akan membuat dua pendulum, atau ayunan yang digerakkan oleh motor yang pada gilirannya dikendalikan oleh PIC32 MCU, dan untuk mengimplementasikan beberapa fungsi, yaitu. untuk mensimulasikan gerakan pendulum di bawah gravitasi atau pengaruh pegas, dengan mengendalikan