lcd initialisierung assembler

OP #3576918
Lesenswert?
• ▲
▼
Ich weiß, dass es schon ewig viele Beiträge von diesem Problem gibt, 
aber ich komme nicht weiter.

Ich versuche mein LCD (Treiber: 44780) mit einem Atmega16 (16MHz) zu 
programmieren. Ich programmiere in Assembler. Allerdings geht nicht mal 
die initialisierung.
Ich habe es nach dieser Anleitung probiert: 
http://www.sprut.de/electronic/lcd/#ks0073

Wenn die Initialisierung abgeschlossen ist, wird immer noch ein Balken 
in der oberen Zeile angezeigt, und der Cursor blinkt an der zweiten 
stelle.

Im Anhang befindet sich mein Programm.

Kann mir bitte jemand sagen was da nicht stimmt?

mfg
Angehängte Dateien:
#3576944
Lesenswert?
• ▲
▼
Zunächst, dein Code ist nicht kommentiert und schlecht lesbar. Ohne mich 
jetzt da hinein zu vertiefen, fällt mir als erstes auf:

";DB7-DB4 auf PB3-6"

Das ist suboptimal, weil die Datenleitungen nicht mit einem 
vollständigen Nibble übereinstimmen und somit unnnötige 
Schiebeoperationen erforderlich sind (die ich im Code nicht finde). 
Schließ die Datenpins an PB7-PB4 an.
OP #3576949
Lesenswert?
• ▲
▼
@holger

das Problem ist, dass bei dieser Seite der Code für die Initialisierung 
nicht direkt aufgeführt ist, sondern nur der Ablauf. Ich verstehe nicht 
was man mit  "$3" meint.

Ist es eigentlich auch richtig, dass ich zuerst die Pegel für RS und R/W 
anlegen muss, dann die Enable leitung auf High legen, dann die Pegel für 
die Datenleitungen anlegen muss und dann Enable wieder auf low ziehen?
#3576973
Lesenswert?
• ▲
▼
ldi R16, 0b00000110    ;Interface auf 8-bit setzen
out PORTB, R16
sbi PORTB, 2      ;Enableleitung auf high


Das geht so nicht. Du schreibst damit einerseits nur Nullen auf die 
Datenleitungen und gleichzeitig ziehst du R/W auf High, wodurch das 
Display in den Lesemodus versetzt wird.

Vergiß das Tutorial und schau dir das hier auf µC-net an.

holger schrieb:
> Vergleiche deinen Code mit dieser Seite:
>
> http://www.mikrocontroller.net/articles/AVR-Tutorial:_LCD
OP #3576995
Lesenswert?
• ▲
▼
@ lcke

1.) Ich verstehe nicht ganz, wieso ich alle Datenleitungen auf low lege. 
Wenn ich die Zahl 0b00000110 auf Port B schreibe, so müssten doch DB5 & 
DB4 auf high sein. Außerdem setze ich R/W nie auf eins, weil auf Pin 2 
ja Enalbe liegt.

2.) Ich verstehe die Initialisierung auf uC.net nicht wirklich. Was 
meint man da, wenn man $3 ins Steuerregister schreiben soll?

mfg

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.