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

2

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

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

Puedo inicializar la pantalla LCD, escribir en la pantalla LCD, mover 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 (mover 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, tiene para captar el ángulo.

También, para fines de prueba, he enviado solo el comando "Cambiar cursor a la derecha", que es 0x14, luego lo he investigado en el alcance, y SDA, SCLK líneas y datos parecen estar bien, se transfiere y el esclavo reconoce.

He creado un código de prueba I2C ficticio para mostrar las trazas para SDA y SCLK en el alcance, de la siguiente manera. Puede ver en la captura de 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();

AcontinuaciónsemuestranmisrutinasI2CymicódigodeinterfazLCD.

software_I2C.h

software_I2C.c

main.c

    

1 respuesta

4

A menos que haya omitido 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. Así que, en lugar de cambiar la pantalla / cursor, modifica la frecuencia del oscilador interno. Enviar otro Ox38 al final de su rutina de inicialización podría hacer el truco.

    
respondido por el fm_andreas

Lea otras preguntas en las etiquetas