Forum: Mikrocontroller und Digitale Elektronik 2x40 LCD mit HD44780A00


von Nik B. (nikbamert)


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

von Andreas L. (andi84)


Lesenswert?

Öhm? 0x40?
Versuch doch mal 0x28.

von Nik B. (nikbamert)


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...

von Andreas L. (andi84)


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.

von Nik B. (nikbamert)


Angehängte Dateien:

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

von Michael U. (Gast)


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

von Nik B. (nikbamert)


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

von Michael U. (Gast)


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

von Funkrusha (Gast)


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?

von sie (Gast)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.