Forum: Mikrocontroller und Digitale Elektronik LCD 4-zeilig


von Manni (Gast)


Lesenswert?

Jetzt stehe ich aber auf dem Schlauch,
nach Durchsicht der Datenblätter und beim Tutorial finde ich:

Konfiguration: 0b001dnfxx mit:
d = 0, 4-Bit Interface
d = 1, 8-Bit Interface
n = 0, 1 zeilig
n = 1, 2 zeilig
f = 0, 5x8 Pixel
f = 1, 5x11 Pixel

Frage: Was muss ich denn wo noch einstellen, wenn ich ein 4-zeiliges 
Display benutze (z.B. LCD 204B von Reichelt) ?

Manni

von Philipp B. (philipp_burch)


Lesenswert?

Für vierzeilige Displays brauchst du ganz einfach die zwei-, bzw. eben 
mehrzeilige Initialisierung. Die zweite Zeile ist dann an Adresse 0x40 
zu finden. Die dritte AFAIK bei 0x20 und die vierte bei 0x60. Müsstest 
du aber im Datenblatt noch genau nachschauen.

von Manni (Gast)


Lesenswert?

Danke dir Philipp für den Tip.

Habe gerade noch was beim Googlen gefunden:

"Vierzeilige Displays mit bis zu 20 Zeichen pro Zeile lassen sich mit 
nur einem Controller und zusätzlichen Displaytreibern aufbauen. Das 4x20 
Display ist eigentlich ein 2x40 Display, das in der Mitte 
durchgeschnitten wurde, und bei dem dann die hinteren Hälften der Zeilen 
unter den vorderen Hälften der Zeilen angebracht wurde. Wenn man also 
dem Controller Daten für die 1. Zeile übergibt, so werden davon die 
ersten 20 Zeichen wirklich in die 1. Zeile geschrieben, wärend Zeichen 
21 bis 40 in die 3. Zeile gelangen. Genauso gehören die 2. und 4. Zeile 
des Displays eigentlich hintereinander."

Jetzt ist meine Welt wieder in Ordnung und der Abend gerettet.



von Martin (Gast)


Lesenswert?

Hallo,

kan mir vielleicht jemand helfen?
habe folgendes Problem bzw. ich verstehe folgendes nicht ganz:

habe ein 4 Zeiliges LCD wenn ich folgendes schreibe:

#include <avr/io.h>
#include "lcd-routines.h"


 int main(void)

{


    lcd_init();

    lcd_data('T');
    lcd_data('e');
    lcd_data('s');
    lcd_data('t');
    lcd_data(' ');
    lcd_data('H');
    lcd_data('o');
    lcd_data('l');
    lcd_data('a');
    lcd_data('!');
    lcd_data('!');

  set_cursor(0,2);


    lcd_string("Funciona -!!");

    while(1)
    {
    }

    return 0;
}

dann schreibt er !

wenn ich aber statt set_cursor(0,2);  "set_cursor(0,3);" schreibe komm 
dann mein Text aber "Funciona...." taucht in der 17 Spalte im erste 
Zeile!!

warum??

vielen Dank!
Gruß
Martin

von Martin (Gast)


Lesenswert?

kan mich keine helfen??

von Gülcan (Gast)


Lesenswert?

Nain.

Gülcan.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.