Wie verschiebt man den Cursor eines ST7032i-basierten LCD?

Ich verwende ein MIDAS MCCOG21605B6W , I2C-Schnittstelle, COG-LCD.

Ich verwende auch einen PIC16F616-Mikrocontroller als Schnittstelle und verändere das I2C-Protokoll.

Ich kann das LCD initialisieren, auf das LCD schreiben, den Cursor an eine beliebige Position navigieren, das LCD löschen, den Kontrast einstellen, das LCD ein- und ausschalten usw. Alles funktioniert, außer den Befehlen 0x10, 0x14, 0x18, 0x1C, die zum Verschieben des Cursors oder der Anzeige nach links oder rechts dienen. Wie kann ich sie zum Laufen bringen? Was mache ich falsch?

Eines ist mir aufgefallen; Wenn ich aus verschiedenen Winkeln schaue und wenn ich den Befehl 0x14 gebe (Cursor nach rechts verschieben) oder andere Verschiebungsbefehle, die ich im obigen Absatz erwähnt habe, sehe ich eine Art Kontraständerung, obwohl es nicht sehr offensichtlich ist, Sie haben den Winkel zu fangen.

Ich habe auch zu Testzwecken nur den Befehl "Shift Cursor to Right" gesendet, der 0x14 ist, und ihn dann auf dem Oszilloskop untersucht, und SDA, SCLK-Leitungen und Daten scheinen in Ordnung zu sein, es wird übertragen und der Slave bestätigt.

Ich habe einen Dummy-I2C-Testercode erstellt, um die Ablaufverfolgungen für SDA und SCLK auf dem Bereich wie folgt anzuzeigen. Sie können auf dem Scope-Shot sehen, dass das LCD im 9. Takt ein ACK erzeugt, indem es die Leitung auf LOW zieht.

software_I2C_startCondition();
software_I2C_sendByte(0x7C);
software_I2C_stopCondition();

Scope-Schuss

Unten sind meine I2C-Routinen und mein LCD-Schnittstellencode.

software_I2C.h

software_I2C.c

Haupt c

Warum die Ablehnung?

Antworten (1)

Sofern ich dies in Ihrem Code nicht übersehen habe, befinden Sie sich immer noch im Modus "Anweisungstabelle 1", aber die Umschaltbefehle befinden sich nur in der Anweisungstabelle 0. Anstatt also die Anzeige / den Cursor zu verschieben, ändern Sie die interne Oszillatorfrequenz. Das Senden eines weiteren Ox38 am Ende Ihrer Initialisierungsroutine könnte ausreichen.

Großartig, es funktionierte wie ein Zauber. Vielen Dank :)