logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak podłączyć wyświetlacz HD44780 do I2C z PCF8574? Adresowanie i sygnały

o0mbie 07 Mar 2014 16:32 1650 4
REKLAMA
  • #1 13379556
    o0mbie
    Poziom 2  
    Posty: 2
    Witam,

    Jest to mój pierwszy post na tym forum. Zaznaczam że jestem programistą i wszelkiego rodzaju elektronika to dla mnie nowość.

    Mam system czasu rzeczywistego który zajmuje się przetwarzaniem danych poprzez tcp. Ma on magistralę i2c. Chcę sobie podłączyć wyświetlacz HD44780 żeby pokazać 2 parametry. Z tego co zrozumiałem czytając artykuły temu poświęcone to wystarczy, że do magistrali podłączę sobie układ PCF8574 a następnie na jego wyjścia odpowiednio podłączę wyświetlacz i będzie to działać.

    W żeby podać sygnał muszę jeszcze znać adres odbiorcy, który w przypadku gdy A0:A3 w układnie PCF8574 podłączę do masy będzie wynosił x20. Potem pozostaje podanie jakichś wartości, które zostaną odpowiednio zinterpretowane rzez ten wyświetlacz??

    Z góry dziękuję za rozjaśnienie sytuacji,
    Pozdrawiam
  • REKLAMA
  • #2 13381027
    Jado_one
    Poziom 22  
    Posty: 650
    Pomógł: 43
    Ocena: 12
    Tak mniej więcej obsługa wyświetlacza przez PCF8574 wygląda. Od lat używam takiej konfiguracji i sprawdza się znakomicie :-)
    Trzeba pamiętać, że wyświetlacz musi być obsługiwany w trybie 4-bitowym, bo do dyspozycji mamy tylko 8 pinów z PCF'a (no chyba, że ktoś użyje innego ekspandera linii I/O - 16 bitowego).
    Musimy również zaemulować sygnały sterujące wyświetlaczem (impuls wpisujący) poprzez kilkukrotne wysłanie danych na port - na początku bez ustawionego pinu wpisującego, potem z ustawionym i na koniec z znowu z wyzerowanym, i jeszcze raz z wyzerowanym, dla podtrzymania tego stanu przez wystarczająco długi czas (timingi HD44780).
    Generalnie więc tych transferów będzie dużo, ale - "'idzie to zrobić" :-)
    W sumie cała transmisja, ze względu na dość wolną magistralę I2C trwa dość długo - szybciej przesyłam cały ekran wyświetlacza graficznego 132x64 :-)
    Warto z tego powodu zrobić obsługę takiej transmisji jako nieblokującą.
  • REKLAMA
  • #3 13381224
    o0mbie
    Poziom 2  
    Posty: 2
    Z tego co czytałem to trzeba zainicjować a następnie zresetować wyświetlacz wysyłając odpowiednie bity na port.

    Ta transmisja może być potraktowana jako osobny wątek dla systmu RT, więc nie wiem co może ona blokować. Znam architekturę mikroprocesorów ale nigdy ich nie programowałem w C więc nie wiem jak to do końca tam wygląda. Tam chyba można było tworzyć przerwania ale wszystko odbywał się w obrębie jednego procesu( coś takiego pamiętam z przedmiotu na studiach)

    Co do transferu to podobno i2c potrafi obsłużyć od 100kb/s do 400kb/s więc wg mnie to jest aż za dużo dla odświeżania 10 razy na sekundę przy powiedzmy 50 znakach. Chyba że źle myślę??

    Spróbuje to podłączyć i zobaczę czy będzie działać.. ale najpierw trzeba wytrzeźwieć :)
  • REKLAMA
  • #4 13381496
    Jado_one
    Poziom 22  
    Posty: 650
    Pomógł: 43
    Ocena: 12
    Jeśli masz RTOS'a, to oczywiście nie musisz się martwić blokowaniem innych zadań.
    Co do szybkości, to oczywiście z punktu widzenia człowieka jest wystarczająca aż w nadmiarze, ale z punktu widzenia procesora, to dość długi odcinek czasu - gdyby procedura czekała w pętli aż się transfery wykonają, to mielibyśmy dość spory odcinek czasu "wyjęty z życia procesora" :-)
    Tak czy inaczej to tylko taka uwaga na marginesie....

    Cytat:
    Z tego co czytałem to trzeba zainicjować a następnie zresetować wyświetlacz wysyłając odpowiednie bity na port.

    Najpierw trzeba wyświetlacz przestawić w tryb 4-bitowy, potem do niego można wysyłać dane dotyczące znaków jakie mają być na nim wyświetlane i gdzie.
    Szczegóły to już w manualu od HD44780, jak również na wielu stronach WWW.
    W razie problemów pytaj - ten temat był wałkowany, choć może w połączeniu z PCF'em trochę mniej.
    Ciekawostką (choć może niezgodną ze sztuką) jest możliwość podłączenia kilku wyświetlaczy+PCF do wspólnej magistrali I2C, przy tym samym adresie I2C ustawionym na PCF'ach - wszystkie będą działać równolegle wyświetlając te same dane jednocześnie. Oczywiście przy różnych adresach możemy wyświetlać inne dane na każdym wyświetlaczu (ale wymaga to odp. obsługi programowej również).
    Jeśli I2C wykorzystujemy również np. do obsługi EEPROM'u, to nie tracimy żadnych pinów na obsługę wyświetlacza(-czy). W tym jest piękno tej metody ;-)
REKLAMA