Adrian Antoniewicz Marcin Dudek Mateusz Manowiecki 17.01.2007 PRUS projekt dokumentacja końcowa Temat: Układ zdalnego sterowania (za pomocą interfejsu RS-232) wyświetlaczem LCD. Spis treści: 1. 2. 3. 4. 5. 6. założenia projektu płytka testowa NB-1 RS-232 oraz LCD HyperTerminal windowsowy Efekt działania projektu kod programu (?) Założenia projektu Projekt zakłada realizację za pomocą układu FPGA wyświetlania tekstu (znaków), pochodzącego z komputera klasy PC, na wyświetlaczu LCD. Komunikacja będzie się odbywać za pomocą łącza RS-232 (portu COM). W tym celu niezbędne jest programowe wysterowanie kontrolera wyżej wymienionego wyświetlacza (HD 44780) oraz zapewnienie bezbłędnej komunikacji przez port szeregowy. Projekt został przez nas napisany w środowisku XilinxISE 8.li i fizycznie przetestowany na płytce uruchomieniowej Altium NanoBoard NB-1 opisanej w punkcie drugim. Wytyczne co do obsługi wyświetlacza LCD i łącza szeregowego zostały przedstawione w punkcie trzecim, a w czwartym krótki opis wykorzystania windowsowego programu HyperTerminal dla potrzeb naszego projektu i spis instrukcji klawiszowych realizujących poszczególne komendy sterujące. Dodatkowo wykonaliśmy (i wytrawiliśmy) projekt prostego konwertera napięć z magistrali RS-232, który w ostateczności nie został wykorzystany w projekcie ze względu na odpowiednie układy znajdujące się na opisanej wcześniej płytce, ale był niezbędny we wstępnych założeniach do projektu.
Płytka testowa NB-1 Rys.1 Altium NanoBoard NB-1 Na rys.1 przedstawiamy płytkę testową dla której został napisany nasz projekt i z której pomocą został on przetestowany. Podstawą to takiego działania był fakt, że była ona dla nas dostępna w mijającym semestrze, co ułatwiło realizację i testy projektu. Interesujące z naszego punktu widzenia parametry NanoBoard NB-1 są następujące: możliwość pracy w czasie rzeczywistym wraz z opcją debugowania stworzonego projektu. układy dostępne na płytce: LCD, matryca LED, matryca przycisków, klawiatura, buzzer, przetworniki AC/CA, 256K x 8 RAM, 8M serial flash RAM, serial flash RAM on-board do konfiguracji FPGA, programowalny zegar. porty: mysz i klawiatura PS2, RS-232, CAN, VGA, I2C, header-y IO ogólnego przeznaczenia. możliwość uaktualnienia firmware'u kontrolera NanoBoard'a. Możliwość podłączenia w trybie master / slave innych płytek tego typu. Na potrzeby naszego projektu wykorzystaliśmy taktowanie układu zegarem 50 MHz.
RS-232 oraz LCD Płytka NanoBoard NB-1 jest wyposażona w konwerter napięć pomiędzy portem szeregowym, a układami TTL (np. FPGA), jednakże we wstępnych założeniach planowaliśmy wykonać projekt na innej płytce, znajdującej się u Prowadzącego przedmiot, a co za tym idzie potrzebny był układ konwertera. W tym celu wytrawiliśmy prostą płytkę drukowaną, działającą w oparciu o układ MAX232, która miałaby za zadanie dopasować odpowiednie napięcia. Efekt naszej pracy został pokazany na rys.2. W naszym przypadku układ ten się nie przydał, jednak gdyby chcieć wykorzystać nasz projekt z użyciem płytki testowej, która nie ma własnych konwerterów napięć, wtedy układ znalazłby on swoje zastosowanie. Rys.2 projekt konwertera napięć z wykorzystaniem MAX-232 Port szeregowy parametrami: RS-232 na potrzeby naszego projektu działa z następującymi 115200 bitow/sek 8 bitow danych brak bitu parzystosci 1 bit stopu Wyświetlacz LCD standardowo jest wyposażony w kontroler HD44780A firmy Hitachi, który odpowiada za łatwą komunikację ekranu ciekłokrystalicznego z układem wysyłającym doń znaki i instrukcje sterujące. Na rys.3 przedstawiamy zalecany przez producenta sposób inicjalizacji wyświetlacza. W przypadku naszego projektu realizacja tej procedury została uproszczona. Mianowicie w związku z faktem, że łącze szeregowe jest dosyć powolne (w stosunku do kontrolera LCD) nie sprawdzamy, czy wyświetlacz jest gotowy gdyż możemy się spodziewać, że zawsze spełnione będą założenia co do opóźnień koniecznych przy jego inicjacji.
Rys.3 Zalecana przez firmę Hitachi procedura inicjalizacji kontrolera HD44780A.
HyperTerminal windowsowy Do przetestowania działania napisanego przez nas programu posłużył program znajdujący się domyślnie w systemie Windows w menu [START] > Programy > Akcesoria > Komunikacja -> HyperTerminal. Jest to oczywiście jedna z wielu możliwości, lecz jest to najłatwiejszy sposób, gdyż w każdej wersji tego systemu ten program się znajduje. Klawiszologia dostępna w programie jest następująca: a s d f g q w e r c [RETURN] znaki ASCII - przesunięcie kursora w lewo przesunięcie kursora w prawo włączenie / wyłączenie wyświetlacza włączenie / wyłączenie migania kursora włączenie / wyłączenie kursora przesunięcie kursora na początek wyświetlacza przesunięcie kursora do następnej linii zmiana kierunku wpisywania znaków (zmniejszanie / zwiększanie adresu) - odpowiednik przycisku Backspace w komputerze - czyszczenie wyświetlacza - przesunięcie kursora na początek następnej linii - odpowiadające im znaki wyświetlane na ekranie LCD Zrealizowane zostały wszystkie funkcje dostępne w standardowych wyświetlaczach LCD za wyjątkiem przesuwania wyświetlanego okna, która to funkcja nie wydała nam się niezbędna do wykonania.
Efekt działania projektu Poniżej na rys.4 przedstawiamy przykład działania napisanego programu. Na wyświetlaczu pokazany został napis Projekt PRUS [RETURN] Konwerter RS>LCD. Układ działał poprawnie pozostawiony w stanie uruchomionym przez parę godzin. Nie wykazywał żadnych oznak, by po dłuższym czasie użytkowania pojawiały się związane z tym błędy. Rys.4 Efekt działania na płytce testowej napisanego przez nas programu Kod programu...?