Hallo, ich experimentiere gerade mit folgendem Display herum: http://www.noritake-itron.com/Specs/CU-U/CU20049SCPB-W2J-01.pdf Das Display funktioniert auch, jedoch klappt die Zeilenaufteilung nicht so ganz. Ich habe das Display schon einmal am Parallelport mit LCDSmartie als HD44780 betrieben, was auch wunderbar funktioniert hat. Am AVR beschreibt das Display (4x20) die Reihen nicht wie normal (1-2-3-4) sondern 1-3-2-4. Was kann ich dagegen machen? Ich schreibe mal alles, was an das LCD an Kommandos geschickt wird: Zuerst wird lt. dem Wiki Eintrag 3mal hintereinander 0b00110000 geschickt. Hier meine Verständnisfrage: Laut Datenblatt des HD44780 sendet das den Befehl, um den 8Bit-Modus einzustellen. Warum muss man das 3mal hintereinander senden? Was hat das für einen Sinn? Dann kommt 0b00111000 für ein Display mit 2/4 Zeilen und den 8-Bit-Modus, 5mal7 Font. Dann 0b00001111 für Display und Coursor blinkend an. Und dann noch 0b00000100 für Cursorpos. dekrementiern und Displayinhalt fest. Dann wird das Display noch mit 0b00000001 gecleared und fertig. Wieso bockt mein Display da so rum?
schick mal dein prog, ich hatte die Dinger schon im Einsatz
Das bockt nicht, es ist normal. Also füge deinem Programm die entsprechenden Cursorpositionen hinzu.
Hi! Ich hatte lang nichts mehr mit dem HD44780 zu tun, kann daher viele deiner Schritte nicht ganz nachvollziehen. Trotzdem vermute ich, dass dieser Link dir vielleicht weiter helfen könnte: http://sprut.de/electronic/lcd/
Hi, das liegt daran, dass 2 40-Zeichen-Controller verwendet werden. Das heißt, das Ende der 1. Zeile wird am Anfang der 3. Zeile fortgesetzt. Der 2. Controller fängt in Zeile 2 an und wird in Zeile 4 fortgesetzt. Hatte das gleiche Problem, ist verwirrend, geht aber ganz gut.
Sowas ähnliches habe ich mir scho gedacht und befürchtet. Also Cursorposition spätestens nach jedem 20ten Zeichen neu setzen? Ist wenigstens die von 0-80 linear durchnumeriert? Also oben links eben 0 und unten rechts 80? Und wie kann ich die dann setzten? Mein Programm habe ich angefügt. Alle, die meine Schritte nicht nachvollziehen können, sollen mir bitte sagen wo genau, ich erkläre das dann. Und wenn einer weiß, warum man diese 8Bit Anweisung 3mal am Anfang senden muss, soll er sich bitte melden. WICHTIGE ANMERKUNG: Die Funktionen sind alles abgeänderte Versionen des LCD-Tutorials hier im Wiki. Ich verstehe eben diese Anweisung von dort auch nicht ganz, das könntet ihr euch ja auch nochmal durchlesen.
Hallo, die Zuordnung der internen Ram-Adressen hat a) der Controllerhersteller und b) teilweise der Displayhersteller getroffen. "Und wenn einer weiß, warum man diese 8Bit Anweisung 3mal am Anfang senden muss, soll er sich bitte melden." Weil es der Hersteller so beschlossen hat (und sicher auch weiß, warum). Ansonsten: Datenblatt des Display-Controllers nehmen, da steht alles wichtige drin. Gruß aus Berlin Michael
Also bei meinem Display ist die Startadresse von Zeile 1 0x80. Dann kann ich bis zum Ende der Zeile 3 durchschreiben. Anfang Zeile 2 ist 0xC0 und kann bis Ende Zeile 4 duchgeschrieben werden. Wie mein Vorredner sagte: steht alles im Datenblatt.
Also gut, dann werde ich mir jetzt das Datenblatt besorgen, dachte immer die Infos im Wiki wären ausreichend. Danke für eure Hilfe.
Hallo, ja, die x*20-Zeichen-Dosplay sind üblicherweise so. Bei x*16 fehlen dann hinten die 4 Zeichen, die Anfänge bleiben identisch. Mir sind aber auch schon Exoten begegnet, ich habe ein 2x16, das ist als 4x8 organisiert... Durchgehenden Text über mehr als eine Zeile mußte ich noch nie ausgeben, so richtig stört es mich also nicht. ;) Gruß aus Berlin Michael
>dachte immer die Infos im Wiki wären ausreichend.
Da wäre ich vorsichtig. Wiki ist auch nur ein Forum, da jeder dran
ändern kann, also keine 100%ige Informationsquelle.
Naja ich hab die Adressen jetzt herausgefunden, war nicht ganz einfach ist auch nicht ganz logisch, aber funktioniert.
Florian Glaser wrote: > Naja ich hab die Adressen jetzt herausgefunden, war nicht ganz einfach > ist auch nicht ganz logisch, aber funktioniert. Muss ich das jetzt verstehen? Bei den Text-LCDs, die mir bisher in die Finger kamen, war die Zuordnung der Adressen zu den Ausgabepositionen immer im Datenblatt angegeben. Nur einmal stimmte es nicht, das war ein 8x24-LCD mit Controller MS50530, da war die korrekte Zuordnung aber schnell gefunden. ...
Oft liegt's auch daran, wenn der Busy-Pin nicht ausgewertet wird, dass die Pausenzeiten zwischen den Befehlen zu kurz sind. Dann werden Zeichen 'verschluckt' und die Positionierung stimmt nicht mehr. Die LCDs sind auch sehr Temperaturempfindlich, wenn's kalt wird werden die sehr Träge.
Sonic wrote: > Oft liegt's auch daran, wenn der Busy-Pin nicht ausgewertet wird, dass > die Pausenzeiten zwischen den Befehlen zu kurz sind. Dann werden Zeichen > 'verschluckt' und die Positionierung stimmt nicht mehr. Das ist wahr. Ich betreibe Text-LCDs inzwischen nur noch ohne Busy-Abfrage (einen "Busy-Pin" haben die von mir verwendeten LCDs nicht). Die Ausgabe des nächsten Zeichens erfolgt in der Mainloop nur dann, wenn ein sowiso laufender Timer das entsprechende Flag gesetzt hat. Da ich nicht so schnell lesen kann, passiert das alle zwei Millisekunden. Das normale Benutzerprogramm merkt davon nichts, denn es schreibt (mit LCD_DATA) nicht auf das LCD, sondern in einen "Bildschirmspeicher" im SRAM. Das geht sehr schnell und erfordert keine Wartezeiten. Das zyklisch aufgerufene LCD_UPDATE liest die Zeichen aus dem Bildschirmspeicher und gibt sie an das LCD aus. Dabei überprüft es die Zeilengrenzen im Bildschirmspeicher und positioniert bei Zeilenwechsel das LCD auf die neue Ausgabeposition (SET DD-RAM-ADRESS). Der Bildschirmspeicher ist somit ein Abbild der tatsächlichen Anordnung der Zeichen und ist anders organisiert als das LCD. Das geht hervorragend und ist recht effizient, geht also recht sparsam mit Rechenzeit um. > Die LCDs sind > auch sehr Temperaturempfindlich, wenn's kalt wird werden die sehr Träge. Auch das stimmt. Wenn man (bei Verzicht auf Busy-Abfrage) in der Zwischenzeit zwischen den Zeichenausgaben nicht in einer Warteschleife hängt (WAIT_MS xyz), sondern die anderen anstehenden Aufgaben erledigt, dann kostet es nichts, die Zeichenausgabe zu verlangsamen. ...
das ist ganz einfach: es war deshalb nicht ganz einfach, da der hersteller meines displays, noritake itron, nur eine art beipackzettel herausrückt ein vollständiges datenblatt muss man beantragen und ich bekam bis jetzt nie eine antwort. nur dort stehen auch die adressen drin.
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.