![Jak połączyć matrycę LED z napędem MAX7219 8x8 z mikrokontrolerem ATtiny85: 7 kroków Jak połączyć matrycę LED z napędem MAX7219 8x8 z mikrokontrolerem ATtiny85: 7 kroków](https://i.howwhatproduce.com/images/002/image-3944-19-j.webp)
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:03
![Jak połączyć matrycę LED z napędem MAX7219 8x8 z mikrokontrolerem ATtiny85? Jak połączyć matrycę LED z napędem MAX7219 8x8 z mikrokontrolerem ATtiny85?](https://i.howwhatproduce.com/images/002/image-3944-20-j.webp)
Kontroler MAX7219 jest produkowany przez Maxim Integrated i jest kompaktowym, szeregowym sterownikiem wejścia/wyjścia ze wspólną katodą, który może łączyć mikrokontrolery z 64 pojedynczymi diodami LED, 7-segmentowymi numerycznymi wyświetlaczami LED do 8 cyfr, wyświetlaczami słupkowymi itp. -chip to dekoder BCD code-B, obwody skanowania multipleksowego, sterowniki segmentów i cyfr oraz statyczna pamięć RAM 8×8, która przechowuje każdą cyfrę.
Moduły MAX7219 są bardzo wygodne w użyciu z mikrokontrolerami, takimi jak ATtiny85, czy w naszym przypadku Tinusaur Board.
Krok 1: Sprzęt
![Sprzęt Sprzęt](https://i.howwhatproduce.com/images/002/image-3944-21-j.webp)
![Sprzęt Sprzęt](https://i.howwhatproduce.com/images/002/image-3944-22-j.webp)
Moduły MAX7219 zwykle wyglądają tak. Mają szynę wejściową z jednej strony i szynę wyjściową z drugiej. Pozwala to na łączenie łańcuchowe 2 lub więcej modułów, tj. jeden po drugim, w celu tworzenia bardziej skomplikowanych konfiguracji.
Stosowane przez nas moduły można łączyć w łańcuch za pomocą 5 małych zworek. Zobacz zdjęcie poniżej.
Krok 2: Pinout i sygnały
Moduł MAX7219 posiada 5 pinów:
- VCC – moc (+)
- GND – masa (-)
- DIN – wprowadzanie danych
- CS – wybór żetonów
- CLK – Zegar
Oznacza to, że do sterowania modułem potrzebne są 3 piny po stronie mikrokontrolera ATtiny85. Będą to:
- PB0 – podłączony do CLK
- PB1 – podłączony do CS
- PB2 – podłączony do DIN
Wystarczy podłączyć do modułu MAX7219 i zaprogramować go.
Krok 3: Protokół
![Protokół Protokół](https://i.howwhatproduce.com/images/002/image-3944-23-j.webp)
Komunikacja z MAX7219 jest stosunkowo prosta – korzysta z protokołu synchronicznego, co oznacza, że dla każdego wysyłanego przez nas bitu danych jest takt zegara oznaczający obecność tego bitu danych.
Innymi słowy, wysyłamy 2 równoległe sekwencje do bitów – jedną dla zegara, a drugą dla danych. To właśnie robi oprogramowanie.
Krok 4: Oprogramowanie
![Oprogramowanie Oprogramowanie](https://i.howwhatproduce.com/images/002/image-3944-24-j.webp)
Sposób działania tego modułu MAX7219 jest następujący:
- Zapisujemy bajty do jego wewnętrznego rejestru.
- MAX7219 interpretuje dane.
- MAX7219 steruje diodami w matrycy.
Oznacza to również, że nie musimy cały czas krążyć po tablicy diod LED, aby je zapalić – o to dba kontroler MAX7219. Może również zarządzać intensywnością diod LED.
Aby więc w wygodny sposób korzystać z modułów MAX7219 potrzebujemy biblioteki funkcji do tego celu.
Po pierwsze, potrzebujemy kilku podstawowych funkcji, aby pisać do rejestrów MAX7219.
- Zapis bajtu do MAX7219.
- Zapis słowa (2 bajty) do MAX7219.
Funkcja zapisująca jeden bajt do kontrolera wygląda tak:
void max7219_byte(uint8_t dane) { for(uint8_t i = 8; i >= 1; i--) { PORTB &= ~(1 << MAX7219_CLK); // Ustaw CLK na LOW if (data & 0x80) // Maskuj MSB danych PORTB |= (1 << MAX7219_DIN); // Ustaw DIN na WYSOKI w przeciwnym razie PORTB &= ~(1 << MAX7219_DIN); // Ustaw DIN na LOW PORTB |= (1 << MAX7219_CLK); // Ustaw CLK na WYSOKIE dane <<= 1; // Przesuń w lewo } }
Teraz, gdy możemy wysyłać bajty do MAX7219, możemy zacząć wysyłać polecenia. Odbywa się to poprzez wysłanie 2 bajtów – 1 na adres rejestru wewnętrznego i 2 na dane, które chcemy wysłać.
W sterowniku MAX7219 jest kilkanaście rejestrów.
Wysłanie polecenia lub słowa to w zasadzie wysłanie 2 kolejnych bajtów. Implementacja funkcji jest bardzo prosta.
void max7219_word (adres uint8_t, dane uint8_t) { PORTB &= ~(1 << MAX7219_CS); // Ustaw CS na LOW max7219_byte(adres); // Wysyłanie adresu max7219_byte(data); // Wysyłanie danych PORTB |= (1 << MAX7219_CS); // Ustaw CS na HIGH PORTB &= ~(1 << MAX7219_CLK); // Ustaw CLK na LOW }
Należy tutaj zwrócić uwagę na linię, w której przywracamy sygnał CS z powrotem do HIGH – oznacza to koniec sekwencji – w tym przypadku koniec polecenia. Podobną technikę stosujemy przy sterowaniu więcej niż jedną matrycą połączoną w łańcuch. Następnym krokiem, zanim zaczniemy włączać i wyłączać diody, jest inicjalizacja kontrolera MAX7219. Odbywa się to poprzez zapisanie określonych wartości do określonych rejestrów. Dla wygody podczas kodowania możemy umieścić sekwencję inicjującą w tablicy.
uint8_t initseq = { 0x09, 0x00, // Rejestr trybu dekodowania, 00 = Brak dekodowania 0x0a, 0x01, // Rejestr intensywności, 0x00.. 0x0f 0x0b, 0x07, // Rejestr limitów skanowania, 0x07, aby wyświetlić wszystkie linie 0x0c, 0x01, // Rejestr wyłączania, 0x01 = normalne działanie 0x0f, 0x00, // Rejestr wyświetlania-testu, 0x00 = normalne działanie };
Wystarczy wysłać 5 powyższych poleceń w sekwencji jako pary adres/dane. Następny krok – zaświecenie rzędu diod LED.
To bardzo proste – po prostu piszemy jedno polecenie, w którym 1. bajt to adres (od 0 do 7) a 2. bajt to 8 bitów reprezentujących 8 diod w rzędzie.
void max7219_row(uint8_t adres, uint8_t dane) { if (adres >= 1 && adres <= 8) max7219_word(adres, dane); }
Należy pamiętać, że będzie to działać tylko dla 1 macierzy. Jeśli połączymy więcej macierzy w łańcuch, wszystkie pokażą te same dane. Powodem tego jest to, że po wysłaniu polecenia przywracamy sygnał CS z powrotem do stanu HIGH, co powoduje, że wszystkie kontrolery MAX7219 w łańcuchu zatrzaskują się i pokazują ostatnie polecenie.
Zalecana:
Dwucyfrowy wyświetlacz wykorzystujący pojedynczą matrycę LED 8x8: 3 kroki
![Dwucyfrowy wyświetlacz wykorzystujący pojedynczą matrycę LED 8x8: 3 kroki Dwucyfrowy wyświetlacz wykorzystujący pojedynczą matrycę LED 8x8: 3 kroki](https://i.howwhatproduce.com/images/008/image-21373-j.webp)
Dwucyfrowy wyświetlacz wykorzystujący pojedynczą matrycę LED 8x8: Tutaj chciałbym zbudować wskaźnik temperatury i wilgotności dla mojego pokoju. Użyłem pojedynczej matrycy LED 8x8 do wyświetlania liczb dwucyfrowych i myślę, że ta część projektu stała się bardziej użyteczna. Zapakowałem ostateczną konstrukcję za pomocą kartonu, ból
Arduino: Wskaźnik Potentio wykorzystuje matrycę Led MAX7219: 4 kroki
![Arduino: Wskaźnik Potentio wykorzystuje matrycę Led MAX7219: 4 kroki Arduino: Wskaźnik Potentio wykorzystuje matrycę Led MAX7219: 4 kroki](https://i.howwhatproduce.com/images/009/image-26899-j.webp)
Arduino: Wskaźnik potencjometru wykorzystuje matrycę Led MAX7219: W poprzednim samouczku wykonałem wskazanie potencjometru za pomocą pierścienia RGB neopixel led. można to zobaczyć w tym artykule „Wskaźnik Potentio wykorzystuje Neopiksel RGB” A dzisiaj pokażę wskaźnik potencjatora wykorzystujący diodę LED MAX7219 met
Jak zbudować DUŻĄ matrycę LED 8x8 (MAX7219 LED 10mm): 9 kroków (ze zdjęciami)
![Jak zbudować DUŻĄ matrycę LED 8x8 (MAX7219 LED 10mm): 9 kroków (ze zdjęciami) Jak zbudować DUŻĄ matrycę LED 8x8 (MAX7219 LED 10mm): 9 kroków (ze zdjęciami)](https://i.howwhatproduce.com/images/011/image-30624-j.webp)
Jak zbudować DUŻĄ matrycę LED 8x8 (MAX7219 LED 10mm): Czy pracowałeś z gotową matrycą LED 8x8 jako wyświetlaczami? Występują w różnych rozmiarach i są dość interesujące w pracy. Duży, łatwo dostępny rozmiar to około 60mm x 60mm. Jeśli jednak szukasz dużo większej gotowej matrycy LED
Jak połączyć joystick dwuosiowy z Arduino Uno: 5 kroków
![Jak połączyć joystick dwuosiowy z Arduino Uno: 5 kroków Jak połączyć joystick dwuosiowy z Arduino Uno: 5 kroków](https://i.howwhatproduce.com/images/011/image-30959-j.webp)
Jak połączyć dwuosiowy joystick z Arduino Uno: Tutaj zamierzamy połączyć jeden dwuosiowy joystick z arduino uno. Ten joystick ma dwa piny analogowe dla osi x i osi y oraz jeden pin cyfrowy do przełącznika;
Jak połączyć moduł GPS (NEO-6m) z Arduino: 7 kroków (ze zdjęciami)
![Jak połączyć moduł GPS (NEO-6m) z Arduino: 7 kroków (ze zdjęciami) Jak połączyć moduł GPS (NEO-6m) z Arduino: 7 kroków (ze zdjęciami)](https://i.howwhatproduce.com/images/003/image-7953-13-j.webp)
Jak połączyć moduł GPS (NEO-6m) z Arduino: W tym projekcie pokazałem, jak połączyć moduł GPS z Arduino UNO. Dane dotyczące długości i szerokości geograficznej są wyświetlane na wyświetlaczu LCD, a lokalizację można wyświetlić w aplikacji. Lista materiałów Arduino Uno ==> 8 USD Moduł GPS Ublox NEO-6m ==> 15 dolarów 16x