Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 15 sty 2025, o 22:48


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 59 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 21 lut 2012, o 17:28 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8597
Pomógł: 337

Witam

WSTĘP:

LCD znakowy oparty na sterowniku HD44780 jest chyba jednym z najlepiej znanych
tego typu tworów w świecie elektroników, ale widać pewien niedosyt wiedzy i brak
podstaw działania tego małego ustrojstwa :) dlatego zaczynam wątek o nim właśnie.
Niemniej żeby jak zwykle namieszać wam w głowach z sam początek zajmę się
samym sterownikiem czyli właśnie tematowym HD44780

Oczywiście wiecie że twórcą tego popularnego ustrojstwa jest firma HITACHI, a wielu wschodnich
naśladowców tworzy układy podobne (czytaj. zgodne"")

ZACZYNAMY:

Jak wiecie do dyspozycji w naszym sterowniku mamy kilka linii sterujących, których
zjawisko postaram się wyjaśnić -- celowo pomijam linie zasilania podświetlenia i kontrastu:)
nimi zajmiemy się trochę później - oczywiście mam na myśli kontrast i podświetlenie :)

LCD_RW - Read/Write --- ta linia decyduje czy będziemy zapisywać czy tez czytać z LCD
- opiszę dokładnie niżej
LCD_EN - ENABLE --- włącza LCD w dużym uproszczeniu
- dosłownie kiedy stan tego pinu zmienia się na wysoki i z powrotem na niski układ
rozpoczyna czytanie sygnałów RS i RW a następnie D0-D7
LCD_RS - Registry Select
- opiszę dokładnie niżej
LCD_DATA0-7 - 8bitów danych

Nasz kontroler przyjmuje zarówno dane jak i komendy, które są rozróżniane na podstawie stanu
linii LCD_RS gdzie stan (0) oznacza komendy , a stan (1) -DANE. Pracuje on też 2 kierunkowo
możemy zarówno wysyłać jak też i czytać dane , a kierunek transmisji ustala stan linii
LCD_RW (1- odczyt, 0-zapis).

HD44780 posiada 2 rodzaje pamięci:
CGROM - pamięć generatora znaków
DDRAM - pamieć danych.



Pamięć danych DD RAM ma pojemność 80 bajtów
(jeden sterownik HD44780 obsługuje maksymalnie 80 znaków).
Co nam daje Konfiguracje LCD np 2x40 czy 4x20 znaków

ROZKAZY HD44780:

W poniższej tabelce z nocie układu HITACHI widać rozkazy HD44780:

Obrazek

a zainteresowanych odsyłam do noty sterownika

http://fab.cba.mit.edu/classes/MIT/863.06/11.13/44780.pdf

Display clear - (RS = 0, RW = 0, dane = 00000001) - instrukcja ta powoduje wyczyszczenie wyświetlacza poprzez wypełnienie go spacjami, ustawienie trybu zapisu danych od pozycji w lewym górnym rogu wyświetlacza oraz wyłączenie trybu przesuwania okna

Display/cursor home - (RS - 0, RW = 0, dane = 0000001x) - instrukcja powoduje ustawienie kursora na pozycji pierwszego znaku w pierwszej linii

Entry mode set - (RS = 0; RW = 0, dane = 000001IS) - określenie trybu pracy kursora/okna wyświetlacza:
dla S = 1 po zapisaniu znaku do wyświetlacza kursor nie zmienia położenia, natomiast przesuwa się cała zawartość wyświetlacza
dla S = 0 po zapisaniu znaku do wyświetlacza kursor zmienia położenie, a przesuwanie okna jest wyłączone
dla I = 1 kursor lub okno wyświetlacza przesuwa się w prawo (inkrementacja adresu znaku)
dla I = 0 kursor lub okno wyświetlacza przesuwa się w lewo (dekrementacja adresu znaku)

Display ON/OFF - (RS = 0, RW = 0, dane = 00001DCB)
dla D = 1 - włączenie wyświetlacza
dla D = 0 - wyłączenie wyświetlacza
dla C = 1 - włączenie kursora
dla C = 0 - wyłączenie kursora
dla B = 1 - włączenie migania kursora
dla B = 0 - wyłączenie migania kursora

Display cursor shift - (RS = 0, RW = 0, dane = 0001SRxx)
dla S = 1 - przesuwana jest zawartość okna
dla S = 0 - przesuwany jest kursor
dla R = 1 - kierunek przesuwu w prawo
dla R = 0 - kierunek przesuwu w lewo

Function set (RS= 0, RW = 0, dane = 001DNFxx)
dla D = 1 - interfejs 8-bitowy
dla D = 0 - interfejs 4-bitowy
dla N = 1 - wyświetlacz dwuwierszowy
dla N = 0 - wyświetlacz jednowierszowy
dla F = 1 - matryca znaków 5*10 punktów
dla F = 0 - matryca znaków 5*7punktów

CG RAM set - (RS= 0, RW = 0, dane = 01AAALLL) - ustawia adres pamięci generatora znaków. AAA - 3-bitowy adres znaku, LLL - 3-bitowy numer linii składającej się na graficzne odwzorowanie znaku.

DD RAM set - (RS = 0, RW = 0, dane = 1AAAAAAA) - ustawia adres pamięci wyświetlacza, pod który nastąpi zapis (bądź odczyt) danych operacją Data write lub Data read.

Busy flag read - (RS = 0, RW = 1, dane = BAAAAAAA) - odczyt flagi zajętości i adresu pamięci wyświetlacza. B - flaga zajętości wyświetlacza, AAAAAAA - 7-bitowy adres pamięci.

Data read - (RS = 1, RW= 1, dane = odczytywany bajt danych) - odczyt danych z pamięci wyświetlacza, bądź pamięci CG RAM (jeśli poprzednio wydano komendę CG RAM set)

Data write - (RS = 1, RW = 0, dane = zapisywany bajt danych) - zapis danych do pamięci wyświetlacza, bądź pamięci CG RAM (jeśli poprzednio wydano komendę CG RAM set)


Na tą chwile wystarczy ale mam nadzieję że was co nieco zaintrygowałem ... oczywiście będziemy
wątek kontynuować to w sumie to samo co w nocie układu i tam znajdziecie te same instrukcje :)

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lut 2012, o 18:13 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8597
Pomógł: 337

Jak zatem tym sterować ??

Jak już pisałem wyświetlacze LCD oparte o sterownik HD44780 f-my HITACHI lub inne podobne twory są najpopularniejsze i najchętniej używane przez elektroników ze względu na dużą skalowalność modułu, które są dostępne w wielu kombinacjach i rozmiarach dzięki czemu zawsze znajdziemy taki jaki nam jest aktualnie potrzebny
a do dyspozycji mamy:

1x8, 2x8,1x16, 2x16, 4x16, 1x20, 2x20, 4x20 znaków , a widywałem już 2x40 znaków :)

Co nie zmienia nam w żaden sposób standardu transmisji i funkcji dodatkowych.

HD44780 może się komunikować z mikrokontrolerem w dwóch trybach magistrali:

4bit - z użyciem 3ch linii sterujących i 4 linii danych

Obrazek

8bit - z użyciem 3ch linii sterujących i 8 linii danych

Obrazek

Możliwości wyświetlacza nie zależą oczywiście w żadnym stopniu od szerokości magistrali danych,
zmienia się jedynie sposób jej obsługi .

Zalecane jest używanie trybu 4-bitowego, pozwalającego na zaoszczędzenie czterech linii, które mogą przydać się do czegoś innego i ten tryb pracy jest najpopularniejszy wśród elektroników.

Używanie trybu 8-bitowego jest korzystne tylko przypadku wykorzystania do obsługi mikrokontrolera magistrali systemowej i odpowiednio skonfigurowanego dekodera adresów. W innych wypadkach używają go tylko maniacy lubiący utrudniać sobie życie :) (nie będę tu pokazywał palcem)

W przypadku obsługi LCD bezpośrednio z portów uC (niezależnie od szerokości szyny danych) wyposażonego w wyjścia przeciwsobne, należy pamiętać o konfiguracji portu jako wejście przed generacją sygnałów sterujących podczas odczytu informacji ze sterownika.

Dołączony zewnętrznie potencjometr jest odpowiedzialny za regulację kontrastu wyświetlacza. Niekiedy na wyprowadzenie kontrastu należy podać napięcie ujemne względem masy (wymagają tego niektóre rozwiązania wyświetlaczy). Co może nieco skomplikować układ, ale na szczęście jest to marginalne zjawisko
wśród producentów i trafiają się jedynie nieliczne egzemplarze produkcji CHRL - zazwyczaj w wyjątkowo atrakcyjnych cenach :)

Oczywiście teraz już zapewne rozumiecie dlaczego nie używanych pinów LCD nie powinno się zwierać do GND
a po prostu pozostawić w spokoju. Linia RW najczęściej będzie spoczywać na masie choć warto sterować nią z portu procesora, choć zazwyczaj nie jest to konieczne i pozwala zaoszczędzić kolejny pin :) Mimo to polecam
dodanie jednej zworki umożliwiającej zwarcie linii RW do masy , ale też i sterowanie jej z procesora.

Teraz zajmiemy się już tylko technikami zaawansowanymi :)
czyli:

- sterowanie kontrastem z uC (PWM)
- sterowanie podświetleniem

oraz

- sterowanie LCD poprzez rejestr przesuwny
- magistrale I2C
- RS232

mam nadzieję, że was zainteresuję :)

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lut 2012, o 21:01 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8597
Pomógł: 337

Zapraszam do dyskusji , jak i do uzupełniania informacji :) bo zapowiedziane "techniki zaawansowane" pojawią się w dziale DIY z wiadomych powodów , a tu możemy się rozwodzić na temat samego kontrolera HD44780 , a jak będzie takowe zapotrzebowanie to skrobnę co nieco o innych sterownikach np Samsunga KS108 , czy Toshiby T6963C
a także "kocich" PCD 8544 w lcd z noki 5100/3310 czy LS020xxxx z Siemensa C65 a to już naprawdę fajny mały LCD
TFT i Kolor :)

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lut 2012, o 21:04 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27346
Lokalizacja: Szczecin
Pomógł: 1041

Mnie tylko wypada powiedzieć, że zgrabne podsumowanie - więc ew niech zainteresowani czytają ;) pytają ;) czytają ... bo warto

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2013, o 22:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

A ja mam takie pytanko ... bo w nocie katalogowej nie ma nic na ten temat -> https://www.sparkfun.com/datasheets/LCD/HD44780.pdf
Skąd się wzięły te adresy DDRAM dla wyświetlacza 2 wierszowego ??
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2013, o 22:43 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27346
Lokalizacja: Szczecin
Pomógł: 1041

kidcowboy --> jak masz dwu-wierszowy to one i tak nigdy nie zostaną użyte ale jak będziesz miał cztero-wierszowy to tak ;)

to są jedne z najczęściej występujących adresów w wielu różnych modelach LCD, ale i tak trafiają się takie, które mają nieco inne, wtedy trzeba patrzeć do noty PDF ... własnego LCD

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2013, o 22:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Dzięki za odpowiedź Mirku :) ale czy teraz jeśli będę chciał 4 wierszowy to nie wykona mi się pierwsza dyrektywa kompilacji warunkowej ? Bo przecież jeśli zadeklaruję w kodzie
:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


To otrzymam to:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pewnie błądzę ale chciałbym to zrozumieć



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2013, o 23:29 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27346
Lokalizacja: Szczecin
Pomógł: 1041

No otrzymasz to - ale nie rozumiem kompletnie w czym kłopot :(

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 wrz 2013, o 23:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Jeśli korzystam z wyświetlacza dwuwierszowego (świadomie) to czy w nagłówku nie powinno być tak ??
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Antystatyczny ma tak w swoim kodzie - broń Boże nie chcę tu narzekać a już na pewno nie jestem malkontentem ale powyższy zapis jest dla mnie - początkującego bardziej zrozumiały aniżeli ten w którym dodatkowo definiuje się jeszcze adresy 1 znaku dla 3 i 4 wiersza - dla wyświetlacza 2 wierszowego :)
Chyba że znowu czegoś nie zrozumiałem ... :(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 wrz 2013, o 00:18 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27346
Lokalizacja: Szczecin
Pomógł: 1041

spokojnie dopiero teraz zaskoczyłem twój problem

oczywiście że możesz to sobie zmienić na dwie linie ;)

#else
#define LCD_LINE1 0x00 // adres 1 znaku 1 wiersza
#define LCD_LINE2 0x40 // adres 1 znaku 2 wiersza
#endif

no ale powiedz mi co przeszkadzają 4 linie ? ;)

#else
#define LCD_LINE1 0x00 // adres 1 znaku 1 wiersza
#define LCD_LINE2 0x40 // adres 1 znaku 2 wiersza
#define LCD_LINE3 0x10 // adres 1 znaku 3 wiersza <----- To mnie bardzo interesuje
#define LCD_LINE4 0x50 // adres 1 znaku 4 wiersza <----- I to też
#endif

toż to są tylko definicje ;) preprocesora, które i tak nigdy nie wezmą udziału w kodzie wynikowym gdy użyjesz fizycznie wyświetlacza 2x16 ... więc w czym kłopot ? Zresztą to miał być tylko przykład jak do tego można podchodzić a nie gotowa biblioteka... Gotową biblioteką to stała się ona niechcący ;) ....

i teraz pomyśl niezależnie czy użyesz LCD 2x16 czy 4x16 to i tak te same definicje się przydadzą tyle że przy 2x16 dwie ostatnie nie wejdą nigdzie do kompilacji i kodu wynikowego ;)

gdybym miał robić dla każdego LCD oddzielne adresy to musiałbym tych #IF'ów namnożyć jak mrówek a i tak bym wszystkich jakie są na świecie nie opisał - więc po co ?

podałem te najbardziej popularne adresy w DDRAM wyświetlaczy LCD ... - to wszystko

...................

być może masz kłopot z tym, że wydaje ci się, że te dwie linijki w przypadku LCD 2x16 będą coś mieszały co ? ;) ale jak prześledzisz kod z *.c to zobaczysz - że po prostu NIGDY nie zostaną wzięte pod uwagę

teraz jaśniej ? ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 wrz 2013, o 07:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 kwi 2012
Posty: 195
Pomógł: 0

Tak dziękuję - w końcu sam do tego doszedłem za pomocą kartki i ołówka :):):)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 wrz 2013, o 13:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2013
Posty: 56
Pomógł: 0

a powie mi ktoś jak działa to ustawianie kursora

pod koniec funkcji mamy takie coś

lcd_write_cmd( (0x80 + y + x) ); i np po podstawieniu, sumowaniu i zamianie na binarny mam takie coś 10101000
to jest pierwsza pozycja drugiego wiersza, ale jak mam to z tabelki odczytać że kursor przesuwa się w duł ??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 wrz 2013, o 16:42 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Spójrz na stronę 12 specyfikacji sterownika HD44780. Druga linia to po prostu pozycja znaku począwszy do 40. Sam opis instrukcji Set DDRAM address znajdziesz na stronie 24.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 wrz 2013, o 16:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2013
Posty: 56
Pomógł: 0

jest taki kod, wysyłam komendę, lista rozkazów jest w zaprezentowanej tabelce.
więc dlaczego teraz niema tego w tabelce??
Nie rozumiem porostu skąd to się wzięło skoro niema tego w tabelce.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 wrz 2013, o 18:25 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Te funkcje nie odnoszą się do tabelki, bo są uniwersalne. W zależności od tego co im podstawisz jako argument zostanie wysłane do wyświetlacza. Jest to tak skonstruowane, że złożone zadanie dzielone jest na mniejsze i tak aż dochodzimy do funkcji static inline void wyslij_pol(uint8_t data). Funkcja ta ustawia cztery wyjścia na porcie B w zależności od bitów zmiennej data. Przykładowo jak zmienna data wynosi 0B0001011 to patrząc po kolei, czyli od końca, bo bity są w kolejności 7-0 ustawi bit PB3, bo data.0 = 1, ustawi PB4, bo data.1 = 1, wyzeruje PB5, bo data.2 = 0 i ustawi PB6. Biorąc pod uwagę działanie sterownika to linie wyświetlacza DB7, DB6, DB5 i DB4 muszą być podłączone do tych wyjść procesora, czyli do odpowiednio PB6, PB5, PB4 i PB3.

Kolejna funkcja void _lcd_write_byte(unsigned char _data) zapisuje cały bajt, czyli liczbę przekazaną przez argument _data. Najpierw piny procesora dołączone do DB7-DB4 są konfigurowane jako wyjścia. Potem ustawiany jest pin podłączony do wejścia E wyświetlacza. Ta linia obsługuje zapis do wyświetlacza. Jak jest na niej stan wysoki lub niski to linie DB7-DB3 mogą się dowolnie zmieniać. Dopiero zmiana stanu na tej linii z wysokiego na niski spowoduje wpisanie tego co jest na wejściach danych do wyświetlacza i to jest realizowane w tych 3 linijkach. W kolejnych jest robione dokładnie to samo, a różnicą jest argument przesyłany do pierwszej omówionej funkcji. W 1 zapisie podstawiona jest wartość zmiennej przesunięta w prawo o 4, czyli jak zmienna _data miałaby wartość 0B10101100 to po przesunięciu ma 0B00001010 (bity 7-4 są uzupełniane zerami). W drugim zapisie przesyłana jest niezmieniona wartość. Funkcja, która była omówiona jako pierwsza nie interesuje się bitami 7-4.

Ostatnia przedstawiona funkcja void lcd_write_cmd(uint8_t cmd) wysyła komendę do wyświetlacza i zgodnie z tabelką instrukcji wyświetlacz traktuje jako rozkaz takie dane, które są przesyłane w czasie, gdy wejście RS jest wyzerowane i dlatego ta funkcja zeruje wyjście PB0.

Wyświetlacz może być sterowany z dowolnie małą prędkością, więc możesz sobie opóźnienia wydłużyć dodając za każdą linią kodu _delay_ms(1000); i dodatkowo równolegle do wyświetlacza podłączyć LEDy i zobaczysz co jest przesyłane.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 wrz 2013, o 16:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2013
Posty: 56
Pomógł: 0

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


dlaczego zawsze w pierwszej lini mam jakieś smieci ??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 wrz 2013, o 18:42 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 23:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 wrz 2013
Posty: 47
Pomógł: 1

Witam wszystkich serdecznie ;)
Nie do końca jestem pewny czy mam ten HD44780, ale zasada ta sama to zapytam tutaj.
Moje cacko nota:http://store.comet.bg/download-file.php?id=1593 Na odwrocie ma napisane WH1604A-TMI-CT# jest to wyświetlacz 16x4 -czyli chyba notę dobrą znalazłem? (moje wątpliwości wynikają z tab 11. Function Set, bo w DB2 mogę wybrać 5x11 lub 5x8 -a gdzie 16x4?)

Wyregulowałem kontrast i pojawiły się dwa wiersze kwadracików i dalej już nic nie potrafię z tym zrobić. Rozumiem, że pierwszą czynnością jest podanie informacji czy 4, czy 8bitowa ma być komunikacja... Z noty z tab 11. Set Function wynika, że daje + na D5;D4;D3;D2 a reszta wisi w powietrzu i podłączam na chwilę E (czyli na pin 6 daję na chwilę +) aby wysłać komendę. Oczywiście nic się nie dzieje, miksowanie kablami na fuksa też nie bardzo przyniosło efekty => totalnie zero reakcji.

Dodam, że na R/W mam 0, testowałem też wiszenie w powietrzu, bo nie wiem czy jest jakaś różnica, ale efekt ten sam.

_________________
Złoty Szpadel od Pana Mirka! Dziękuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lis 2013, o 23:27 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8597
Pomógł: 337

to znaczy że masz połaczenia ok
jak załadujesz program np z książki do LCD to bedziesz miał napisy w 2ch 1 wierszach

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2013, o 22:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 wrz 2013
Posty: 47
Pomógł: 1

Podłączyłem:
DB7, DB6, DB5 i DB4 odpowiednio do PD3, PD2, PD1 i PD0
RS do PB0
E do PB2

Skorzystałem z http://www.youtube.com/watch?v=tOLnAFhUVjw Czy ktoś jest w stanie napisać jaka może być przyczyna, że brak jakichkolwiek reakcji na wyświetlaczu?

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Złoty Szpadel od Pana Mirka! Dziękuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lis 2013, o 23:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2013
Posty: 65
Lokalizacja: Łódź
Pomógł: 4

A co dokladnie chcialbys zobaczyc, bo z kodu nic nie wynika.
PS. po co dwa razy
#include <avr/io.h> ?

_________________
Karkołomne zadanie, ogarnąć C.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lis 2013, o 08:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 wrz 2013
Posty: 47
Pomógł: 1

#include <avr/io.h> tak mi się jakoś źle wkleiło ;)
Chciałbym aby kwadraciki zniknęły (jakakolwiek reakcja by mnie cieszyła). A kod to odwzorowanie tego co gość na filmie z yt dusił palcem po przyciskach.

_________________
Złoty Szpadel od Pana Mirka! Dziękuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lis 2013, o 08:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Zaladuj libsy mirka. Ustaw piny. Zainicjuj wyswietlacz. Kwadraciki powinny zniknac. Nastepnie dopisz komende wyswietlajaca napis zaladuj program powinien byc napis na lcd. U ciebie w kodzie nie widze biblioteki do obslugi lcd.

Wysłane z telefonu

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lis 2013, o 22:15 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8597
Pomógł: 337

norniiica napisał(a):
Czy ktoś jest w stanie napisać jaka może być przyczyna, że brak jakichkolwiek reakcji na wyświetlaczu?


Oczywiście ... brak biblioteki do obsługi LCD w kodzie , brak czegokolwiek w kodzie co by mogło być wyświetlone ...

w ten sposób i tym kodem nic nie wyświetlisz ...

Jak masz niebieską książkę to co masz za kłopot użyć przykładu z płytki do lcd ??

tao tak na szybko ..... dla przykładu:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


popatrz uważnie dlaczego w twoim kodzie nie będzie nic na LCD ??
ano bo to kod do migania diodami a nie do wyświetlania na LCD

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2013, o 20:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 wrz 2013
Posty: 47
Pomógł: 1

Witam, trochę to trwało, ale znalazłem swoją odpowiedź ;) Nie chciałem korzystać z bibliotek, a nigdzie nie mogłem znaleźć gotowego kodu, który by cokolwiek wyświetlił na wyświetlaczu. Są oczywiście i z bibliotekami, ale ich jeszcze nie potrafię dołączać i myślę, że nie wszyscy tak jak ja umieją się nimi posługiwać.

PS. Co prawda używam <avr/io.h> i <util/delay.h>, ale to wystarczy tylko napisać i nie trzeba nic kopiować dusić i uruchamiać ;p.

Pozdrawiam, dziękuję za pomoc i mam nadzieję, że i mój kod komuś pomorze! (wystarczy go skopiować do eclipsa i powinno śmigać)


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Mam nadzieję, że teraz jest chociaż troszkę mniej herezji, i naprawdę miesiąc z tym walczyłem -a to taki banał. Radość z wyświetlenia swojej literki bezcenna ;)

_________________
Złoty Szpadel od Pana Mirka! Dziękuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2013, o 21:02 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8597
Pomógł: 337

Tylko po co się tak męczyć ??
skoro właśnie odpowiedzią na wszystko są biblioteki i naprawdę niema kłopotu z ich używaniem

niemniej jak widać postarałeś się ... tylko teraz wyświetl w ten sposób wiecej informacji na lcd ??

_________________
Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2013, o 00:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 wrz 2013
Posty: 47
Pomógł: 1

Teraz to już żaden problem aby coś długiego napisać. Wystarczy trochę pomiksować portem D.


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Dzięki za cierpliwość ;)

_________________
Złoty Szpadel od Pana Mirka! Dziękuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lis 2013, o 12:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 maja 2013
Posty: 288
Ostrzeżenia: -2
Pomógł: 23

Wiadomo nie ma co się męczyć bo są gotowe libsy do obsługi wyswietlaczy itp. np. W bluebooku
Kolega chciał zapewne zaprezentować jak dziAla ten popularny wyswietlacz.
Co na filmiku widac.


Wysłane z mojego HTC One S



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lip 2015, o 00:34 
Offline
Użytkownik

Dołączył(a): 04 kwi 2014
Posty: 133
Pomógł: 4

A ja mam pytanie odnośnie definiowania własnych znaków " w locie".
Napisałem taką funkcję, a raczej przerobiłem z BB:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

wywołuję:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

ale wyświetlacz nie reaguje, nic nie wyświetla. Potrzebuję zbudować funkcję, która będzie mi zapisywała do cgram wyświetlacza aktualny znak(polski znak) i następnie go wyświetlała.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lip 2015, o 19:40 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Funkcja spoko tylko lcd_char( znak ); powinno być dla default. Problem jest w tym, że zapis do pamięci wyświetlacza własnego znaku zmienia pozycję kursora. Jak korzystasz z książki to takie coś nie przejdzie:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

ale takie coś jak najbardziej:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Nie rozwiąże to jednak twojego problemu, bo nie wiadomo, gdzie ten kursor znowu postawić. Pozwolę sobie poprawić Mirka i podam modyfikacje funkcji, która zapisuje definicję własnego znaku do wyświetlacza:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

dla lcd_defchar_P i lcd_defchar_E będzie identycznie.

Korzystając z twojej funkcji wystarczy teraz napisać:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Oczywiście jak dodasz przypadek:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 59 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO