Wykorzystanie modułu wyświetlacza matrycowego 8×8 z układem MAX7219 i Arduino UNO R3

Zadaniem układu jest wyświetlanie przewijanego napisu „KAMAMI”. Układ oparty jest na  module Arduino UNO R3 oraz module wyświetlacza matrycowego. Program sterujący pracą  mikrokontrolera Atmega328P (zawartego w module Arduino) został napisany w języku Bascom-AVR.

Układ wykorzystuje moduł wyświetlacza matrycowego 8×8 ze sterownikiem MAX7219, do którego  dane przesyłane są szeregowo. Wysłane przez mikrokontroler dane (linia DIN) trafiają do rejestrów i  są przesuwane wraz z narastającym zboczem na linii zegarowej CLK. Stan niski na linii CS pozwala na  załadowanie danych do rejestrów; zmiana stanu tej linii na wysoki powoduje zatrzaśnięcie danych w  rejestrach (ostatnie dwa bajty).

Program sterujący mikrokontrolera napisany został w języku Bascom (do jego skompilowania można użyć wersji demonstracyjnej kompilatora). Program zaczyna się deklaracją  typu procesora oraz częstotliwości taktowania. Deklarowane są także 3 wyjściowe linie  mikrokontrolera (linie komunikacji z układem MAX7219) oraz przypisane są im nazwy. Na listingu 1 przedstawiono fragment kodu programu zawierający deklaracje.

Listing 1. Fragment programu zawierający deklaracje

Komunikacja z mikrokontrolerem nie jest objęta żadnym standardem – dane wystawiane są na linie  asynchronicznie, w takt linii CLK. Do obsługi wysyłania zmiennych stworzono procedurę Wyslij , której  wywołanie powoduje wysłanie do układu MAX7219 wartości zmiennych Dane i Adres.

Dwa bajty danych wysyłane są przy użyciu instrukcji For…Next, wykonywanej dla każdego bajtu po 8 razy. Procedurę Wyslij przedstawiono na listingu 2.

Listing 2. Procedura Wyslij

Do poprawnej pracy układu MAX7219 wymagane jest ustawienie jego parametrów początkowych  poprzez wpisanie wartości do odpowiednich rejestrów. Po włączeniu układu do zasilania,  mikrokontroler wywołuje procedurę Ustawienia , w której ustawianie są parametry pracy – tryb  pracy, jasność matrycy, typ dekodowania, limit  dświeżania oraz tryb testowy. Ustawiane są wartości   adresu i danych, po czym wykonany zostaje skok do procedury wysyłania. Procedura ustawiania parametrów układu jest wykonywana tylko raz (listing 3).

Listing 3. Podprogram ustawiania parametrów układu

Po włączeniu zasilania, lub w wyniku zakłóceń na liniach mikrokontrolera mogą pojawić się błędy na  wyświetlaczu (np. wynikające ze źle zaadresowanych rejestrów). Całość ekranu czyszczona jest w  podprogramie Czysc (listing 4), którego wywołanie spowoduje wpisanie zer do rejestrów odpowiedzialnych za  wyświetlanie wierszy.

Listing 4. Podprogram Czysc

Procedura czyszczenia wyświetlacza wykonywana jest także po zakończeniu wyświetlania napisu. Napis wyświetlany zapisany jest w tablicy danych, w postaciach serii wartości heksadecymalnych. Każda litera tekstu „KAMAMI” zajmuje po 8 bajtów.

Pętla główna programu odczytuje dane z tablicy, czytając je od końca – w pierwszej chwili po  uruchomieniu zasilania dane odczytywane są od komórki 55, zaś po wykonaniu pełnego przesunięcia  napisu, punkt początkowy odczytu z tablicy przesuwany jest na komórkę 63 (działanie programu tuż  po uruchomieniu układu powoduje wyświetlenie pierwszej litery przy lewej krawędzi wyświetlacza,  zaś po wykonaniu przesunięcia całego napisu pojawia się on od prawej strony).

Przesuwanie napisu polega na przesunięciu punktu odczytywania tablicy, każdorazowo zmniejszając  go o jeden (po ośmiokrotnym wykonaniu pętli for…next zmniejszającej o 1 wykonywane jest dodanie  liczby 7 do wartości zmiennej wskazującej na początek odczytu tabeli (zmienna Wartosc ).

Rozwiązanie to pozwala na łatwe przesuwanie napisu, jednak z tego względu napis musi być w  całości umieszczony w tablicy, mimo powtarzania się liter, zaś po obu stronach napisu znajduje się po  8 bajtów pustych (wartości 0).

Pętlę główną oraz tablicę znaków przedstawiono na listingu 5.

Listing 5. Pętla główna oraz tablica znaków

Na listingu 6 pokazano kompletny program.

Listing 6. Kompletny program w jęzku Bascom AVR

Do pobrania

O autorze