hallo, kennt sich wer mit dem LCD Controller KS0073 aus? Ich hab folgendes Problem (ich hab mir vorher das forum angesehen, und auch die source codes dazu schon ausprobiert funktionieren aber nicht). Ich will mit meinem Atmel µC das Display steuern, und zwar über SPI. Mittlerweile bin ich schon so weit, das ich das Display fertig initialisiert habe, sprich Cursor blinkt. So, mir gelingt es aber nicht ein Zeichen am Display anzuzeigen. Initialisiert habe ich es mit foglenden Kommandos: 0x1F ... Startbyte 0x34 ... 8Bit Datenlaenge, extension Bit RE = 1 0x09 ... 4 Zeilen Modus 0x30 ... 8Bit Datenlaenge, extension Bit RE = 0 0x0F ... Display ein, Cursor ein, Cursor blinken 0x01 ... Display loeschen, Cursor auf 1. Spalte, 1. Zeile 0x06 ... Cursor Auto-Increment Ok, soweit so gut. wie gesagt, cursor blinkt, alles ok. nur welche kommandos muss ich jetzt an das Display schicken, um ein Zeichen anzuzeigen. Ich bin mir nicht ganz sicher ob ich das Manual vom KS0073 (im Anhang) richtig verstehe. Aber muss ich jetzt als nächsten Befehl "Set DDRAM Address" schicken, und dann das Zeichen. Als das wäre dann: 0x80 ... Set DDRAM Address. Als Adresse hätte ich jetzt 0x00 genommen (1. Zeile) 0x53 ... das wäre der Hex-Code für ein "S" Und was bedeutet im Manual das RE-Bit das in der Codetabelle auf Seite 40 z.b. zu sehen ist? Und mit dem R/S und R/W bit kann ich praktisch einstellen, was ich machen will. Da gibts ja die Tabelle auf Seite 10. Aber wie spielen die da mit, wann muss ich die senden?
Hi >Ich bin mir nicht ganz sicher ob ich das Manual vom KS0073 (im Anhang) >richtig verstehe. Aber muss ich jetzt als nächsten Befehl "Set DDRAM >Address" schicken, und dann das Zeichen. Als das wäre dann: >0x80 ... Set DDRAM Address. Als Adresse hätte ich jetzt 0x00 genommen >(1. Zeile) >0x53 ... das wäre der Hex-Code für ein "S" Das Zeichen wird an die Cursorposition geschrieben. Wenn du in eine andere Zeile wechseln willst, musst du die entsprechende Adresse setzen. >Und was bedeutet im Manual das RE-Bit das in der Codetabelle auf Seite >40 z.b. zu sehen ist? S.39 Function Set-> RE-Bit. MfG Spess
Danke für deine Antwort. Habe vielleicht vorher vergessen dazuzuschreiben, das ich die Codesequenz ja schon ausprobiert habe, diese aber kein Zeichen auf das Display zaubert. Auch wenn ich gleich einen Zeichencode z.b 0x53 hinschicke, funktioniert es nicht. Und ich hab mir vorher auch vielleicht etwas unklar ausgedrückt. R/S und R/W sind ja nur 2 bit. wie schauen die anderen 6 aus?
Hi >Und ich hab mir vorher auch vielleicht etwas unklar ausgedrückt. R/S und >R/W sind ja nur 2 bit. wie schauen die anderen 6 aus? Das sind sie beiden Steuerleitungen zum Display. R/S - Auswahl Daten oder Steuerbefehl. R/W - Lesen oder Schreiben. Wenn du R/W nicht benutzt, dann auf L legen. MfG Spess
ok, aber wenn du dir die Konstruktion des Startbytes anschaust (0x1F) dann steht ja da im Manual das eine 5bit 1er folge ist, dann kommt R/S, dann R/W (oder umgekehrt egal jetzt) und dann das Stopbit. so wenn ich jetzt etwas anderes hinschicke, wo R/S und R/W anders gesetzt sind, muss ich dann wieder so eine sequenz schicken oder wie teil ich das dem display mit?
Hi >so wenn ich jetzt etwas anderes hinschicke, wo R/S und R/W anders >gesetzt sind, muss ich dann wieder so eine sequenz schicken oder wie >teil ich das dem display mit? Ich glaube du hast noch etwas Probleme mit dem Verständnis der Displayansteuerung. Bei vollständiger Beschaltung hast du 8 Datenleitungen, R/S-Leitung, R/W-Leitung und E-Leitung. Wenn du einen Befehl an das Display schicken willst muss die R/S-Leitung L und die R/W-Leitung auch L sein. Bei einem Zeichen muss R/S=H und R/W=L sein. MfG Spess
ja aber erstens ich hab keine vollständige beschaltung. sondern die ist schon ausgerichtet für SPI. und zweitens schau lies mal auf seite 50: "Before transferring real data, start byte has to be transferred. It is composed of succeeding 5 “High” bits, read write control bit (R/W), register selection bit (RS), and end bit that indicates the end of start byte."
Hi Du hattest nicht explizit geschrieben, das du den seriellen Mode benutzt. Wenn du jetzt Daten senden willst musst du das erste Byte mit RL=H und RW=L senden. Danach in den nächsten zwei Byte High- und Low-Teil deines Datenbytes. Bei weitere Daten Reicht es, nur die Daten zu senden. Erst, wenn du wieder eine, oder mehrere Instruktions senden wills muss das Startbyte gesendet werden. MfG Spess
aha also sieht dann das praktsich so aus: startbyte: 11111 R/S R/W 0 (oder halt vertauscht, egal) und ab dann daten richtig?
Hi
>richtig?
Also Startbyte:
Bit 7 6 5 4 3 2 1 0
0 R/S R/W 1 1 1 1 1
MfG Spess
ja genau, hab ich eh gemeint. dann probier ich das morgen aus und meld mich wieder obs funktioniert bzw nicht funktioniert hat. danke trotzdem mal
Ich beschäftige mich gerade zufällig mit dem gleichen Thema. Könnte mir bitte jemand erklären was das RE- Bit ist? Lg, Max
Hi >Ich beschäftige mich gerade zufällig mit dem gleichen Thema. Könnte mir >bitte jemand erklären was das RE- Bit ist? Hatte ich doch schon geschrieben: Das ist ein Bit vom Function Set Befehl. MfG Spess
Hab ich gelesen, aber ich steh gerade auf der Leitung :) Wird das seriel gesendet, also vorm R/W, statt dem letzten der fünf 1er, oder muss ein Pin gesetzt werden?
Markus Schütz schrieb: > Hab ich gelesen, aber ich steh gerade auf der Leitung :) Wird das seriel > gesendet, also vorm R/W, statt dem letzten der fünf 1er, oder muss ein > Pin gesetzt werden? Sry, war eine dumme Frage (: Habs schon gesehn
Hier gib es eine *.lib für ein SPI-LCD. www.schorsch.at/content/view/25/2/lang,en/ Ist zwar für ein VLGEM1021, da soll ein KS0074 oder kompatible drinnen sein, vielleicht gehts auch mit einem KS0073.
hallo, so bin jetzt endlich dazu gekommen. zeichen draufschreiben funktioniert jetzt. juhu. hätte aber noch eine frage. um das busy flag abzufragen. reicht es da 0x3F zum display zu schicken oder gehört da noch was?
man ließt das LCD dazu aus !! [pseudocode] busy{ port auf eingang umschalten RS und RW passend setzen enable while ( lcdpin &( 1<< bit 7 ) volatile asm("nop") disable port auf ausgang umschalten }
Hi >man ließt das LCD dazu aus !! >[pseudocode] >busy{... Aber nicht bei der seriellen Ansteuerung. $3F sollte eigentlich passen. MfG Spess
Frage noch zum abfragen des busy flags. wenn man nur 0x3f ist das aber nicht ausreichend oder?. dann muss man noch zweimal 0x00 schicken. erst dann bekomm ich was richtiges ?
Hi >dann muss man noch zweimal 0x00 schicken. erst dann bekomm ich was >richtiges ? Nein. Nur einmal pro Abfrage. Nach dem Senden von $3F liest du mit jeden Senden einer Null das Statusregister. MfG Spess
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.