¿Cómo cambiar el cursor de una pantalla LCD basada en ST7032i?

Estoy usando un MIDAS MCCOG21605B6W , interfaz I2C, LCD tipo COG.

También estoy usando un microcontrolador PIC16F616 para conectarlo y estoy golpeando el protocolo I2C.

Puedo inicializar la pantalla LCD, escribir en la pantalla LCD, desplazar el cursor a la posición que desee, borrar la pantalla LCD, configurar el contraste, encender/apagar la pantalla LCD, etc. Todo funciona, excepto los comandos 0x10, 0x14, 0x18, 0x1C, que son para desplazar el cursor o la pantalla, hacia la izquierda o hacia la derecha. ¿Cómo puedo hacer que funcionen? ¿Qué estoy haciendo mal?

He notado una cosa; cuando miro desde diferentes ángulos, y cuando doy el comando 0x14 (cambiar el cursor a la derecha), o cualquier otro comando de cambio que he mencionado en el párrafo anterior, veo algún tipo de cambio de contraste, aunque no es muy aparente, tienes para capturar el ángulo.

También, para propósitos de prueba, envié solo el comando "Shift Cursor to Right", que es 0x14, luego lo investigué en el osciloscopio, y SDA, SCLK, las líneas y los datos parecen estar bien, se transfieren y el esclavo reconoce.

Creé un código de prueba I2C ficticio para mostrar los rastros de SDA y SCLK en el alcance, de la siguiente manera. Puede ver en la toma del alcance que la pantalla LCD crea un ACK en el noveno pulso de reloj tirando de la línea BAJA.

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

Tiro de alcance

A continuación se muestran mis rutinas I2C y mi código de interfaz LCD.

software_I2C.h

software_I2C.c

C Principal

¿Por qué el voto negativo?

Respuestas (1)

A menos que me haya perdido esto en su código, todavía está en el modo "tabla de instrucciones 1", pero los comandos de cambio solo están en la tabla de instrucciones 0. Entonces, en lugar de cambiar la pantalla/cursor, altera la frecuencia del oscilador interno. Enviar otro Ox38 al final de su rutina de inicialización podría ser la solución.

Genial, funcionó a las mil maravillas. Muchas gracias :)