
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-23 15:13

MAX7219 denetleyicisi Maxim Integrated tarafından üretilmiştir, kompakt, seri giriş/çıkış ortak katot ekran sürücüsüdür ve mikro denetleyicileri 64 ayrı LED'e, 8 haneye kadar 7 segmentli sayısal LED ekranlara, çubuk grafik ekranlara vb. bağlayabilir. -chip, bir BCD kod-B kod çözücü, mültipleks tarama devresi, segment ve rakam sürücüleri ve her rakamı saklayan 8×8 statik RAM'dir.
MAX7219 modülleri, ATtiny85 veya bizim durumumuzda Tinusaur Board gibi mikro denetleyicilerle kullanım için çok uygundur.
Adım 1: Donanım


MAX7219 modülleri genellikle böyle görünür. Bir tarafta giriş bus'ı ve diğer tarafta çıkış bus'ı var. Bu, daha karmaşık kurulumlar oluşturmak için 2 veya daha fazla modülü birbiri ardına zincirlemenize olanak tanır.
Kullanmakta olduğumuz modüller 5 adet küçük jumper ile zincir şeklinde bağlanabilmektedir. Aşağıdaki resme bakın.
Adım 2: Pinout ve Sinyaller
MAX7219 modülünün 5 pini vardır:
- VCC – güç (+)
- GND – toprak (-)
- DIN – Veri girişi
- CS – Çip seçimi
- CLK – Saat
Bu, modülü kontrol etmek için ATtiny85 mikrodenetleyici tarafında 3 pime ihtiyacımız olduğu anlamına gelir. Bunlar:
- PB0 – CLK'ya bağlı
- PB1 – CS'ye bağlı
- PB2 – DIN'e bağlı
Bu, MAX7219 modülüne bağlanmak ve programlamak için yeterlidir.
Adım 3: Protokol

MAX7219 ile iletişim nispeten kolaydır – senkronize bir protokol kullanır, bu da gönderdiğimiz her veri biti için o veri bitinin varlığını gösteren bir saat döngüsü olduğu anlamına gelir.
Başka bir deyişle, bitlere 2 paralel dizi göndeririz - biri saat için diğeri veri için. Yazılımın yaptığı budur.
4. Adım: Yazılım

Bu MAX7219 modülünün çalışma şekli şudur:
- Dahili kaydına bayt yazıyoruz.
- MAX7219 verileri yorumlar.
- MAX7219, matristeki LED'leri kontrol eder.
Bu aynı zamanda, onları aydınlatmak için her zaman LED dizileri arasında dolaşmak zorunda olmadığımız anlamına gelir - MAX7219 denetleyicisi bununla ilgilenir. Ayrıca LED'lerin yoğunluğunu da yönetebilir.
Bu nedenle, MAX7219 modüllerini uygun bir şekilde kullanmak için bu amaca hizmet edecek bir işlev kitaplığına ihtiyacımız var.
Öncelikle MAX7219 yazmaçlarına yazabilmek için bazı temel fonksiyonlara ihtiyacımız var.
- MAX7219'a bir bayt yazma.
- MAX7219'a bir kelime (2 bayt) yazma.
Denetleyiciye bir bayt yazan işlev şöyle görünür:
void max7219_byte(uint8_t veri) { for(uint8_t i = 8; i >= 1; i--) { PORTB &= ~(1 << MAX7219_CLK); // (veri & 0x80) ise CLK'yı DÜŞÜK olarak ayarlayın // PORTB verisinin MSB'sini maskeleyin |= (1 << MAX7219_DIN); // DIN'i YÜKSEK olarak ayarlayın, aksi takdirde PORTB &= ~(1 << MAX7219_DIN); // DIN'i LOW PORTB olarak ayarlayın |= (1 << MAX7219_CLK); // CLK'yı YÜKSEK veriye ayarla <<= 1; // Sola kaydır } }
Artık MAX7219'a bayt gönderebildiğimize göre komutları göndermeye başlayabiliriz. Bu, dahili kaydın adresi için 1 ve göndermek istediğimiz veriler için 2 bayt gönderilerek yapılır.
MAX7219 denetleyicisinde bir düzineden fazla kayıt vardır.
Bir komut veya kelime göndermek, temelde 2 ardışık bayt göndermektir. Bunu uygulayan fonksiyon çok basit.
void max7219_word(uint8_t adresi, uint8_t verisi) { PORTB &= ~(1 << MAX7219_CS); // CS'yi LOW max7219_byte(adres) olarak ayarla // max7219_byte(data) adresini gönderiyoruz; // PORTB verilerinin gönderilmesi |= (1 << MAX7219_CS); // CS'yi YÜKSEK PORTB olarak ayarla &= ~(1 << MAX7219_CLK); // CLK'yı DÜŞÜK olarak ayarla }
Burada, CS sinyalini YÜKSEK'e geri getirdiğimiz satırı not etmek önemlidir - bu, dizinin sonunu gösterir - bu durumda, komutun sonu. Bir zincire bağlı birden fazla matrisi kontrol ederken benzer bir teknik kullanılır. Bir sonraki adım, LED'leri açıp kapatmaya başlamadan önce, MAX7219 denetleyicisini başlatmaktır. Bu, belirli kayıtlara belirli değerler yazılarak yapılır. Kolaylık sağlamak için, kodlarken başlatma dizisini bir diziye koyabiliriz.
uint8_t initseq = { 0x09, 0x00, // Kod Çözme Modu Kaydı, 00 = Kod çözme yok 0x0a, 0x01, // Yoğunluk Kaydı, 0x00.. 0x0f 0x0b, 0x07, // Tarama Sınırı Kaydı, 0x07 tüm satırları göstermek için 0x0c, 0x01, // Kapatma Kaydı, 0x01 = Normal Çalışma 0x0f, 0x00, // Ekran-Test Kaydı, 0x00 = Normal Çalışma };
Yukarıdaki 5 komutu sırayla adres/veri çiftleri olarak göndermemiz gerekiyor. Sonraki adım – bir sıra LED'leri yakmak.
Bu çok basittir – 1. baytın adres olduğu (0'dan 7'ye) ve 2. baytın sıradaki 8 LED'i temsil eden 8 bit olduğu bir komut yazıyoruz.
void max7219_row(uint8_t adresi, uint8_t verisi) { if (adres >= 1 && adres <= 8) max7219_word(adres, veri); }
Bunun yalnızca 1 matris için çalışacağını not etmek önemlidir. Bir zincire daha fazla matris bağlarsak, hepsi aynı verileri gösterecektir. Bunun nedeni, komutu gönderdikten sonra CS sinyalini HIGH'a geri getirmemizdir, bu da zincirdeki tüm MAX7219 kontrolörlerinin kilitlenmesine ve son komutun ne olduğunu göstermesine neden olur.
Önerilen:
Öğretici: Arduino UNO ile Yük Hücresi Nasıl Kalibre Edilir ve Arayüz Yapılır: 3 Adım

Öğretici: Arduino UNO ile Load Cell Kalibre Etme ve Arayüzleme: Merhaba arkadaşlar, size öğreticiyi göstereceğiz: Arduino UNO ile load cell veya HX711 Balance Module nasıl kalibre edilir ve arayüzlenir. HX711 Balance Module hakkında açıklama: Bu modül 24 yüksek- hassas A / D dönüştürücü. Bu çip, yüksek ön
Arduino Uno ile Çift Eksenli Joystick Nasıl Arayüz Yapılır: 5 Adım

Arduino Uno ile Çift Eksenli Joystick Arayüz Nasıl Yapılır: Burada arduino uno ile bir düello eksenli joystick'i arayüzleyeceğiz. Bu joystick, x ekseni ve y ekseni için iki analog pime ve anahtar için bir dijital pime sahiptir
Arduino İle GPS Modülü (NEO-6m) Arayüz Nasıl Yapılır: 7 Adım (Resimlerle)

Arduino ile GPS Modülü (NEO-6m) Arayüz Nasıl Yapılır: Bu projede, Arduino UNO ile bir GPS modülünün nasıl arayüzleneceğini gösterdim. Boylam ve enlem verileri LCD'de görüntülenir ve konum uygulamada görüntülenebilir. Malzeme listesi Arduino Uno ==> 8 $ Ublox NEO-6 milyon GPS modülü ==> 15 $ 16x
Arduino ile 4x3” TFT Ekran Arayüz Nasıl Yapılır: 4 Adım

4x3” TFT Ekranı Arduino İle Arayüzleme: FocusLCDs.com denemem için bana ücretsiz bir 4x3” TFT LCD (P/N: E43RG34827LW2M300-R) gönderdi. Bu, anahtarlama aygıtı olarak amorf silikon TFT kullanan renkli aktif matris TFT (İnce Film Transistör) LCD'dir (sıvı kristal ekran). Bu model c
Arduino ile 16x4 LCD Arayüz Nasıl Yapılır: 6 Adım

Arduino ile 16x4 LCD Arayüz Nasıl Yapılır: Giriş Geçenlerde FocusLCDs.com'daki arkadaşlarımdan bazı ücretsiz LCD örnekleri aldım. Bunlardan biri 16x4 LCD; P/N: C164AXBSYLY6WT. LCD ekranlarında yaygın olarak bulunan HD44780 yerine bir ST7066U denetleyicisi (buradaki veri sayfasına bakın) kullanır. Ben değilim