mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Texte auf LCD


Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte gern Texte auf dem LCD Display darstellen!
Habe folgenden Code abgeschrieben doch leider ist nur die obere Zeile
zu sehen wenn man Sie einstellt, oder gar nichts wenn man die anderen
Texte ansteuert. Vielleicht hat jemand einen Tip oder ein Programm mit
dem es funktioniert.

Vielen Dank im vorraus!!!

Gruß

Jürgen


MEN1:  .db "Hallo Welt !!!!!"    ;MR=0 !!
MEN2:  .db "Menue 21C  Taste"
MEN3:  .db "Licht1    Licht2"

ldi temp3,1               ;Wählt 2. Text aus
rcall lcd_init     ;Display initialisieren
rcall lcd_clear    ;Display löschen
rcall M_TEXT            ;Schreibt 1. Text auf LCD

ldi temp3,2              ;Wählt 3. Text aus
rcall lcd_init     ;Display initialisieren
rcall lcd_clear    ;Display löschen
rcall M_TEXT            ;Schreibt 1. Text auf LCD



M_TEXT:        ; call ldi MR,0 <- first M_Text
set          ; T = 0 > write data to LCD
ldi ZH,high(MEN1<<1)
ldi ZL,low(MEN1<<1)
ldi temp4,(ROW)  ; ROW # of signs in ROW
mov temp2,temp3
tst temp2
breq M2        ; first Menue ?

M1:
adiw ZL,1
dec temp2
brne M1
ldi temp4,(ROW)
dec temp2
brne M1
ldi temp4,(ROW)

M2:          ; now printout all signs
lpm

Autor: Fritz Ganter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auweh, von Assembler bekomme ich Kopfweh!
lcd_init braucht man nur einmal machen. Ich verwende gestohlene LCD
Routinen, dabei ist mir aufgefallen, dass lcd_clear den Cursor nicht an
die erste Stelle setzt, also solltest du das berücksichtigen. Stelle
ev. das Display so um, dass es einen automatisch in die nächste Zeile
geht, du musst dem Display auch sagen, dass es 2 Zeilen hat (hab ich
bei mir in lcd.h eingestellt).

Autor: thkais (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, das Problem mit dem Kopfweh habe ich bei C... g
Eine LCD.H gibts nicht bei Assembler. Man muß die Programmierung des
LCD komplett von Hand machen, hat aber den Vorteil, daß man hinterher
wirklich weiß, wie das Display exakt angesteuert wird.
@Jürgen: Ein paar Infos brauchts aber schon noch, manche Displays
lassen sich nur mit dem Setzen des Adresspointers auf die zweite Zeile
setzen. Hierzu im Datenblatt des LCD nachschauen.

Autor: phagsae (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Abschreiben ??
Kopieren langt doch eigentlich.. Geht auch schneller

Fehler:
Vor dem schreiben einer Zeile muss der Cursor neu gesetzt werden.
Die Zeilen haben bei einem 16x2
N I C H T ! einen Abstand von 16 Zeichen
D.H. weitere Zeichen werden ins nicht sichtbare RAM geschrieben


clt;
ldi To_LCD_R,LCD_POS1
rcall LCD_WRITE         ;
#####################################################
Aufruf SUB LCD_WRITE -> Setzt Cursor auf Zeile 1 Feld
#####################################################
ldi MR,0                ;Wählt 1. Text aus
rcall M_TEXT            ;Schreibt 1. Text auf LCD

usw....


Phagsae

Autor: Dennis Brücke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

so wie dein lcd_init und lcd_clear aufruf aussieht, gehe ich einfach
mal davon aus. Das Du eine fertige Routine hier aus dem Forum benutzt.
Demnach müsstest du ja auch lcd_data zur ausgabe eines zeichens haben.
und lcd_command für die ausgabe eines befehls...

warum setzt du den cursor nicht direkt auf die 2. Zeile ?

ldi temp1, 0xC0
rcall lcd_command

mit andern worten setze Cursor auf Position Hex 40.

Gruß Dennis

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielen Dank erst einmal für Eure Antworten. Ist immer toll wenn man
nicht mehr weiter weiß das Forum fragen kann!! Super Einrichtung!
Nunden eigentlich geht es mir gar nicht um die 2 Zeile das habe ich
schon in einem anderen Programm hin bekommen. Ich kann den 2 oder 3
Text nicht an Pos 1 bekommen jetzt erscheint dann gar nichts. Wie
schreibt Ihr so Rotinen?

Vielen Dank im vorraus

Gruß

Jürgen

Autor: Dennis Brücke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jürgen,

hast du meine LCD routinen bekommen ?

Gruß Dennis

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.