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
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...
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.
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
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
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
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
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.