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



Teraz jest 25 sty 2026, o 23:59


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 1 sty 2015, o 18:38 
Offline
Nowy

Dołączył(a): 14 lis 2014
Posty: 9
Pomógł: 0

Witam forumowiczów.
Mam takie coś z przykładu z książki:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Załóżmy, że mam wyświetlacz 2x16. Wobec tego za y podstawiam 2 czy podstawiam 1 (case'y zaczynają się wszak od 0)? Który warunek się wykona w takim razie, case 2 z adresem dla wyświetlacza 4x16?
Druga rzecz, to
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Dlaczego 0x80 i co dalej zadzieje się w nawiasie zakładając, że cały czas mam lcd 2x16? Dzięki za podpowiedzi :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2015, o 18:55 
Offline
Użytkownik
Avatar użytkownika

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

1) Wiersze wyświetlacza liczone są 0... podobnie jak kolumny tż od 0.
Zatem dla LCD 2x16 dla pierwszego wiersza mamy Y=0;
dla drugiego wiersza Y=1;

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

gdzie LCD_LINE zdefiniowany jest adres pierwszego znaku który wynosi: 0x00;

Teraz gdy chcemy ustawić sobie znak w pozycji: (0,10)
czyli y=0 // pierwszy wiersz LCD
x=10 // 11 kolumna na LCD

skąd 0x80 ? ano stąd że aby adresować DDRAM . D7 czyli 8 bit ustawiony na 1 czyli w zapisie szesnastkowym 0x80 (Zajrzyj do tabeli rozkazów LCD) .

Dodając do 0x80 tego X+Y ustawiamy adres w DDRAM a co za tym idzie nasz kursor.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2015, o 19:38 
Offline
Nowy

Dołączył(a): 14 lis 2014
Posty: 9
Pomógł: 0

Czyli idąc dalej 128+10 otrzymamy 138 tj. po zamianie wynik 8A? W specyfikacji nie występuje taki, więc coś nie tak chyba łapię? Prośba o cierpliwość;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2015, o 20:20 
Offline
Użytkownik
Avatar użytkownika

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

W zależności od lcd tj 2x16, 2x20,4x20 etc mamy różne adresy komorek w pamieci DDRAM (co odpowiada pozycji znaku wyświetlanego na lcd) dla kolejnych linii na LCD.

Dla 2x16 pierwsza linia zaczyna się od adresu 0x00 .
Druga linia zaczyna się od adresu 0x40.

Żeby zaadresować komórkę w pamięci DDRAM musimy wysłać komende 0×80 zgodnie z tabela + nasz adres: D6÷D0. (Czyli nasze Y czyli poczatek każdej linii na lcd - adres komórki DDRAM pierwszego znaku w tej linii + X to już w zależności od rodzaju lcd np 16znakow liczone od 0 do 15)

Czyli aby sprawnie poruszać sie po tej przestrzeni trzeba znać adresy odpowiadające poszczególnym wierszom.


//pisze z telefonu wiec odpisuje etapami:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2015, o 21:03 
Offline
Nowy

Dołączył(a): 14 lis 2014
Posty: 9
Pomógł: 0

Ok. Czyli po operacji dostaniemy ob10001010 (przy y=0 i x=10), które zostanie wysłane przez lcd_write_cmd(0x80+y+x)?
I druga ważna rzecz to skąd ta funkcja w zasadzie pobierze wartości Y i X? Na podstawie aktualnego położenia kursora?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2015, o 21:17 
Offline
Użytkownik
Avatar użytkownika

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

Pozwoliłem sobie narysować Tobie rysunek pomocniczy tak na szybko:)

Obrazek

mam nadzieje że to pomoże :)

//edit: mały update obrazka:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2015, o 21:42 
Offline
Nowy

Dołączył(a): 14 lis 2014
Posty: 9
Pomógł: 0

Ok. Ekstra!:) Czy w warunku switch(y) muszę coś gdzieś podstawiać "ręcznie", czy cala operacja dzieje się z "automatu"?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2015, o 21:50 
Offline
Użytkownik
Avatar użytkownika

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

Nic nie musisz jedynie definiusz w pliku nagłówkowym rodzaj LCD 2x16 czy 2x20 etc

Nalezy pamietac ze jesli mamy inne lcd niz w ksiazce, chodzi mi o ilosc wierszy i kolumn. Nalezy sprawdzic w nocie lub doświadczalnie adresy pierwszych znakow linii i odpowiednio zdefiniować.


Autor postu otrzymał pochwałę


Ostatnio edytowano 1 sty 2015, o 21:56 przez bogdanc, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2015, o 21:54 
Offline
Nowy

Dołączył(a): 14 lis 2014
Posty: 9
Pomógł: 0

Wielkie dzięki za pomoc i cierpliwość bogdanc. :D .
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2015, o 21:56 
Offline
Użytkownik
Avatar użytkownika

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

Nie ma problemu służe pomocą:)



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: 10 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO