Forum: Mikrocontroller und Digitale Elektronik LCD Zeichen anzeigen


von Poldi (Gast)


Lesenswert?

Hallo,

ich habe ein 2zeiliges lc display. 8 bit datenbus.

Ich kann das Display initialisieren. Den Cursor anzeigen und 
positionieren.
Wenn ich ein Zeichen schreibe geht der Cursor automatisch eine Position 
weiter was ja normal ist.

 Aber es wird nichts angezeigt.

Da ich gern selbst porbiere hab ich alle Befehle einzeln geschrieben.
Die Zeichenausgabe mache ich so:

     PORTD = 0b00000000;
     PORTC |=(1<<PC0);
     PORTD = 0x48;
     PORTC |=(1<<PC2);
     _delay_us(50);
     PORTC &= ~(1<<PC2);  /* h schreiben */
     PORTC &= ~(1<<PC0);
     _delay_ms(2000);

Wobei PC0 das RS Signal ist und PC2 das enable. Hardwaremässig scheint 
es zu passen. Hab auch nachgemessen. Es ist ein ATmega 8 mit 16MHZ 
Kristall

Könnt ihr mir weiterhelfen?

mfg

Poldi

von Joggel (Gast)


Lesenswert?

Eigentlich muesste man das Vorgehen mit dem Datenblatt vegleichen...wir 
koennen nur raten

von Karl H. (kbuchegg)


Lesenswert?

Poldi schrieb:

>  Aber es wird nichts angezeigt.

Der Kontrast ist richtig eingestellt?



>  Wobei PC0 das RS Signal ist und PC2 das enable.

Vorschlag: mach dir dafür ein paar #define
Das ist kein großer Aufwand und es liest sich besser. Ist auch weniger 
fehleranfällig, wenn du die Manipulation von µC Pins in Begriffen der 
Anwendung formulieren kannst und nicht in µC-Pinbezeichnungen
1
#define LCD_RS     PC0
2
#define LCD_E      PC2
3
4
...
5
6
7
     PORTC |= (1 << LCD_RS);
8
     PORTD = 'h';
9
10
// ich würde auch hier eventuell mal eine kleine Pause einlegen,
11
// damit sich die Leitungen stabilisieren können.
12
13
     PORTC |= (1 << LCD_E);
14
     _delay_us(50);
15
     PORTC &= ~( 1 << LCD_E );
16
17
     PORTC &= ~( 1 << LCD_RS );
18
19
     _delay_ms(2000);

so sieht man im Code gleich viel besser, welche Einstellungen in welcher 
Reihenfolge vorgenommen werden.

von Poldi (Gast)


Lesenswert?

Hallo,

hab schon alle möglichen Pausen zwischen den Befehlen ausprobiert. Den 
Kontrast hab ich auch schon verstellt. Hat nix gebracht. Der Cursor wird 
angezeigt. Ich probiers mal mit dem define Befehl. Ist mir unerklärlich 
das ganze. Das Display ist das von Pollin bestnr. 120422. Ich werds mal 
morgen früh probieren. Muss dann arbeiten.

Danke

POldi

von Poldi (Gast)


Lesenswert?

Guten Morgen,

ich hatte den Cursor als Sichtbar eingeschaltet (D=1). Hab ihr Testweise 
ausgeschaltet und es geht. Warum auch immer. Die Zeichen die ich sende 
werden angezeigt.

Gruss

POldi

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.