hallo benutze das display dip204-4 (20Spalten / 4Zeilen) habe ein problem mit den adressierung der zeilen. laut datenblatt wäre es: 0x00 0x20 0x40 0x60 jedoch funktioniert dies nicht ganz... zweites problem ist, nach spalte 13 springt es automatisch auf zeile 2! kann jemand helfen? im anhang der code fürs display.. initialisierung bin ich auch nicht ganz sicher obs stimmt?! kontroller ist ks0073 und nicht hd44780 gruss
Wenn du dir die Speicherzuweisung im Datenblatt des KS0073 ansiehst, wirst du merken das er nur 24 Zeichen speichert ( ohne Extenion ) -> 24 / 2 -> 12, dh. das die 2. Zeile ab Speicherstelle 13 beginnt, da für 2 Zeilen nur ein KS0073 verwendet wird.
aber das display hat 4Zeilen 20spalten mit integriertem kontroller. kann ja nicht sein das nur 24 zeichen dargestellt werden können? wie weiter?
Hallo, habe mich nicht durch Deine unkommetierten Bitmuster beim Init gekramt, den 4-Zeilen-Mode bei der Extended Funktionen hast Du aber gesetzt? Gruß aus Berlin Michael
jein... was ist genau das RE Bit? das muss ja auf 1 gesetzt werden, um dies zu erledigen..
Hallo, RE ist bei Function Set, wenn das mit 1 geschrieben wurde, wird auf den Extended Registersatz umgeschaltet. Am Schluß eben wieder mit RE = 0 ausschalten. Gruß aus Berlin Michael
Problem, wenn RE aber wieder auf 0 zurückgesetzt wird, wird N auch geändert --> d.h. die Anzahl Zeilen..??
>Problem, wenn RE aber wieder auf 0 zurückgesetzt wird, wird N auch >geändert --> d.h. die Anzahl Zeilen..?? Nein, N wird nicht mehr beachtet wenn du auf 4 Zeilen umgeschaltet hast.
Hallo, RE schaltet den Registersatz um. Schau Dir die Liste mal an, es gibt fast überall Bedeutungen mit RE = 1 und RE = 0. Also RE in seinem Register auf 1, zusammen mit den Werten für DL, N, BE, LP setzen. Den Kram in den Extended Registern einstellen und am Schluß das Register mit RE = 0 und passendem DL, N, DH, REV setzen. Wenn NW auf 1 ist (4 Zeilen) wird laut Datenblatt N sowieso ignoriert. Gruß aus Berlin Michael
denke meine initialisierung ist jetzt richtig: void lcd_init(void) { delay_ms(40); RS=RW=0; lcd_send(0b00101100,1); //function set --> RE=1! delay_us(50); lcd_send(0b00001001,1); //extended function set delay_us(50); lcd_send(0b00100000,1); //function set --> RE=0! delay_us(50); lcd_send(0b00100000,1); //function set in 4-Bit Mode delay_us(50); lcd_send(0b00001100,1); //Display On-Off Control delay_us(50); lcd_send(0b00000001,1); //Display Clear delay_ms(2); lcd_send(0b00000110,1); } jedoch klappt es immer noch nicht mit den 4-Zeilen. Nach zeile 0 springt es automatisch auf zeile 2 und nicht auf zeile 1. Die Zeilen 1 und 3 sind sozusagen unbrauchbar! Hier noch die lcd_send() funktion: void lcd_send(int8 value, int1 four) { delay_cycles(1); EN=1; D7=bit_test(value,7); D6=bit_test(value,6); D5=bit_test(value,5); D4=bit_test(value,4); delay_cycles(1); EN=0; //Oberes Nibble senden delay_cycles(1); if(four) { EN=1; D7=bit_test(value,3); D6=bit_test(value,2); D5=bit_test(value,1); D4=bit_test(value,0); delay_cycles(1); EN=0; } delay_us(30); }
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.