Spisu treści:

3-przewodowy wyświetlacz LCD HD44780 za mniej niż 1 dolara: 5 kroków
3-przewodowy wyświetlacz LCD HD44780 za mniej niż 1 dolara: 5 kroków

Wideo: 3-przewodowy wyświetlacz LCD HD44780 za mniej niż 1 dolara: 5 kroków

Wideo: 3-przewodowy wyświetlacz LCD HD44780 za mniej niż 1 dolara: 5 kroków
Wideo: Wyświetlacze LCD ze sterownikiem [RS Elektronika] #210 2024, Listopad
Anonim
3-przewodowy wyświetlacz LCD HD44780 za mniej niż 1 dolara
3-przewodowy wyświetlacz LCD HD44780 za mniej niż 1 dolara

W tej instrukcji dowiemy się, jak podłączyć wyświetlacz LCD oparty na chipsecie HD44780 do magistrali SPI i napędzać go tylko 3 przewodami za mniej niż 1 USD. Chociaż w tym samouczku skoncentruję się na wyświetlaczu alfanumerycznym HD44780, ta sama zasada będzie działać prawie tak samo dla każdego innego wyświetlacza LCD, który korzysta z 8-bitowej równoległej magistrali danych i można go bardzo łatwo dostosować do wyświetlaczy z 16-bitowymi magistralami danych. Wyświetlacze alfanumeryczne oparte na HD44780 (i kompatybilnych) są zwykle dostępne w konfiguracjach 16x2 (2 linie składające się z 16 znaków) i 20x4, ale można je znaleźć w wielu innych formach. Najbardziej „skomplikowanym” wyświetlaczem byłby wyświetlacz 40x4, ten rodzaj wyświetlacza jest wyjątkowy, ponieważ ma 2 kontrolery HD44780, jeden dla dwóch górnych rzędów i jeden dla dwóch dolnych rzędów. Niektóre graficzne wyświetlacze LCD mają również dwa kontrolery. Wyświetlacze HD44780 są świetne, są bardzo tanie, czytelne i dość łatwe w obsłudze. Ale mają też pewne wady, te wyświetlacze zajmują dużo pinów I/O po podłączeniu do Arduino. W prostych projektach nie jest to problemem, ale gdy projekty stają się duże, z dużą ilością IO lub gdy potrzebne są pewne piny do takich rzeczy jak odczyt analogowy lub PWM, fakt, że te wyświetlacze LCD wymagają co najmniej 6 pinów, może stać się problem. Ale możemy rozwiązać ten problem w tani i ciekawy sposób.

Krok 1: Zdobycie komponentów

Do większości komponentów, których użyłem w tym projekcie, użyłem TaydaElectronics. Możesz również dostać te części na ebay, ale dla ułatwienia obsługi podam link do Tayda. Shopping List2 - pakiet 74HC595 DIP161 - Generic męski nagłówek - 2 piny. Nie jest to wymagane, wykorzystałem to jako sposób na trwałe wyłączenie podświetlenia.3 - Kondensator ceramiczny - pojemność 0,1µF; napięcie 50V1 - Kondensator elektrolityczny - pojemność 10µF; napięcie 35V1 - Kondensator ceramiczny - pojemność 220pF; napięcie 50V1 - Tranzystor NPN - część nr PN2222A*1 - 1k Ω Rezystor1 - Potencjometr przycinający - maksymalna rezystancja 5kΩ1 - 470 Ω Rezystor* W przypadku tranzystora NPN podświetlenie pozostanie wyłączone do momentu włączenia przez oprogramowanie. Jeśli chcesz mieć domyślnie włączone podświetlenie, użyj tranzystora typu PNP. Trzeba będzie jednak dokonać zmian w kodzie udostępnionej biblioteki. Suma częściowa dla tej listy wynosi 0,744 USD. Nagłówek pinów również nie jest wymagany, więc możesz zaoszczędzić 15 centów, a suma częściowa wyniesie 0,6 USD.

Krok 2: Poznaj swój sprzęt #1

Poznaj swój sprzęt #1
Poznaj swój sprzęt #1

Oto standardowy pin z wyświetlacza LCD HD44780, jest również bardzo podobny do niektórych graficznych wyświetlaczy LCD. HD44780 może pracować w dwóch trybach: 1. 4-bitowy, w którym każdy bajt wysyłany do LCD składa się z 2 4-bitowych części. 2. Tryb 8-bitowy, na którym się skupimy. Wyświetlacz LCD ma w sumie 16 pinów, 3 piny sterujące i 8 pinów danych: RS - Kontroluje, czy chcemy wysłać polecenie lub dane do wyświetlacza LCD. Gdzie 'high' oznacza dane (znak), a 'low' oznacza bajt polecenia. R/W - Kontroler HD44780 pozwala na odczyt z pamięci RAM. Gdy ten pin jest „wysoki”, możemy odczytać dane z jego pinów danych. Gdy jest 'niski' możemy zapisywać dane na LCD. Chociaż opcja odczytu z wyświetlacza LCD może być przydatna w niektórych przypadkach, nie będziemy jej omawiać w tym samouczku i po prostu uziemimy ten pin, aby upewnić się, że jest zawsze w trybie zapisu. E - E to pin „Włącz”, ten pin jest przełączany na „wysoki”, a następnie „niski”, aby zapisać dane do pamięci RAM i ostatecznie wyświetlić je na ekranie. DB0-7 - To są piny danych. W trybie 4-bitowym używamy tylko 4 wysokich bitów DB4-DB7, a w trybie 8-bitowym wszystkie są wykorzystywane., możemy bez problemu zasilić go z pinu +5v Arduino. Vo - To jest pin, który pozwala ustawić poziom kontrastu wyświetlacza, wymaga potencjometru, zwykle używany jest potencjometr 5K Ohm. LED+ - To jest źródło zasilania podświetlenia. Niektóre wyświetlacze LCD nie są wyposażone w podświetlenie i mają tylko 14 pinów. W większości przypadków ten pin wymaga również połączenia +5V. LED- - To jest uziemienie podświetlenia.** Ważne jest, aby sprawdzić arkusz danych wyświetlacza lub sprawdzić jego płytkę drukowaną w celu sprawdzenia rezystora podświetlenia, większość wyświetlaczy LCD ma je wbudowane -w takim przypadku wszystko, co musisz zrobić, to podłączyć zasilanie do diody LED+ i uziemić do diody LED-. Ale w przypadku, gdy twój LCD nie ma wbudowanego rezystora podświetlenia, ważne jest, aby go dodać, w przeciwnym razie podświetlenie zużyje dużo energii i ostatecznie się przepali. W większości przypadków sposób podłączenia tego wyświetlacza LCD do Arduino polega na użyciu go w trybie 4-bitowym i uziemieniu pinu R/W. W ten sposób wykorzystujemy piny RS, E i DB4-DB7. Praca w trybie 4-bitowym ma jeszcze jedną małą wadę, ponieważ zapisywanie danych na ekranie zajmuje dwa razy dłużej niż w przypadku konfiguracji 8-bitowej. Wyświetlacz LCD ma czas „ustalenia” wynoszący 37 mikrosekund, co oznacza, że musisz odczekać 37 mikrosekund przed wysłaniem następnego polecenia lub bajtu danych do wyświetlacza LCD. Ponieważ w trybie 4-bitowym musimy wysyłać dane dwukrotnie dla każdego bajtu, łączny czas potrzebny na zapisanie jednego bajtu wzrasta do 74 mikrosekund. To nadal jest wystarczająco szybkie, ale chciałem, aby mój projekt dawał jak najlepsze rezultaty. Rozwiązaniem naszego problemu z liczbą użytych pinów jest konwerter szeregowy na równoległy…

Krok 3: Poznaj swój sprzęt #2

Poznaj swój sprzęt #2
Poznaj swój sprzęt #2

To, co zrobimy, to zbudowanie adaptera, który pobiera komunikację szeregową wychodzącą z Arduino i konwertuje dane na wyjście równoległe, które można przesłać do naszego LCD. Wchodzi układ 74HC595. Jest to bardzo tani i prosty w obsłudze rejestr przesuwny. W istocie to, co robi, to pobieranie sygnałów zegara i danych, których używa do wypełnienia wewnętrznego 8-bitowego bufora 8 ostatnimi bitami, które zostały „zsynchronizowane”. Gdy pin „Latch” (ST_CP) zostanie ustawiony na „high”, przenosi te bity do swoich 8 wyjść. 595 ma bardzo fajną funkcję, ma pin wyjścia danych szeregowych (Q7'), ten pin może być używany do łączenia łańcuchowego 2 lub więcej 595 razem, tworząc adaptery szeregowo-równoległe, które mają szerokość 16 lub więcej bitów. Do tego projektu będziemy potrzebować 2 takich chipów. Schemat można również zmodyfikować, aby działał z pojedynczym 595 w trybie 4-bitowym, ale nie zostanie to omówione w tym samouczku.

Krok 4: Okablowanie wszystkiego

Okablowanie to wszystko w górę
Okablowanie to wszystko w górę

Teraz, gdy wiemy, jak działa nasz sprzęt, możemy to wszystko połączyć. Na schemacie widzimy 2 595 chipów połączonych szeregowo, tworząc 16-bitowe wyjście równoległe. Dolny chip jest w rzeczywistości głównym, a górny jest do niego przymocowany łańcuchem. Widzimy tutaj, że dolny 595 steruje pinami danych LCD w konfiguracji 8-bitowej, górny układ kontroluje sygnał RS i podświetlenie, włączając lub wyłączając tranzystor. Zapamiętaj *uwagę na temat podświetlenia wyświetlacza LCD na stronie Poznaj swój sprzęt nr 1, w przypadku gdy twój wyświetlacz LCD nie ma rezystora podświetlenia, nie zapomnij dodać go do obwodu. W moim przypadku wyświetlacze LCD, które już mam, mają wbudowany rezystor, więc pominąłem ten krok. Kontrast jest podawany przez potencjometr 5K Ohm, jeden pin przechodzi do GND, drugi do VCC, a wycieraczka do pinu Vo na LCD. Kondensatory zastosowane w liniach VCC LCD i 595 są kondensatorami odsprzęgającymi, są po to, aby pozbyć się zakłóceń. Nie są one konieczne, jeśli pracujesz na płytce prototypowej, ale powinny być używane w przypadku zbudowania własnej wersji tego obwodu do użytku poza „warunkami laboratoryjnymi”. R5 i C9 w tej bardzo specyficznej kolejności tworzą opóźnienie RC, które zapewnia, że dane na wyjściach 595 mają czas na ustabilizowanie się, zanim pin Enable na wyświetlaczu LCD zostanie ustawiony na „wysoki” i odczyta dane. Q7' dolnego 595 przechodzi do wejścia danych szeregowych 595 na górze, co tworzy łańcuch 595, a tym samym 16-bitowy interfejs. Okablowanie do Arduino jest łatwe. Używamy konfiguracji 3-przewodowej, wykorzystując piny Arduino SPI. Pozwala to na bardzo szybkie przesyłanie danych, wysłanie 2 bajtów do LCD zwykle zajmuje około 8 mikrosekund. Jest to bardzo szybkie i w rzeczywistości jest znacznie szybsze niż czas potrzebny na przetwarzanie danych przez wyświetlacz LCD, dlatego między każdym zapisem potrzebne jest opóźnienie 30 mikrosekund. Bardzo dużą zaletą korzystania z SPI jest to, że piny D11 i D13 są współdzielone z innymi urządzeniami SPI. Oznacza to, że jeśli masz już inny komponent, który używa SPI, taki jak akcelerometr, to rozwiązanie użyje tylko jednego dodatkowego pinu dla sygnału enable. Na następnej stronie zobaczymy wynik. Zbudowałem plecak na desce perforowanej i jak na razie sprawdza się on bardzo dobrze.

Krok 5: Wynik + Biblioteka

Wynik + Biblioteka
Wynik + Biblioteka
Wynik + Biblioteka
Wynik + Biblioteka
Wynik + Biblioteka
Wynik + Biblioteka
Wynik + Biblioteka
Wynik + Biblioteka

"Obraz jest wart tysiąca słów", zgadzam się z tym stwierdzeniem, więc oto kilka zdjęć końcowego efektu tego projektu. To są zdjęcia ukończonego produktu, widok Fritzing PCB to układ płyty perforowanej, którego użyłem do zbudowania mojego plecaka. Może ci się przydać, jeśli chcesz zbudować własną. Tak bardzo mi się spodobało, że zaprojektowałem płytkę za pomocą DipTrace i zamówiłem partię 10 płytek. Potrzebuję 2 lub 3 sztuki dla siebie, ale resztę udostępnię za symboliczną cenę, gdy je otrzymam. Więc jeśli ktoś jest zainteresowany to proszę o informację. * Edycja: PCB są tutaj i działają. Oto pełna galeria zdjęć tego projektu, w tym rzeczywiste płytki PCB. https://imgur.com/a/mUkpw#0 Oczywiście nie zapomniałem najważniejszej rzeczy, biblioteki, z którą można korzystać z tego układu. Jest kompatybilny z biblioteką LiquidCrystal dołączoną do Arduino IDE, dzięki czemu możesz łatwo zastąpić deklaracje u góry szkicu i nie musisz zmieniać niczego innego w swoim szkicu. Istnieje również przykładowy szkic, który pokazuje, jak działa każda funkcja w bibliotece, więc sprawdź to.

Zalecana: