Isi kandungan:

Cara Memadankan Matriks LED Bergerak MAX7219 8x8 Dengan Mikrokontroler ATtiny85: 7 Langkah
Cara Memadankan Matriks LED Bergerak MAX7219 8x8 Dengan Mikrokontroler ATtiny85: 7 Langkah

Video: Cara Memadankan Matriks LED Bergerak MAX7219 8x8 Dengan Mikrokontroler ATtiny85: 7 Langkah

Video: Cara Memadankan Matriks LED Bergerak MAX7219 8x8 Dengan Mikrokontroler ATtiny85: 7 Langkah
Video: led matrix sederhana 2024, Julai
Anonim
Cara Memadankan Matriks LED Bergerak MAX7219 8x8 Dengan Mikrokontroler ATtiny85
Cara Memadankan Matriks LED Bergerak MAX7219 8x8 Dengan Mikrokontroler ATtiny85

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

Perkakasan
Perkakasan
Perkakasan
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

Protokol
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

Perisian
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: