mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik lcd 2te zeile


Autor: Jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, kann mir bitte jemand helfen?

Ich habe die LCD Schaltung aus dem Tutorial aufgebaut und sie geht
auch, nur habe ich ein Problem, wie komm ich in die 2te zeile?

Die erste kann ich wunderbar beschreiben aber in die 2te,naja da fängt
mein Problem an.

PS: Ich verwende AVR-Studio und den 4433.

Jochen

Autor: matthias reiter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jochen,

wenn Du dir die anliegende pdf-Datei durchliest, wirst du merken,dass
Du das LCD richtig initalisieren musst (system-set).
Die zweite zeile erreichst du dann, wenn Du z.B. einen passenden
set-DD-Ram Befehl an das LCD sendest.
Anschliesend gibt das LCD die zeichen ab der Adresse aus, die du vorher
über den set-LCD-RAM befehl gesetzt hast.

z.B.:
MOV A, #127+64+11 ;An Spalte 11 2. Zeile springen (set_LCD_RAM)
call LCD_send_b    ; "

die zweite möglichkeit zum prinzipiellen ausprobieren ist die, dass du,
nachdem du das LCD mit dem system-set befehl für ein mehrzeiliges LCD
initialisiert hast, einfach einen ganz langen text in das lcd
schreibst. Ab dem 65ten Zeichen müsste die zweite Zeile beschrieben
werden.

mFG Matthias

Autor: matthias reiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jochen,

wenn du LCD-Test.asm aus dem tutorial verwendest, kannst du mal
folgendes ausprobieren:

Füge vor "loop:" folgendes ein:

           ldi temp1, #192     ;set LCD Ram Befehl
           rcall lcd_command   ; ans LCD senden

           ldi temp1, '2'     ;Zeichen anzeigen
           rcall lcd_data

Dann müsste eine 2 in der Zweiten Zeile erscheinen
Gruß Matthias

Autor: matthias reiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jochen,

der zu sendende LCD Ram Befehl heist natürlich "Set DD-RAM adress",
also
        1     A6   A5   A4   A3   A2   A1   A0
       Bit7  Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
über die Bits A0 bis A6 wird die Stelle angegeben, an die im LCD
gesprungen werden soll.

Die zweite Zeile geht bei zweizeiligen LCDs oft ab Ram adresse 64 los,
daß heist man muß #192 als Befehl an das LCD senden (rcall lcd_command)
um an die 2te Spalte der Zweiten Zeile zu gelangen.

Bit 7 des Befehls muß eins sein:             127
Die zweite Zeile fängt ab RAM-Stelle 64 an: + 64
Um von der ersten Spalte zur zweiten zu
gelangen, muß man eine Stelle weitergehen:  +  1
------------------------------------------------
                                            =192
                                            ====
Matthias

Autor: matthias reiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jochen,

der Fehlerteufel hat zugeschlagen, da 2^7 =128 muß es heißen:

Die zweite Zeile geht bei zweizeiligen LCDs oft ab Ram adresse 64 los,
daß heist man muß !! #193 !! als Befehl an das LCD senden (rcall
lcd_command)
um an die 2te Spalte der Zweiten Zeile zu gelangen.

Bit 7 des Befehls muß eins sein:      !!!    128 !!!
Die zweite Zeile fängt ab RAM-Stelle 64 an: + 64
Um von der ersten Spalte zur zweiten zu
gelangen, muß man eine Stelle weitergehen:  +  1
------------------------------------------------
                                        !!  =193 !!!
                                            ====
Matthias

Autor: Jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Matthias Reiter,

Erstmal danke für die schnelle Hilfe, jetzt klappt es. Nur konnte ich
#193 nicht senden ich musste es dann in Hex "C1" umwandeln und dann
War ich in der 2ten Zeile auf position 2 um auf position 1 zu kommen
musste ich einfach 192 oder C0 wie du am anfang sagtest an das lcd
senden.

Nochmals Dankeschön, Jochen Tontch.

Autor: matthias reiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jochen,

danke, dass du eine Rückmeldung gegeben hast, dass es jetzt
funktioniert.

Ich habe in letzter zeit nur mcs51'er programmiert.
Deshalb komme ich mit der Schreibweise vom AVR-Assembler immer
durcheinander. Ich glaube es müsste aber auch ohne Umwandlung in Hex
gehen. Nur die Raute muß, gelaube ich, weggelassen werden. Das ist mir
aus der mcs51'er Schreibweise reingerutscht. Probier doch mal
folgendes:

====================================================================
Anstatt #192 einfach nur 192
====================================================================

Füge vor "loop:" folgendes ein:

           ldi temp1, 192     ;set LCD Ram Befehl
           rcall lcd_command   ; ans LCD senden

           ldi temp1, '0'     ;Zeichen anzeigen
           rcall lcd_data

Ich bilde mir ein, das es so funktionieren müsste.
Möglicherweise funktioniert sogar das:

           ldi temp1, 128+63+8     ;set LCD Ram Befehl
                                   ;Zweite Zeile und 8te Spalte
                                   ; 1-2-3-4-5-6-7-8 wenn man mit 1
                                   ; zu zählen anfängt
           rcall lcd_command   ; ans LCD senden

           ldi temp1, '8'     ;Zeichen anzeigen
           rcall lcd_data

Tschüß Matthias

Autor: Daniel S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo, hatte das selbe problem

jetzt:

           ldi temp1, 192     ;set LCD Ram Befehl
           rcall lcd_command   ; ans LCD senden

           ldi temp1, 'x'     ;Zeichen anzeigen
           rcall lcd_data

Funktioniert!

Danke auch.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.