Witam,
w obsłudze LCD było podane polecenie przejscia do następnej lini typu:
#define LCDC_DDA 0x80
Ja posiadam wyświetlacz z 4 liniami i to polecenie dziala tylko do drugiej lini.
Jakim poleceniem można przejść do 3 i 4 lini??
Pozdrawiam
10/2005 kurs C, LCD
Konieczne jest włączenie w pierwszym rzędzie trybu dwuliniowego (to trochę mylące, ale tak właśnie jest). Do linii wszystkich linii dostajemy się za pomocą wymienionej komendy. Konieczne jest jedynie poznanie adresów ich początków. Na przykład dla wyświetlacza 4x20 będzie to:
1: 00h
2: 40h
3: 14h
4: 54h
Analiza wykazuje, że linia 3 zaczyna się zaraz po linii 1, 4 zaczyna się zaraz po 2. Tak wiec jeśli posiada Pan moduł 4x16, albo 4x40 adresy początków linii 2 i 4 będą odpowiednio przesunięte.
1: 00h
2: 40h
3: 14h
4: 54h
Analiza wykazuje, że linia 3 zaczyna się zaraz po linii 1, 4 zaczyna się zaraz po 2. Tak wiec jeśli posiada Pan moduł 4x16, albo 4x40 adresy początków linii 2 i 4 będą odpowiednio przesunięte.
Proponuję Ci także taką sztuczkę:jareks91 pisze:Wystarczy więc (jesli ktoś korzysta z kursu C) wpisać:
lcd_command(LCDC_DDA | 64); //przejście do drugiej linii
lcd_command(LCDC_DDA | 20); //przejście do trzeciej linii
lcd_command(LCDC_DDA | 84); // przejscie do czwartej linii
Pozdrawiam i dziekuje za pomoc.
Do pliku harddef.h dodać następujące linie:
Kod: Zaznacz cały
#define LCD_LINE1 0
#define LCD_LINE2 64
#define LCD_LINE3 20
#define LCD_LINE4 84Kod: Zaznacz cały
lcd_command(LCDC_DDA | LCD_LINE2);Kod: Zaznacz cały
lcd_command(LCDC_DDA + LCD_LINE2);Zaletą takiej definicji jest bardzo proste dostosowanie programu do zmiany wyświetlacza - polecam takie podejście zamiast używania adresów w sposób jawny.
Tu się trochę zagalopowałem. Z tego co pamiętam wyświetlacz 4x40 znaków ma dwa kontrolery i oddzielne wejścia ENABLE (reszta wyprowadzeń sterujących jest połączona wewnątrz modułu). W związku z tym jego sterowanie trochę różni się od innych modułów.Koppel pisze:...albo 4x40 adresy początków linii 2 i 4 będą odpowiednio przesunięte.