Hallo Alle Ich habe ein alphanumerisches 4x20 Display mit KS 0073 Controller. Dieser Controller soll fast zu 100% kompatibel zum HD44780 sein. Um das Display jedoch im 4 Line Mode betreiben zu können muss man ja irgendwie den extended mode aktivieren bzw. auf das extension Register zugreifen, aber wie funktioniert das. Momentan kann das Display nicht einmal mit sich selbst umgehen. Wenn man diesen Text (eins/zwei/drei/vier/fünf/sechs/sieben/acht/neun/zehn/elf/zwölf/dreizehn /vierzehn) an die erste Position der ersten Zeile schreibt, dann sollte doch das Display immer weiter schreiben bis zum Ende der 4. Zeile. Macht es aber nicht, manche Wörter schreibt es doppelt und andere wiederum lässt es weg. Auf dem angehängten Bild ist die Anzeige abgebildet. Vielleicht weiß ja irgendjemand was ich falsch gemacht habe. Vielen Dank im Voraus René
schreibst du den text einmal auf das display oder mehrmals hintereinander?
Hallo Tobi Den Text schreiben wir einmal. Ciao René
Hallo, das Problem habe ich auch. Bei einem 2x16 oder 2x24 Zeichen Display habe ich bis jetzt keine Probleme gehabt. dort kann ich jedes einzelne Zeichen Adressieren. Bei einem 4x20 Display haut das mit der Adressierung nicht mehr richtig hin. Das Display schreibt dann z.B. mittig von der 1. Zeile das Gleiche wie am Anfang von der 2. Zeile, obwohl es nur in die 2. Zeile schreiben soll. Muss solch ein Display vielleicht anders initialisiert werden? Wie kann ich dem LCD z.B. mitteilen, dass es ein 4-Zeilen LCD ist? Vielen Dank für Eure Beiträge. Gruß, Holger
hallo is nicht die 1. und 3. sowie 2. und 4. die selbe?? bei meinem 4 zeiler is das so beim start zeigt er auch zwei "schwarze streifen" in der 1. und "3."zeile gruss juergen
Ja, normalerweise sollte ein 4x20 LCD ein in der Mitte durchgeschnittenes 2x40 LCD sein. Deshalb wundert es mich ja auch, warum der Text von René nicht richtig abgebildet wird. Das LCD müsste ja eigentlich vom letzten Zeichen in der 1. Zeile zum 1. Zeichen in der 3. Zeile weiterschreiben. Aber irgendwie wird da wieder was überschrieben, oder so. Gruß, Holger
hallo das etwas "unscharfe bild" sieht so aus als wenn der eeprom durcheinander ist solche bilder hatte ich auch schon hinbekommen "bei falscher addressierung des eeprom zumindest" .-}
HI, welche Sprache nutzt du fuer den µC? wenn es C ist befindet sich ein Beispiel in der Codersammlung von mir. Ich steuer das LCD per HW SPI an. Wie steuerst du das LCD an 4Bit o. 8Bit? Zeig doch mal bitte deine Routinen. Mfg Dirk
Verwendet ihr die LCD-Bibliothek von Peter Pfleury? Dann könnte ich euch mit drei Zeilen Code aushelfen, der das genannte Problem behebt! Habe mich auch mal nen halben Tag damit rumgeplagt. Allerdings kann man sich auch einfach das Datenblatt des KS0073 nehmen und kommt auch darauf. Gruß, Alex
Hallo Alex, schick mir doch mal die diese Bibliothek inkl. deiner Änderung (oder poste sie), dann werden wir sie verwenden wenn es damit klappt. Danke für Deine Hilfe. rene@et-x.de ciao rene
Ok, ich hoffe mal, Peter Pfleury hat damit kein Problem. Geändert wurde von mir: - Anfügen der Zeilen lcd_command (0x2C); lcd_command (0x09); lcd_command (0x28); in der lcd_init (...) - Einfügen der Funktion lcd_clrline (...) Im Header-File müsst ihr Port und Pins anpassen. Ich habe das LCD im 4-Bit Modus wie hier im Tutorial dargestellt beschrieben (nur ein anderer Port). Ich hoffe, es hilft euch weiter. Alex
Hallo wenn ich das auf dem Bild richtig erkannt habe, habe ich das gleiche Display. Ich habe es noch nicht weiter benutzt hatte mir aber schonmal dieses pdf , http://www.lcd-module.de/deu/pdf/doma/dip204-4.pdf , gezogen da ist die initialiesierung und die adressbelegung erklärt und das sogar in deutsch vielleicht könnt ihr damit was anfangen. Mich würde noch interressieren wo ihr das Display herhabt und was ihr dafür bezahlt habt ich hab so um die 30 Euro dafür hingelegt. Gruß Nico
Hallo Nico ja, wir haben das auch von lcd-module. Preis weiß ich leider nicht mehr, müssten dann aber auch so um die 30 Euro gewesen sein. Danke für Deine Hilfe, werde mir gleich mal das Datenblatt anschauen. Ciao René
Hallo, mit Euren Antworten kann man ja mal richtig was anfangen... @Alex: Ich glaube die Befehlszeilen hatte ich auch schon in meinem Quelltext. Hat aber nicht wirklich geklappt. In der Initialisierung die ich hier habe wird das LCD zwischendrin als 2-Zeilen LCD initialisiert. Muss das dann weggelassen werden und stattdessen Deine Befehlszeilen dort hin, oder werden Deine befehle einfach hinten an die "standart"-initialisierung rangehängt? Das man bei dem 4-Zeilen-LCD irgendwie das RE-Bit setzen muss habe ich fast befürchtet. Wird es einmal gesetzt und ist dann solange aktiv, bis es wieder rückgesetzt wird? @"rest": danke und weiter so :o) Gruß, Holger
Auf ein solches Display bezogen sich meine Angaben.
Falls noch nicht alles geklärt ist: Im Internet findet man das "KS0073.pdf" Datenblatt. Das extension- Register RE wird mit "Function Set"-Befehl gesetzt (00XX X(RE)XX); es entspricht also Bit 2 in diesem Befehl. mfg ruepel
Hallo Alle, danke für eure Hilfe, jetzt läuft das Display. Die Antwort von ruepel ist die Richtige. Mit dem Befehl kann man in den extended MOde gehen und die entsprechenden Einstellungen vornehmen. HAt jemand von euch mal eine Peter Fleury Datei für mich wenn man das Display im 4 Bit Mode an einem Mega 8 an Port D betreiben will? Der Alex hat ja freundlicherweise eine Datei angehängt, aber ich als blutiger Anfänger weiß leider nicht was ich da alles ändern muss, und außerdem steht der Mega 8 da irgendwie nicht drin. Vielen Dank im Voraus René
Muss er auch nicht. Musst bloß in der lcd.h den Port von PORTC auf PORTD ändern. Anschluß wie hier im Tutorial beschrieben. Dann einfach lcd_init ausführen und danach kannst du per lcd_puts beliebige Texte aufs Display schreiben. Schau dir doch einfach die Funktionen an, der Code ist ja gut dokumentiert worden.
Hallo Alex, danke, mein Display ist auf jeden Fall so angeschlossen wie im Tutorial. Na dann will ich mal mein Glück versuchen. Danke nochmal Ciao René
@ Alex Muss man aus der Datei wirklich nichts mehr auskommentieren? was ist mit diesen #if #else Angaben? Leider bin ich absoluter Beginner, sorry. Wenn ich im Hauptprogramm lcd_init(); aufrufe, dann sagt er: error: too few arguments to function lcd_init Ich verzweifle.... Ciao René
dann übergib mal ordentlich lcd_init (LCD_DISP_ON); Auskommentieren musst du nichts. too few arguments = zu wenig argumente übergeben Hätte dir aber auch jedes Wörterbuch sagen können :-)
@ Alex Ich habe schon gewußt was das heißt, das hat mir aber auch nicht viel geholfen. Jetzt klappt es auf jeden Fall. Auf meinem Display steht hello world und zwei lustige schwarze Balken sind noch da. Vielen Dank für Deine Hilfe. Ciao René
@ Alex noch einmal wie kann ich denn den Wert einer Variablen ausgeben? Wenn ich sage: lcd_putc(v1); dann schreibt er nur einen Hyroglyphen an eine stelle, obwohl der Wert der Variablen 3-stellig wäre. Danke im Voraus rene
hmm du soltest eine funktion benutzen, die zahlen in strings umsetzt ;-) und dann zeichen für zeichen ausgeben so zum beispiel void IntToString(char str[], int value) { int i, sign; if((sign = value) < 0 ) { value = -value; } i = 0; do { str[i++] = value %10 + '0'; } while((value /= 10) >0); if (sign < 0) { str[i++] = '-'; } str[i] = '\0'; reverse(str); } void reverse(char str[]) { int c, i, j; for(i = 0,j = strlen(str)-1; i < j; i++, j--) { c = str[i]; str[i] = str[j]; str[j] = c; } }
Hallo KoF, kann mir gar nicht vorstellen dass so etwas in der Peter Fleury datei noch nicht enthalten sein soll, die ist doch super umfangreich.. Danke dafür ciao René
ich weiß nicht, was dabei ist! ich habe/benutze sie nicht! wenn sie vorhanden ist, dann nim sie, wenn nicht, nimm meine ;-)
@ Alex soll ich die Funktion einbauen, oder kann die fleury datei so etwas? Daanke und ciao René
Hallo Leute, vielen Dank für diesen Beitrag! Ich habe durch einmaliges Vertauschen der I/O-Pins den Controller auf 4x12 Zeichen umgeschaltet. Dank Euch konnte ich das Display wieder zurück auf 4x20 zurückschalten: Einfach einmalig 0x24 0x09 0x28 senden und schon war alles wieder gut. :-) Gruß Chris
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.