Hallo zusammen! Ich habe ein LCD (2x16) von Electronic Assembly mit einem HD44780 Controller an einem Atmega32 im Einsatz. Die Routinen zur Ansteuerung habe ich aus dem AVR-Tutorial 1:1 übernommen. Aus irgendeinem Grund bekomm ich aber nie mehr als die ersten 8 Zeichen in der ersten Zeile angezeigt. bei "Hello World" also nur "Hello Wo". Ich finde den Fehler einfach nicht. Woran kann das liegen? Viele Grüße, Luke
Der Speicher des LCD ist anders organisiert. Schreibe ihn mal komplett mit sinnvollen Zeichen voll und rechne daraus zurück welcher Buchstabe an welcher Adresse steht. Das Bit für Zweizeilen-Initialisierung ist ja hoffentlich gesetzt.
Ich habe den Cursor auf Auto Increment, der müsste nacheinander alle Zeichen aufs Display schreiben, er schreibt aber nur die ersten 8. Die Initialisierung sieht folgendermaßen aus: rcall delay5ms dec temp3 brne powerupwait ldi temp1, 0b00000011 out PORTD, temp1 rcall lcd_enable rcall delay5ms rcall lcd_enable rcall delay5ms rcall lcd_enable rcall delay5ms ldi temp1, 0b00000010 out PORTD, temp1 rcall lcd_enable rcall delay5ms ldi temp1, 0b00101000 rcall lcd_command ldi temp1, 0b00001100 rcall lcd_command ldi temp1, 0b00000100 rcall lcd_command Ich komme einfach nicht dahinter...
Sorry, ich weiß (noch) nicht wie ich einen 80 Zeichen String schreibe in Assembler. Wie gesagt, ich habe das Tutorial auf dieser Seite durchgearbeitet, bzw, bin grade bei dem Display angekommen. Ich lese parallel auch schon andere Beiträge in diesem Forum, bin aber noch nicht weiter gekommen. Ich würde mich über jede Unterstützung sehr freuen!!
Luke wrote: > Sorry, ich weiß (noch) nicht wie ich einen 80 Zeichen String schreibe in > Assembler. Hallo, schau mal weiter im Tutorial unter Speicher/Flash-ROM Gruß Sebastian
Das hilft mir im Moment leider überhaupt nicht weiter. Ich verstehe auch (noch) nicht was es bringen soll, den Speicher des Displays mit einem 80 Zeichen-String voll zu schreiben. Das tue ich doch auch wenn ich die Zeichen nacheinander (so wie im Tutorial) schreibe oder?
Du beschreibst das Display vermutlich zu schnell, füge mal zwischen den Bytes Pausen ein, dann wird's wohl klappen! Wenn du das Datenblatt des Displays gründlich studierst solltest du das Busy-Bit (Umschaltung von R/W) abfragen können, was hierzu sehr nützlich ist.
Ich vermute halt das es ab dem achten Zeichen wo anders im Datenram weitergeht. In dies Fall würde ich das gesamte RAM vollschreiben und von den Zeichen, die dann auf den jetzt noch leeren Plätzen des Displays stehen, auf die Adresse zurückschließen. Aber man hinterfragt ja lieber ewig als eine Minute in copy&paste zu investieren ;)
Vielleicht hilft dir das weiter um das Display besser zu verstehen: http://www.ulrichradig.de/site/infos/pdf/LC.pdf Gruß Elektrikser
Luke wrote: > Das hilft mir im Moment leider überhaupt nicht weiter. Ich verstehe auch > (noch) nicht was es bringen soll, den Speicher des Displays mit einem 80 > Zeichen-String voll zu schreiben. So ein HD44780 kann maximal 80 Zeichen verarbeiten, egal wieviele Zeichen Dein Display hat. Die Adressen müssen aber nicht durchgängig sein ! Wenn Du ein String von 80 Zeichen ausgibst, schreibst Du den Speicher voll und dann schaust Dir mal an was auf Deinem Display draufsteht. Gruß Sebastian
Hallo, hat das Ding wirklich einen HD44780 drauf oder einen kompatiblen? Welcher Displaytyp ist es? Electronic Assembly bietet ja mehrere 2x16 an. @*.*: durchaus Zustimming. Zumal diese Übung ihm mehr Verständnis der Programmierung und der LCD-Display-Controller bringen würde, als einen Ratschlag einzubauen, der dann geht, ohne verstanden zu haben, was man da eigentlich gemacht hat. Gruß aus Berlin Michael
Wenn du ein standard-Teil hast sollte die erste Zeile bei Adresse 0x80 anfangen und schreibt bis 0x8F, wobei hier die letzten 8 Zeichen nicht sichtbar sind. Die 2. Zeile fängt dann bei 0xC0 an und geht bis 0xCF, wieder die letzten 8 Zeichen nicht sichtbar. Wo genau die Startadressen für die Zeilen sind steht sicher im Datenblatt.
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.