Autor przygotował już kilka artykułów dotyczących sposobów sterowania wyświetlaczem LCD 16x2 ze sterownikiem HD44780, jednakże do tej pory nie miał okazji zająć się sposobem łączenia z programowalnymi układami logicznymi (CPLD czy FPGA) i implementowania obsługi wyświetlacza w języku Verilog czy VHDL. W niniejszym artykule zostanie więc pokazane, jak rozpocząć „współpracę” wyświetlacza LCD i programowalnego układu logicznego – zarówno ze strony sprzętowej jak i programowej.
Demonstrację działania przykładowej implementacji obsługi wyświetlacza w układzie CPLD można zobaczyć na poniższym nagraniu:
W urządzeniu pracuje układ CPLD taktowany sygnałem zegarowym 25,175 MHz, a opis połączeń logicznych przygotowano w języku VHDL.
Jako programowalny układ logiczny wybrano układ CPLD EPM71288LC od Altery.
Schemat całości można zobaczyć poniżej. Do zaprogramowania układu CPLD potrzebny będzie programator, np. ByteBlasterMV. Jako generator sygnału zegarowego wybrano oscylator 25,175 MHz, ale każdy, o częstotliwości większej od 10 MHz, nada się do tego urządzenia.
Oczywiście układ CPLD nie steruje wyświetlaczem bezpośrednio, lecz poprzez wysyłanie odpowiednich komend do kontrolera HD44780. Pełna lista komend widnieje poniżej (jest ich jedynie 11):
Wyświetlacz może być sterowany dwojako (co wynika z powyższej tabeli), stosując szynę danych o długości 4 bądź 8 bitów. Dzięki komendzie „Function set” można ustalić długość szyny danych, ilość pracujących linii wyświetlacza i zestaw czcionek. Większość pozostałych komend jest wykorzystywana sporadycznie.
Ponieważ komendy muszą być wysyłane kolejno, jedna po drugiej, wykorzystana będzie maszyna stanów – unikalny termin wprowadzony na potrzeby układów CPLD/FPGA.
Obraz powyżej pokazuje, jakie będą kolejne kroki „programu” napisanego w VHDL. Każdy z 32 stanów odpowiada albo komendzie sterującej wyświetlaczem albo przesłaniu do wyświetlacza danych dotyczących znaku, który ma się na nim pojawić.
Do testów urządzenie zostało zmontowane na płytce uniwersalnej, z wykorzystaniem połączeń owijanych.
Kod w VHDL składa się z dwu części – pierwszej, odpowiedzialnej za wysyłanie komend sterujących do wyświetlacza i drugiej – odpowiedzialnej za wysyłanie danych dotyczących znaków do wyświetlenia.
Kod wysyłający dane sterujące pokazany jest poniżej. Dane są przekazywane w momencie podania opadającego zbocza na wyprowadzenie ENABLE wyświetlacza. Układ komunikuje się z wyświetlaczem LCD za pomocą 8-bitowej szyny danych. Jak widać, wysyłanie danych przy użyciu równoległej szyny danych do wyświetlacza jest bardzo proste.
Kod: VHDL
Kod przesyłający dane dotyczące wyświetlanych znaków również nie jest złożony:
Kod: VHDL
Szybkość wyświetlania znaków została specjalnie obniżona, aby móc obserwować progres działania maszyny stanów.
Więcej szczegółów dotyczących projektu, a także spakowane kody w języku VHDL można znaleźć na stronie źródłowej.
Fajne? Ranking DIY