Hi@all Ich habe das Wintek lcd(4*27) von Pollin über den 4 bit bus an den portd meines Attiny2313 angeschlossen. R/W ist dauerhaft auf low, weil ich das busyflag nicht auslesen will. Wenn ich jetzt den beiden strom gebe, initialisiert sich das Display anschienend nicht. Kann evtl. jemand von euch mal nachsehen, was an dem code nicht stimmt? Ich könnte mir vorstellen, das es an der Übertragung der Daten ab der Umschaltung in den 4bit mode liegt(das teste ich jetzt noch)oder aber an den timings. GEstern hatte ich auf jeden Fall schonmal "Hello world" g. Jetzt sind es nur zwei Balken(Display bekommt Strom, initialisiert aber nicht..) Danke mit freundlichen Grüßen Daniel edit: initialisierung von: www.sprut.de/electronic/lcd/index.htm
Daniel ***** wrote: > hier der code Hmmm... Versuche mal den Code im Anhang zu verstehen und baue, falls erforderlich, das Busywait aus (durch Warteschleife ersetzen). Der Code werkelt seit April 2005 zuverlässig vor sich hin. Die Warteschleife wurde mal halbherzig geändert, da stimmen Labels und Kommentare nicht mehr überein. Das im Anhang ist aber nur die LCD-Routinensammlung. Wie diese in ein Programm eingebunden werden kann, siehst Du z.B. hier: Beitrag "Re: MENÜ-STEUERUNG" Viel Erfolg... ...
Danke Hannes, jetzt weiß ich auch mal, das man das busyflag auch nibble-weise abfragen muss g. Ich habe ein bischen am Timing rumgespielt, die initialisierung etwas umgeschrieben und schon gehts! MfG Daniel
HAllo nochmal. Um in die zweite Zeile zu kommen muss man doch 0b11000000 als Befehl ausgeben oder? Bei mir funktioniert das nicht. MfG Daniel
An_der_Theke_r wrote: > HAllo nochmal. > > Um in die zweite Zeile zu kommen muss man doch 0b11000000 als Befehl > ausgeben oder? Um in irgendeine der 4 Zeilen zu kommen, muss diese mit dem Macro "locate" ausgewählt werden. Dieses Macro wählt den zuständigen Controller aus und setzt die (der gewünschten Schreibposition) entsprechende DD-RAM-Adresse im LCD. Die Befehle (zum LCD) dazu habe ich jetzt nicht im Kopf, um die hatte ich mich gekümmert, als ich vor Jahren die Routinen schrieb. Bei neueren Projekten nutze ich übrigens eine andere Routine, da wird im SRAM des AVR ein Bildschirmspeicher verwaltet, der im Hintergrund an das LCD gesendet wird. Leider habe ich für das 4x27-LCD momentan keine "aufgeräumte" Routinensammlung parat, die letzten Projekte waren mit 8x24-LCD. > Bei mir funktioniert das nicht. > > > MfG > Daniel ;-) ...
"Um in irgendeine der 4 Zeilen zu kommen, muss diese mit dem Macro "locate" ausgewählt werden." ----ich glaube, es ist nicht ganz klar geworden, das _mein code jetzt geht. Deswegen frage ich mich, wie man mit dem Befehl, um den pointer im DD-Ram zu setzen, die zweite zeile erreicht, weil es mit dem befehl oben scheinbar nicht geht. Sorry wegen dem Missverständniss MFG UNDERTHEKER*g*
Set DDRAM adress: 0b001A6A5A4A3A2A1A0 Wobei A6 bis A0 die Adresse darstellen. Zweite Zeile fängt soweit ich weiss bei bzw. mit 40 an.
interessent wrote: > Set DDRAM adress: 0b001A6A5A4A3A2A1A0 > > Wobei A6 bis A0 die Adresse darstellen. Zweite Zeile fängt soweit ich > weiss bei bzw. mit 40 an. a6-a0=7bit +001 --------- 10bit Da kann doch was nicht stimmen...
Daniel ***** wrote: > "Um in irgendeine der 4 Zeilen zu kommen, muss diese mit dem Macro > "locate" ausgewählt werden." > > ----ich glaube, es ist nicht ganz klar geworden, das _mein code jetzt > geht. Nunja, ich ging davon aus, dass Du Dich von Deinem Code getrennt hast. Beim kurzun Überfliegen Deines Codes sah ich, dass Du sehr umständlich arbeitest, also Vieles separat erledigst, was zusammengefasst werden kann. Mein Code dagegen kümmert sich per Locate selbstständig um die Controllerwahl, denn die beiden Controller werden nicht (wie bei Dir) in getrennten Routinen behandelt, sondern in gemeinsamen Routinen und werden durch Variable (durch Locate voreingestellt) unterschieden. > Deswegen frage ich mich, wie man mit dem Befehl, um den pointer im > DD-Ram zu setzen, die zweite zeile erreicht, weil es mit dem befehl oben > scheinbar nicht geht. Die Ausgabeposition wird durch Senden von 0b1xxxxxxx über LCD_Command gesetzt (Set DD-RAM-Address), wobei "x" für die Adresse steht. Die erste Zeile beginnt an Adresse 0, die zweite an Adresse 64. Das Senden von $C0 (0b11000000) ist also richtig. Aber vielleicht haperts ja noch irgendwo am Timing oder ganz woanders. Ich habe mir Dein Programm nicht bis ins letzte Detail angesehen, es ist mir einfach zu benutzerunfreundlich (Sorry). > Sorry wegen dem Missverständniss > > MFG > UNDERTHEKER*g* Un(ter) der Theke?? - Ich dachte "An der Theke (stehende)r"? Schlimmes Deutsch. Na egal, dann eben Der, der die letzte Ruhestätte gräbt... g Gruß, Hannes
Daniel ***** wrote: > interessent wrote: >> Set DDRAM adress: 0b001A6A5A4A3A2A1A0 >> >> Wobei A6 bis A0 die Adresse darstellen. Zweite Zeile fängt soweit ich >> weiss bei bzw. mit 40 an. > > a6-a0=7bit > +001 > --------- > 10bit > > Da kann doch was nicht stimmen... Nunja, der Interessent hat RS und R/W aus der Tabelle im Datenblatt mal schnell mit zu den Datenbits gezählt. ;-) ...
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.