Hi ich habe dieses Display: http://www.pollin.de/shop/shop.php?cf=produkt.php&ts=0&p=OTg4OTk4 funktioniert bisher alles super hab alles so gemacht wie im Tutorial allerdings funktionert die Zweite Zeile nicht! bin mir aber auch nicht sicher wie man in die zweite zeile schreibt! Muss ich dazu den Cursor in die Zweite zeile stellen? Oder kann ich auch einfach meine Zeichen weiter schreiben also dass das 21. Zeichen automatisch in der zweiten Zeile angezeigt wird? weil dass funktioniert nicht? HAb auch schon die Zeiten für die Initialisierung etwas erhöht bzw. wie in einem ähnlichen Beitrag beschrieben einfach den Befehl für die Initialisierung von 2 Zeilen drei mal geschickt. Jedoch ohne erfolg! Hat jemand sonst noch ne ahnung an was dass liegen kann? ich benutze einfach die lcd routine.asm nur etwas angepasst da ich 8MHz verwende und so schreibe ich LCDschreiben: rcall lcd_clear ; Display löschen ldi temp1, '0' ; Zeichen laden sbrc Geraeteadresse,7 ldi temp1, '1' rcall lcd_data ldi temp1, '0' ; Zeichen laden sbrc Geraeteadresse,6 ldi temp1, '1' rcall lcd_data ldi temp1, '0' ; Zeichen laden sbrc Geraeteadresse,5 ldi temp1, '1' rcall lcd_data ldi temp1, '0' ; Zeichen laden sbrc Geraeteadresse,4 ldi temp1, '1' rcall lcd_data ldi temp1, '0' ; Zeichen laden sbrc Geraeteadresse,3 ldi temp1, '1' rcall lcd_data ldi temp1, '0' ; Zeichen laden sbrc Geraeteadresse,2 ldi temp1, '1' rcall lcd_data ldi temp1, '0' ; Zeichen laden sbrc Geraeteadresse,1 ldi temp1, '1' rcall lcd_data ldi temp1, '0' ; Zeichen laden sbrc Geraeteadresse,0 ldi temp1, '1' rcall lcd_data ldi temp1, ' ' rcall lcd_data ldi temp1, 'G' rcall lcd_data ldi temp1, '=' rcall lcd_data mov temp1, Geraeteadresse rcall lcd_data ldi temp1, '0' ; Zeichen laden sbrc Kommando,7 ldi temp1, '1' rcall lcd_data ldi temp1, '0' ; Zeichen laden sbrc Kommando,6 ldi temp1, '1' rcall lcd_data ldi temp1, '0' ; Zeichen laden sbrc Kommando,5 ldi temp1, '1' rcall lcd_data ldi temp1, '0' ; Zeichen laden sbrc Kommando,4 ldi temp1, '1' rcall lcd_data ldi temp1, '0' ; Zeichen laden sbrc Kommando,3 ldi temp1, '1' rcall lcd_data ldi temp1, '0' ; Zeichen laden sbrc Kommando,2 ldi temp1, '1' rcall lcd_data ldi temp1, '0' ; Zeichen laden sbrc Kommando,1 ldi temp1, '1' rcall lcd_data ldi temp1, '0' ; Zeichen laden sbrc Kommando,0 ldi temp1, '1' rcall lcd_data ldi temp1, ' ' rcall lcd_data ldi temp1, 'K' rcall lcd_data ldi temp1, '=' rcall lcd_data mov temp1, Kommando rcall lcd_data ret
Hallo Thomas, Das mit der zweiten Zeile kann bei dir zwei Ursachen haben: - Entweder du adressierst nicht richtig, die zweite Zeile erreicht man in dem man einfach in den dazugehörigen Adressbereich des LCDController-Rams schreibt, welcher i.R. NICHT direkt an das Ende der ersten Zeile anschließt. (Beim Standart-Controller 44780 ist es z.b. irgendwas mit 0-39 Zeile 1, 40-79 Zeile 2, etc, wobei bei 16 Zeichen-Anzeige dann nur Adressen 0-15 angezeigt werden (den angezeigten Ausschnitt kann man dann mit dem Cursor verschieben, so das Texte gescrollt werden können). Da dein Code nicht offenbart was denn lcd-data tut, lässt sich leider nicht erkennen ob deine Adressierung richtig ist. - Oder, womit ich auch Anfangs zu kämpfen hatte, deine Initialisierung wird vom Controller nicht verstanden. Ohne Initialisierung ist er nämlich defaultmäßig auf nur eine Zeile eingestellt. Die Initialisierung besteht aus zwei Teilen: Die Reset-Anweisung, die ihn zurücksetzt und die Konfigurationsanweisung, mit der du 4/8bit Busmodus, Zeilenzahl etc einstellst. Normalerweise wird der Reset von Kontroller automatisch durchgeführt, wenn die Spannungsversorgung nicht zu langsam ansteigt. Als ich Anfangs dann immer versuchte, ihn explizit laut Datenblatt zu Resetten hatte das auch irgendwie nie geklappt. Als ich die Reset-Anweisung dann rausnahm, und gleich den Konfigurationsteil schickte, klappte es erst. Und das Timing der einzelnen Anweisungen muss dann natürlich auch stimmen, damit er die Konfigurationsanweisung versteht. Die Zeiten wie im Datenblatt angegeben können je nach Befehl varieren, und sind natürlich unbedingt nicht zu unterschreiten. - Und eine dritte Möglichkeit, woran man anfangs gerne scheitert, könnte sein, dass die Kontrastspannung nicht niedrig genug ist, in welchem Fall selbst bei ordnungsgemäßen Anweisungen die Zeichen von der Logik dargestellt werden, aber mangels Kontrast "unsichtbar" bleiben. Ob der Konfigurationsteil aber klappt, lässt sich einfach herausfinden, in dem man den Kontrast sehr hoch (also Spannung nahe 0V, evtl auch leicht negativ) stellt. Unreseted ist er noch im 1 Zeilen Modus, wodurch sich auch nur die obere Zeile dunkel verfärbt. Wenn sich beide Zeilen dunkelverfärben hat der Init geklappt, und es ist vermutlich ein Adress-Problem. Gruß, Moritz
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.