Los mejores valores para R y C para el controlador LCD

0

Este es un circuito que incorporé en mi proyecto principal para manejar un LCD. Para C1, utilicé un condensador de disco cerámico de 2.2 nF y la resistencia es de 100 K, que, según una calculadora RC básica, es aproximadamente 220 uS, pero las calculadoras tienen más opciones (como las que requieren voltaje de fuente y voltaje de salida como entradas al calculador) incluido uno en enlace ) desecharme porque diferentes valores de voltaje generan diferentes retrasos.

Creé este controlador porque se me acabaron los pines GPIO del microprocesador libre. En su lugar, fusioné el pin de entrada (LCDCLK) con la entrada de un registro de desplazamiento, de modo que cuando comienza el primer flanco ascendente, el primer byte entra en el registro de desplazamiento. Luego, si no hago nada por la ventana de tiempo (que es una cantidad de tiempo establecida antes de que Q baje, lo que pensé es igual a R veces C), entonces la LCD procesa la instrucción ya que las salidas del registro de cambios se conectarán a la LCD.

Incluso he intentado organizar mi código para que los bytes se envíen a la pantalla LCD lo más rápido posible (que está por debajo de 25 uS) y luego agregué deliberadamente un retraso de 220 uS para asegurarme de que el controlador agote el tiempo y deje la línea E baja E es el pin de entrada LCD al que se conecta la salida de este controlador), entonces incluso agregué otro retraso de 50 uS y cuando envío instrucciones, también agregué un retraso de 5 ms.

Cuando pruebo todo, parece que lo único que se ejecuta es la instrucción de configuración de LCD (38h). La pantalla LCD es una pantalla de 16x2 con luz de fondo.

Estoy tratando de averiguar qué está mal. Puedo pensar en estas cosas:

  1. Los 15 LCD que ordené en línea son basura (aunque al encenderlos sin instrucciones, muestran una barra que se espera).

  2. La ventana de sincronización en la que envío instrucciones a la pantalla es mala (sin embargo, verifiqué la hoja de datos y espero una ventana de sincronización mínima de 500 nS, sin embargo, toma aproximadamente 1 uS cargar un bit de datos)

  3. Estoy usando valores incorrectos de resistencia / condensador por otras razones

  4. Debería aumentar los retrasos después de que se complete la ventana de tiempo

  5. Debo agregar demoras en la actualización del reloj (también conocido como uso de instrucciones sin operación entre reducir el valor del reloj y aumentar el valor y viceversa).

No estoy seguro de cuál es el mejor enfoque a seguir. Mi microcontrolador es At89C2051, que controla el circuito anterior, y el cristal conectado a él es de 20 MHz, lo que significa que se necesitan aproximadamente 590 o 600 nS para ejecutar una instrucción.

Solo quiero que la pantalla LCD se ejecute lo más rápido posible. Sería dorado si pudiera ver una letra impresa en la pantalla LCD dentro de los 5 ms de la puesta en marcha de la pantalla LCD y cada letra impresa 250uS a partir de entonces.

¿Alguna idea de lo que puedo hacer aquí para que la pantalla LCD responda a todos los comandos en lugar de a uno solo?

    
pregunta

0 respuestas

Lea otras preguntas en las etiquetas