mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 2x40 LCD mit HD44780A00


Autor: Nik Bamert (nikbamert)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Hat irgendjemand ein gescheites Datenblatt zu diesem HD44780A00?

Habe ein bisschen gegooglet und rausgekommen ist ein PDF in dem drin 
steht: "There are many (small) variations of the standard so you may
see, for example, HD44780A00." Nur finde ich nirgends eine Beschreibung 
dieser "variations".

Die erste Zeile des Displays geht perfekt, die Initialisierung scheint 
auch okay zu sein, es gibt überall leicht graue Klötzchen wie es sein 
sollte.

Nun das Problem; Mir ist die Adresse für die zweite Zeile nicht bekannt, 
bzw. sie funktioniert nicht richtig. Bei einem normalen 2x40 Display 
sollte die Adresse für die zweite Zeile eigentlich 0x40 sein, der Text 
kommt allerdings völlig zerhackt raus wenn ich das mit 0x40 mache. Ich 
hab schon etliche Adressen durchprobiert aber nichts will für die 2te 
Zeiel so richtig klappen.

Nik

P.S. Die Routine hat sich mit 2x16 und 2x20 Displays schon etliche Male 
bewährt, Fehler im Code denke ich ausschliessen zu können.

P.P.S Das Display hat nur einen dieser HD44780A00 drauf! Also keine 
zweite Enable Leitung

Autor: Andreas Lang (andi84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Öhm? 0x40?
Versuch doch mal 0x28.

Autor: Nik Bamert (nikbamert)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Indeed!

Setze ich die Adresse auf 0x28 und schicke dann 40 bytes, dann ist die 
Zeile voll! Super, dachte ich vorerst und hab mal 0x29 ausprobiert, was 
folglich ja das 2te Zeichen auf der zweiten Zeile sein müsste. Nur..so 
gehts nicht, das schreibt es irgendwo hin, wo ich es nicht sehen kann 
:-( Also echt, dieses Display treibt mich noch zum Wahnsinn...

Autor: Andreas Lang (andi84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Scheint ja nen recht ulkiges Teil zu sein. Bist du dir sicher, dass 
deine Routinen nicht irgendwelche Bits verschlucken/kippen? Verwendest 
du eigenen Code oder eine fertige Library?
Wenn du eigenen Code verwendest, dann oste doch mal den source hier (was 
ist es denn für eine Programmiersprache und für welchen Prozesortyp?) .
Dann könnte man ja versuchen, eventuelle Fehler im Code zu finden.
Sind auch wirklich alle drähte richtig angelötet? Wenn da einer etwas 
wackelig ist, dann hat das auch schon mal ulkige konsequenzen.

Autor: Nik Bamert (nikbamert)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Die Routinen habe ich selbst geschrieben, hab mal das .c File angehängt 
(im .h steht nichts anderes als die Prototypen) Leider ist das File noch 
nicht wirklich übersichtlich, dafür aber kürzer als 100 Zeilen.

Das mit dem Wackelkontakt habe ich mir auch schon gedacht, mal alles 
nachgelötet...wobei es aber sehr unwarscheinlich ist, da ich ein 4bit 
Interface verwende, wenn da ein Pin nicht recht dran ist, dann geht gar 
nichts mehr :P

uC: Atmega168
Compiler: AVR-GCC 3.4.6

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich mache selbst nichts in C, nur ASN, deshlab mal eine Frage:
PORTD=(PORTD&0xF0) | command;

Du holst die Daten von PORTD, maskierst die unteren 4 Bit auf 0, um den 
Zustand Deiner Steuerleitungen zu erhalten.
Dann machst Du ein OR mit command, das enthält doch aber 8 Bit, wer 
garantiert, das da nicht ein Steuerbit auf H gesetzt wird, das 
eigentlich L war?

Müßte es nicht eher
PORTD=(PORTD&0xF0) | (command&0x0F);
heißen?

PS: ein HD44780 hat nur 80 Zeichen Char-Ram. Bei einem 2x40 sind also 
alle Ram-Adressen im Display dargestellt. Selbst wenn Zeichen auf 
falschen Adressen landen, müssen sie sichtbar sein.
Es gibt einfach keinen Rambereich, indem sie verschwinden könnten..,

Gruß aus Berlin
Michael

Autor: Nik Bamert (nikbamert)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Juhuuu!! es geht :-)) Dankeschön vielmals ;)
Verstehen tue ich es aber nicht wirklich, da es so wie ich die Datei 
oben angehängt habe, schon mehrfach tadellos funktioniert hat...

>Du holst die Daten von PORTD

Ich dachte immer, wenn ich PORTD einlese, dann erhalte ich den Status 
der Pullups und um die Daten einzulesen müsste ich PIND verwenden, 
scheint wohl doch nicht so zu sein(?)

Die 80 bytes sind im Ram allerdings doch nicht 'am Stück' sondern wie es 
nach Datenblatt auch sein sollte Zeile 1: 0x00 - 0x27 und Zeile 2: 0x40 
- 0x68

Gruss
Nik

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Du erhälst den Status von PORTD, ja. Wenn er Eingang ist, dann die 
PullUps, wenn er aber Ausgang ist, den Status der Ausgangsleitungen...

Was das "am Stück" angeht, ich habe wohl lange nicht ins Datenblatt des 
HD44780 geschaut. ;)

Gruß aus Berlin
Michael

Autor: Funkrusha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Ich hätte mal noch eine Frage,
kann mir vielleicht jemand sagen, wie das Display angeschlossen wurde?

Ich hab hier eines rumliegen, inklusive HD44780A00 baustein drauf.
Jetzt müsste ich jedoch wissen auf welche Pins ich gehen muss.

C0-C7, E, R/W, ???
Reicht das?

Autor: sie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.