Wyświetlacz LCD 2x16 z kontrolerem KS0066U oraz STM8L-Discovery.

Dzisiaj chciałbym przedstawić w jaki sposób za pomocą zestawu uruchomieniowego STM8L-Discovery można obsługiwać bardzo popularny wśród amatorów wyświetlacz LCD 2x16 z kontrolerem KS0066U. Wyświetlacz który posiadam został wyprodukowany przez firmę Windcom Tech oraz jest oznaczony symbolem WC1602A-STBLWNC06. W swoim wnętrzu posiada on kontrolery KS0066U lub S6A0069 ( niestety dokumentacja nie jest jasna w tym temacie), które są w swojej obsłudzę bardzo zbliżone do starego dobrego HD44780 od Hitachi. Obsługi wyświetlacza dokonam z pomocą wyżej wspomnianego zestawu ewaluacyjnego od ST Microelectronics o nazwie STM8L-Discovery. Zestaw ten kosztuje około 50zł i jak najbardziej jest swojej ceny. Na pokładzie STM8L-Discovery znajduje się  mikrokontroler STM8L152C6, który jest nowoczesną alternatywną wobec tak popularnych układów AVR od Atmela. Nasz nowy mikrokontroler ma następującą konfiguracje  32KB pamięci FLASH, 2KB pamięci RAM, 1KB pamięci EEPROM oraz mnóstwo przydatnych peryferiów. Po zakupieniu zestawu czas pomyśleć nad odpowiednim kompilatorem. W tym przypadku mamy do wyboru dwie drogi, możemy wybrać bezpłatny open-sourcowy kompilator SDCC lub roczną ewaluacyjną wersję kompilatora z ograniczeniem wielkości kodu do 32kB od Cosmic Software. Ja wybrałem drugą drogę, ponieważ jako użytkownik gcc ciekawiło mnie jak wyglądają komercyjne kompilatory. Po otrzymaniu kompilatora zacząłem natychmiast uruchamiać standardowy program do migania diodą, a następnie podłączyłem swój wyświetlacz:

 

schematic1
Rys.1 Schemat podłączenia wyświetlacza 2x16

 

Schemat został wykonany przy użyciu programu Eagle z pomocą symboli z biblioteki Adafruit. Ważnym jest na powyższym schemacie podłączenia pinu VDD oraz anody diody podświetlającej do zasilania +5V, które łatwo można znaleźć na zestawie ewaluacyjnym STM8L-Discovery. Należy również zwrócić uwagę na brak rezystora ograniczającego prąd w lini anody podłączonej do zasilania +5V, jest to spowodowane tym, że rezystor ten jest już umieszczony w komponencie wyświetlacza. Zdarzają się jednak wyświetlacze pozbawione wspomnianego rezystora, bądź kompletnie pozbawione diody podświetlającej. Drugą bardzo ważną sprawą jest podłączenie pinu V0 sterującego kontrastem do masy czyli potencjału 0V. W moim przypadku dzięki powyższemu podłączeniu usiągam maksymalne ustawienie kontrastu. Należy również pamiętać, że niektóre wyświetlacze  potrzebują ujemnego napięcia na pinie kontrastu V0, jednak nie jest to nasz przypadek. Wyświetlacz jest kontrolowany w trybie 4-bitowym, dlatego podłączone są tylko linie DB4-DB7. Należy pamiętać by w tym trybie nie podłączać linie DB0-DB3 do masy, gdyż przed inicjalizacją mogą one zostać skonfigurowane przez kontroler jako wyjścia i spowodować tym samym zwarcie do masy a w konsekwencji usmażenie wyświetlacza. Magistrale danych oraz kontroli są bezpośrednio podłączone do pinów na STM8L-Discovery. Obie magistrale działają pomimo tego że stan wysoki na liniach wynosi do +3,3V. Po poprawnym podłączeniu wyświetlacza na ekranie powinny pojawić się kwadraty w górnej lini:

 

squaresRys.2 Kwadraty widoczne przy poprawym podłączeniu

 

Następnym krokiem jest napisanie kodu inicjalizującego oraz kilku funkcji by wysyłać teksty na ekran wyświetlacza. Kod źródłowy biblioteki można znaleźć na moim koncie na githubie:

Display driver

Sterownik wyświetlacza jest częścią większego projektu który będzie przedstawiany w przyszłych wpisach, można go jednak z łatwością wydzielić z projektu i dopasować do swojego zastosowania. Na poniższym rysunku podłączony zestaw STM8L-Discovery z wyświetlaczem WC1602A-STBLWNC06, gdzie na ekranie wyświetlam tekst "Hello world":

 

connectionPic.2 "Hello world" on the display

2 komentarze do “Wyświetlacz LCD 2x16 z kontrolerem KS0066U oraz STM8L-Discovery.

    • Na tamten czas, Cosmic nie był darmowy. Natomiast później, nawet jak nie było ograniczenie na wielkość kodu to mi licencja wygasła po roku. Nie wiem jak jest teraz, może się zmieniło.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.