Como señaló Wouter, no puedes escribir directamente en un solo píxel.
La matriz de visualización se comporta básicamente como un mapa de bits monocromático. Se divide físicamente entre dos controladores idénticos, uno para la mitad izquierda y el otro para la mitad derecha. Sus líneas de datos / luces estroboscópicas están conectadas entre sí y puede seleccionar una con la que hablar mediante los pines de selección de chip, CS1B y CS2B. Ambos están activos en alto y ambas mitades de la pantalla se escribirían simultáneamente si hubiera afirmado ambos pines CS.
La pantalla se divide verticalmente en ocho páginas , que se colocan una encima de la otra, formando filas de ocho píxeles de alto. Estos ochos verticales de píxeles están conectados con bytes de la página y cada página tiene 64 bytes. Por lo tanto,
- 8 páginas * 8 bits = 64 filas
- 2 controladores * 64 bytes por página = 128 columnas
para toda la pantalla. Puede encontrar una buena imagen del diseño de la memoria aquí .
Por ejemplo, cómo se oscurecería el píxel en (5, 8)).
Supongo que con la notación (5,8) te refieres a la quinta columna desde la izquierda y la octava fila desde la parte superior, como se usa ampliamente en gráficos de computadora. Desafortunadamente, el fabricante del controlador llama a la coordenada vertical (índice de página) X, lo cual es bastante confuso.
-
fila no. 8 pertenece a la página no. 1. Debe emitir el comando Page Select
con el argumento 1
, que es 00 10111001
para los valores de bit en la tabla.
-
Después de esto, debe emitir el comando Set address
para establecer el índice de columna 5
, que significa valores de bit de 00 01000101
. Ahora el "cursor" de la pantalla se establece en el byte que contiene el píxel especificado.
-
Ahora puede escribir el contenido deseado del byte a través del comando Write Display Data
. La octava fila es el LSB de la página 1 y una lógica en este bit hace que el píxel deseado se oscurezca.
Desafortunadamente, solo puedes escribir un byte entero. Por lo tanto, necesita una copia del contenido de la pantalla en el RWM de su MCU, o primero lea el valor actual de la pantalla LCD (comando Read Display Data
), realice una OR lógica con 0b00000001
y vuelva a escribir.
Tenga en cuenta que la dirección en la página (registro Y) avanza automáticamente a medida que escribe los datos. Puede llenar fácilmente toda la página solo con escrituras secuenciales: si tiene suficiente memoria en su MCU de control, puede asignar un bloque de 2 * 8 * 64 = 1024 bytes, mantener y manipular el mapa de bits allí y enviar el contenido completo de la pantalla Páginas modificadas a petición. Esto depende de tu aplicación.
Este protocolo es muy común para las pantallas GLCD 128x64. Creo que también podría encontrar una biblioteca lista para usar para su MCU, que le proporcionará algunos gráficos básicos (línea, rectángulo, posiblemente incluso elipse) y / o salida de texto sin manipular directamente la pantalla LCD.