Daftar Isi:

Cara Menghubungkan Matriks LED Berpenggerak MAX7219 8x8 Dengan Mikrokontroler ATtiny85: 7 Langkah
Cara Menghubungkan Matriks LED Berpenggerak MAX7219 8x8 Dengan Mikrokontroler ATtiny85: 7 Langkah

Video: Cara Menghubungkan Matriks LED Berpenggerak MAX7219 8x8 Dengan Mikrokontroler ATtiny85: 7 Langkah

Video: Cara Menghubungkan Matriks LED Berpenggerak MAX7219 8x8 Dengan Mikrokontroler ATtiny85: 7 Langkah
Video: BELAJAR 60 PEMROGRAMAN ARDUINO - Cara Kerja Dot Matrix 8x8 Dual Color Dan Penerapannya. 2024, November
Anonim
Cara Menghubungkan Matriks LED Berbasis MAX7219 8x8 Dengan Mikrokontroler ATtiny85
Cara Menghubungkan Matriks LED Berbasis MAX7219 8x8 Dengan Mikrokontroler ATtiny85

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

Perangkat Keras
Perangkat Keras
Perangkat Keras
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

Protokol
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

Perangkat Lunak
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: