Forum: Mikrocontroller und Digitale Elektronik LCD-Display


von Jan Schmidt (Gast)


Lesenswert?

Hi,
hab ein problem mit der LCD ansteuerung.
Hab nach dem Tutorial mein 16x2 LCD angeschlossen, steuere es im 4-Bit
Modus an, aber es ist nur die obere Zeile verfügbar. Beim einschalten
ohne software ist auch nur oben ein schwarzer Balken zu sehen. Unten
kann kein Text angezeigt werden.

Ich verwende einen AT90S1200 ...

Danke
Jan

von crazy horse (Gast)


Lesenswert?

das Display hat keinen fortlaufenden Adressraum,die 2.Teile beginnt
wahscheinlich bei 0x20.

von Markus (Gast)


Lesenswert?

Hattest du den schon Text auf dem Display?

Die 2te Zeile musst du erst per Befehl anschalten.

Bei einer Zeile kann es sein das du wegen des Kontrast nicht siehst,
dass was angezeigt wird. Häng mal ein Poti an die Kontrastleitung.

von Jan Schmidt (Gast)


Lesenswert?

also

ldi temp1, 0x20

nochmal weiter unten für die zweite zeile angeben, oder wie ?

von Markus (Gast)


Lesenswert?

Wenn die 2te zeile an ist dan siehst du dort bei vollem kontrast die
Blöcke. Sind die da?

Wenn die nicht da sind und sich auch durch den Befehl nicht einschalten
lassen dann stimmt was am timing nicht.

von Jan Schmidt (Gast)


Lesenswert?

ja, habe schon text auf dem display, aber nur oben...
wie schalte ich die zweite zeile ein ?

von Jan Schmidt (Gast)


Lesenswert?

die blöcke sind nicht da

von Jan Schmidt (Gast)


Lesenswert?

wie schalte ich die zweite zeile an ???

von leo9 (Gast)


Lesenswert?

Datenblatt lesen und entsprechenden Wert ins Control-Register
schreiben.

grüsse leo9

von Neun-elfer (Gast)


Lesenswert?

normal startet die 2.zeile bei 0x40. zumindest bei mir

zb so:


Outline2:

  ldi temp1, 0b11000000  ;set DDRAM addresse 40 => 2.Zeile
  rcall lcd_command


  print2:

    lpm
    tst R0
    breq print2_end
    mov temp1,R0
    rcall lcd_data
    adiw ZL,1
    rjmp print2

  print2_end:

ret

von Chris (Gast)


Lesenswert?

Hallo,

Initialisierung zweizeilig:

 ;Initialisierung: muss ganz am Anfang des Programms aufgerufen werden
lcd_init:
           ldi  temp3,50
powerupwait:
           rcall  delay5ms
           dec  temp3
           brne  powerupwait
           ldi temp1, 0b00000011        ;muss 3mal hintereinander
gesendet
           out PORTD, temp1             ;werden zur Initialisierung
           rcall lcd_enable             ;1
           rcall delay5ms
           rcall lcd_enable             ;2
           rcall delay5ms
           rcall lcd_enable             ;und 3!
           rcall delay5ms
           ldi temp1, 0b00000010        ;4bit-Modus einstellen
           out PORTD, temp1
           rcall lcd_enable
           rcall delay5ms
           ldi temp1, 0b00101000        ;noch was einstellen...
           rcall lcd_command
           ldi temp1, 0b00001100        ;...nochwas...
           rcall lcd_command
           ldi temp1, 0b00000100        ;endlich fertig
           rcall lcd_command
           ret

Gruß

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.