www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Neues Tutorial-Kapitel: LCD


Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

endlich bin ich mal dazugekommen ein neues Tutorial-Kapitel zu 
schreiben. Es erklärt ausführlich (und hoffentlich verständlich) die 
Ansteuerung eines LCDs im 4bit-Modus.
Ihr findet es auf http://www.mikrocontroller.net/tutorial4.htm (ich habe 
wiedermal die Numerierung geändert).
Kritik und Verbesserungsvorschläge sind willkommen, Fragen bitte ins 
Forum posten!

MfG
Andreas

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab ein kleines Makro geschrieben, mit dem es möglich ist, recht 
einfach einen kompletten String auf dem LCD auszugeben.
Den folgenden Code-Schnipsel einfach in die LCD.inc einfügen.

;------String auf LCD ausgeben----------
.MACRO str_lcd
str_out:  lpm      ;lädt Byte des Strings adressiert durch ZH und ZL in 
R0
    and  r0, r0    ;Ende des Strings?
    breq  str_end    ;  ja?..dann spring!
      mov    temp, r0  ;    sonst Byte in Register "temp" laden
      rcall    lcd_dta  ;    Ausgaberoutiene aufrufen
      inc    zl    ;    auf nächstes Byte zeigen
      rjmp    str_out  ;    und zurück...weitere Bytes einlesen
str_end:        ;String ausgegeben :)
.ENDMACRO
;---------------------------------------


Im eigentlichen Programm werden nur 3 Zeilen benötigt, um einen String 
auzugeben:

    rcall  lcd_init
    rcall  lcd_clr

    .
    .
    .

    LDI   ZH,HIGH(2*bsp1)    ;Die Adresse des Strings bsp1 wird in ZH 
und ZL hinterlegt
       LDI   ZL,LOW(2*bsp1)
    str_lcd        ;ruft das Makro auf


Und so wird der String am Ende des Programms definiert

bsp1:  .db  "Irgend ein Text",0x00

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hätt ich mir wohl sparen können. Hab gerade im Forum etwas ähnliches 
gelesen :|
Naja...


Ciao
Steffen

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ursprünglich war eine ähnliche Routine im Programm enthalten (wie du es 
im Forum gefunden hast), ich hatte es jedoch erstmal rausgekürzt und 
wollte es in einem anderen Tutorial bringen.

Nebenbei bemerkt ist es besser, deinen Code mit "call" aufzurufen, da 
das Programm viel mehr Speicher benötigt wenn das Makro öfter verwendet 
wird.

MfG
Andreas

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.