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


von Andreas S. (andreas) (Admin) Benutzerseite


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

von Steffen (Gast)


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

von Steffen (Gast)


Lesenswert?

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


Ciao
Steffen

von Andreas S. (andreas) (Admin) Benutzerseite


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

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.