Pamiętacie zapewne temat o sterowniku HD44780
Dziś tutaj przedstawiam zadanie dla początkujących , ale z lekka nutką zaawansowania
![Szczęśliwy :)](https://forum.atnel.pl/images/smilies/icon_e_smile.gif)
mianowicie poznamy ciekawy sposób sterowania wyświetlaczem LCD tak zwany 3 Wire,
czyli wymagający tylko 3ch przewodów.
Tym razem zjawisko opiszę dosyć dokładnie bowiem nie sposób nie docenić tego rozwiązania
zwłaszcza przy projektach używających małego procesora gdzie i tak brakuje pinów do podłączenia LCD:)
Zdecydowałem się ująć ten post w rany zadania -o czym nieco później ...
WSTĘP ---->> konieczne powtórki
LCD alfanumeryczny oparty o sterownik HD44780 wymaga co najmniej 6 linii I/O do wyświetlania danych, dlatego też
nie nadaje się do użycia z "mało pinowymi" mikrokontrolerami takimi jak nasze małe TINKI czy też " kocimi" PIC z rodziny 12F. Dlatego chcę wam tu pokazać jak sterować wyświetlaczem przy pomocy tylko 3ch pinów, oczywiście nie zmuszam nikogo to używania małych procków , ale ten sposób też się przyda gdy się okaże ze wasza mega8 czy 32
ma za mało pinów na wszystkie switche , czujniki , linie pomiarowe ADC i jeszcze na LCD
![Szczęśliwy :)](https://forum.atnel.pl/images/smilies/icon_e_smile.gif)
, a nie za bardzo chcemy rezygnować z czegokolwiek prawda:) Dane znaków i polecenia w tym zadaniu będziemy wysyłać do LCD przy pomocy
znanego i łatwo dostępnego układu jakim jest REJESTR PRZESUWNY 74HC595.
TROCHĘ O NASZYM UKŁADZIKU:
Układ 74HC595 jest szybkim 8 bitowym rejestrem z szeregowym wejściem i szeregowym lub równoległym wyjściem i z 3 stanowym rejestrem pamięci. Rejestr przesuwny i rejestr pamięci maja osobne zegary odpowiednio:
SH_CP i ST_CP. Układ działa naprawdę prosto:
W skrócie 8 bitów danych pojawi się na wyjściach Q0-Q7 gdy OE jest w stanie niskim.
W naszym zadaniu zegary SH_CP i ST_CP będą powiązane przez co użyjemy jednego sygnału zegarowego.
Tak więc jeśli chcemy seryjnie przesyłać 8 bitów danych w postaci równoległej
![Szczęśliwy :)](https://forum.atnel.pl/images/smilies/icon_e_smile.gif)
(ale przynudzam)na wyjścia
Q0-Q7 wymagany jest dodatkowy impuls zegara po przekazaniu 8mego bitu danych szeregowych ,dlatego że
nasze zegary są połączone , a rejestr pamięci o 1impuls zegarowy za rejestrem przesuwnym:)
Trochę zamotałem , ale mam nadzieję ze zrozumieliście jak działa scalaczek
![Szczęśliwy :)](https://forum.atnel.pl/images/smilies/icon_e_smile.gif)
a tu pinouty maleństwa:
![Obrazek](http://forum.atnel.pl/_obrazki/o/thumb/58_e6b990b715f7bae10db91404db39a9af.JPG)
LCD 2x16 HD44780 --------------------
A nic tu nie napiszę tylko przypomnę pinouty
![Pokazuje język :P](https://forum.atnel.pl/images/smilies/icon_razz.gif)
![Obrazek](http://forum.atnel.pl/_obrazki/o/thumb/58_c7acaaadb709b855095ae4215578f12f.JPG)
![Obrazek](http://forum.atnel.pl/_obrazki/o/thumb/58_c12123096d855688edec7607ca503be6.JPG)
SCHEMAT DO ZADANIA
![Szczęśliwy :)](https://forum.atnel.pl/images/smilies/icon_e_smile.gif)
----------------->
Cześć sprzętowa tego zadania jest bardzo prosta i nie powinno być problemów:)
oczywiście mam ochotę wam życie utrudnić dlatego schemat będzie z "kocim" PIC12F
![Pokazuje język :P](https://forum.atnel.pl/images/smilies/icon_razz.gif)
![Obrazek](http://forum.atnel.pl/_obrazki/o/thumb/58_12ccc334dbd945f6b1213960b331fc99.JPG)
ZADANIE ------------------------------------->
Wyzwaniem jest napisanie programu, który będzie odpowiedzialny za wykonywanie właściwych
operacji na LCD przy pomocy właśnie 74HC595
Dane będziemy wysyłać szeregowo na wyjścia równoległe HC5954.
Jak widać nasz układ wymaga 3ch sygnałów z procesora 2 piny dla zegara i danych dla HC595 oraz sygnał E dla LCD
![Szczęśliwy :)](https://forum.atnel.pl/images/smilies/icon_e_smile.gif)
Jako że używamy trybu 4 bitowego LCD , a pin R/W jest na stałe na masie zatem już widać ze odczyt z LCD nie będzie realizowany, a dane będziemy wysyłać 2 etapowo - najpierw 4 starsze bity , a potem 4 młodsze.
W przypadku dosłownym naszego schematu program wygląda następująco:
![Obrazek](http://forum.atnel.pl/_obrazki/o/thumb/58_53864d6f21d0aa1110646a806af525cf.JPG)
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
I teraz właściwe zadanie napisać podobny program na dowolny AVR
![Szczęśliwy :)](https://forum.atnel.pl/images/smilies/icon_e_smile.gif)
a tak to wygląda na naszym 12F
![Szczęśliwy :)](https://forum.atnel.pl/images/smilies/icon_e_smile.gif)
![Obrazek](http://forum.atnel.pl/_obrazki/o/thumb/58_a6da475874329634996e8b6e14d8f531.JPG)
plecki z 74HC595
![Obrazek](http://forum.atnel.pl/_obrazki/o/thumb/58_5ce662be1f64fc8f1a1b1f7bcb04fd72.JPG)
i nasz mały PIC12F
![Szczęśliwy :)](https://forum.atnel.pl/images/smilies/icon_e_smile.gif)
z LCD
![Obrazek](http://forum.atnel.pl/_obrazki/o/thumb/58_02036a59a0e828b25ac02dede0bf8143.JPG)
TO JAK PANOWIE DACIE RADĘ ???