www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD-Textausgabe vereinfachen


Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe an meinem 4433 ein 20x4 Zeilen LCD und momentan steuere ich das 
LCD mit dem Programm an, das im AVR-Tutorial beschrieben wird.
Nun meine Frage: Gibt es nicht eine einfachere Möglichkeit Texte 
auszugeben? Die im Tutorial beschriebene Möglichkeit ist ziehmlich 
aufwendig, da ich immer nur ein Zeichen sende!

Thx

Andreas

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also immer nur ein Zeichen an das LCD zu schicken, das wird bleiben, da 
die meisten LCD's nur max. 8 Bit auf einmal empfangen können. Du kannst 
aber deinen Code vereinfachen. Falls du grundsätzlich immer eine 
Eingangsmaske hast oder ähnliches. Das legst du dann im Eprom ab und 
greifst darauf zu. Ich glaube in der Codesammlung war so ein Programm. 
Aber besser wäre es zu wissen ob du BASIC, C oder assembler nutzt??

Sven

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

Bewertung
0 lesenswert
nicht lesenswert
http://www.mikrocontroller.net/tutorial/memory.htm (noch nicht fertig, 
aber das was du suchst ist drin)

Autor: A. Arndt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich nutze FASTAVR, einen Basic-Compiler, da gibt es nur 3 Zeilen:

1. Display-Ports festlegen, wo Daten und Befehle
2. Startposition, Zeile, Spalte (Zeichenposition)
3. den zu schreibenden Text

in echt dann so:

$Lcd = PORTD.1, rs = PORTB.2, en =PORTD.0, 20,4     ' Anschlüsse des LCD 
zuweisen

Locate 1,5            'Start Position festlegen, hier 1. Zeile, 5. 
Segment
LCD "Hallo"          ' Schreibe Hallo


Fertig, und die Tools zum Grafikdisplay sind noch mehr unterstützt, 
eigene Fonts, Rechtecke, invertiert uvm.

Ich finds echt klasse und sehr einfach...

Gruss
A. Arndt

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

Bewertung
0 lesenswert
nicht lesenswert
Mit den entsprechenden Makros geht das in Assembler genauso einfach.

; LCD-Cursor an bestimmte Position setzen
; Beispiel: locate 1, 5
.MACRO locate ;(Zeile,Spalte)
        push temp1
        ldi temp1, 0b10000000|(((@0)-1)<<6)|((@1)-1)
        rcall lcd_command
        pop temp1
.ENDMACRO

; String aus dem Flash-ROM auf dem LCD anzeigen
; Beispiel: print t_hallo
.MACRO print ;(String-Adresse)
        push ZL
        push ZH
        ldi ZL, LOW(@0)
        ldi ZH, HIGH(@0)
        rcall printstring
        pop ZH
        pop ZL
.ENDMACRO

Man kann das Ganze auch so machen dass man direkt einen String als 
Argument übergibt:

; String aus dem Flash-ROM auf dem LCD anzeigen
; Beispiel: print "hallo"
.MACRO print ;(String)
        push ZL
        push ZH
        rjmp skip
text:   .db @0, 0
skip:   ldi ZL, LOW(text)
        ldi ZH, HIGH(text)
        rcall printstring
        pop ZH
        pop ZL
.ENDMACROX

Bin mir aber nicht ganz sicher ob das auch im (primitiven) 
Original-Assembler von Atmel funktioniert, da dieser wahrscheinlich 
"duplicate label" oder etwas ähnliches ausspuckt wenn man das Makro 2mal 
in einem Programm verwendet.

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.