www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik HD44780 Probleme


Autor: Luke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

Ich habe ein LCD (2x16) von Electronic Assembly mit einem HD44780 
Controller an einem Atmega32 im Einsatz. Die Routinen zur Ansteuerung 
habe ich aus dem AVR-Tutorial 1:1 übernommen. Aus irgendeinem Grund 
bekomm ich aber nie mehr als die ersten 8 Zeichen in der ersten Zeile 
angezeigt. bei "Hello World" also nur "Hello Wo". Ich finde den Fehler 
einfach nicht. Woran kann das liegen?

Viele Grüße,
Luke

Autor: *.* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Speicher des LCD ist anders organisiert. Schreibe ihn mal komplett 
mit sinnvollen Zeichen voll und rechne daraus zurück welcher Buchstabe 
an welcher Adresse steht. Das Bit für Zweizeilen-Initialisierung ist ja 
hoffentlich gesetzt.

Autor: Luke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe den Cursor auf Auto Increment, der müsste nacheinander alle 
Zeichen aufs Display schreiben, er schreibt aber nur die ersten 8.

Die Initialisierung sieht folgendermaßen aus:

           rcall  delay5ms
           dec  temp3
           brne powerupwait
           ldi temp1, 0b00000011
           out PORTD, temp1
           rcall lcd_enable
           rcall delay5ms
           rcall lcd_enable
           rcall delay5ms
           rcall lcd_enable
           rcall delay5ms
           ldi temp1, 0b00000010
           out PORTD, temp1
           rcall lcd_enable
           rcall delay5ms
           ldi temp1, 0b00101000
           rcall lcd_command
           ldi temp1, 0b00001100
           rcall lcd_command
           ldi temp1, 0b00000100
           rcall lcd_command

Ich komme einfach nicht dahinter...

Autor: *.* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schreibe mal statt "Hello World" einen String der 80 Zeichen lang ist.

Autor: Luke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, ich weiß (noch) nicht wie ich einen 80 Zeichen String schreibe in 
Assembler. Wie gesagt, ich habe das Tutorial auf dieser Seite 
durchgearbeitet, bzw, bin grade bei dem Display angekommen. Ich lese 
parallel auch schon andere Beiträge in diesem Forum, bin aber noch nicht 
weiter gekommen. Ich würde mich über jede Unterstützung sehr freuen!!

Autor: Sebastian Mazur (izaseba)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Luke wrote:
> Sorry, ich weiß (noch) nicht wie ich einen 80 Zeichen String schreibe in
> Assembler.

Hallo, schau mal weiter im Tutorial unter Speicher/Flash-ROM

Gruß Sebastian

Autor: Luke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hilft mir im Moment leider überhaupt nicht weiter. Ich verstehe auch 
(noch) nicht was es bringen soll, den Speicher des Displays mit einem 80 
Zeichen-String voll zu schreiben. Das tue ich doch auch wenn ich die 
Zeichen nacheinander (so wie im Tutorial) schreibe oder?

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du beschreibst das Display vermutlich zu schnell, füge mal zwischen den 
Bytes Pausen ein, dann wird's wohl klappen! Wenn du das Datenblatt des 
Displays gründlich studierst solltest du das Busy-Bit (Umschaltung von 
R/W) abfragen können, was hierzu sehr nützlich ist.

Autor: *.* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich vermute halt das es ab dem achten Zeichen wo anders im Datenram 
weitergeht. In dies Fall würde ich das gesamte RAM vollschreiben und von 
den Zeichen, die dann auf den jetzt noch leeren Plätzen des Displays 
stehen, auf die Adresse zurückschließen. Aber man hinterfragt ja lieber 
ewig als eine Minute in copy&paste zu investieren ;)

Autor: Elektrikser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht hilft dir das weiter um das Display besser zu verstehen:
http://www.ulrichradig.de/site/infos/pdf/LC.pdf

Gruß Elektrikser

Autor: Sebastian Mazur (izaseba)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Luke wrote:
> Das hilft mir im Moment leider überhaupt nicht weiter. Ich verstehe auch
> (noch) nicht was es bringen soll, den Speicher des Displays mit einem 80
> Zeichen-String voll zu schreiben.

So ein HD44780 kann maximal 80 Zeichen verarbeiten, egal wieviele 
Zeichen
Dein Display hat.

Die Adressen müssen aber nicht durchgängig sein !
Wenn Du ein String von 80 Zeichen ausgibst, schreibst Du den Speicher 
voll und dann schaust Dir mal an was auf Deinem Display draufsteht.

Gruß Sebastian


Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hat das Ding wirklich einen HD44780 drauf oder einen kompatiblen?
Welcher Displaytyp ist es?

Electronic Assembly bietet ja mehrere 2x16 an.


@*.*:

durchaus Zustimming. Zumal diese Übung ihm mehr Verständnis der 
Programmierung und der LCD-Display-Controller bringen würde, als einen 
Ratschlag einzubauen, der dann geht, ohne verstanden zu haben, was man 
da eigentlich gemacht hat.

Gruß aus Berlin
Michael

Autor: Sonic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du ein standard-Teil hast sollte die erste Zeile bei Adresse 0x80 
anfangen und schreibt bis 0x8F, wobei hier die letzten 8 Zeichen nicht 
sichtbar sind. Die 2. Zeile fängt dann bei 0xC0 an und geht bis 0xCF, 
wieder die letzten 8 Zeichen nicht sichtbar. Wo genau die Startadressen 
für die Zeilen sind steht sicher im Datenblatt.

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.