Paso 4: LCD protocolo - dibujo (Phillips PCF8833 solamente!)
Continuando con el protocolo, una vez que se inicializa el LCD está listo para dibujar. Obras de dibujo primero definiendo una región para dibujar y luego streaming de datos de pixel para llenar esa región. Es confuso en el primero, pero si esto se hace correctamente es más eficiente que el dibujo pixel por pixel. Una región es simplemente un área rectangular en la pantalla. Diremos comienza en el punto (X1, Y1) y termina en punto (X2, Y2). Una vez definido, el controlador del LCD se llenará en píxeles de izquierda a derecha a partir de (X1, Y1). Cuando alcanza el borde de la región, saltará a la siguiente línea [en mi ejemplo, (X1, Y1 + 1)]. Esto lo hace hasta que llegue (X2, Y2) en el que deja de aceptar datos. Si desea dibujar un píxel, simplemente establece (X1, Y1) y (X2, Y2) a los píxeles que desea dibujar. Esto define la región como un solo píxel. Cualquier dato enviado después de que vale la pena el primer píxel de datos se descarta.Para definir una región, debe enviar estos comandos en el siguiente orden:
PASET (Hex 0x2B) - sistema de dirección de la página
Datos Y1 - la posición inicial Y
Datos Y2 - la posición final Y
CASET (Hex 0x2A) - sistema de dirección de columna
Datos X1-la puesta en posición X
Posición de la X final de datos X2-
RAMWR (maleficio 0x2C) - RAM escritura - Inicio envío de datos de pixel después de este comando
< pixel datos > - formato se describe a continuación
Después de que la pantalla está lista para aceptar datos de píxeles, debe enviar datos de color de cada píxel en orden. En el modo de color predeterminado (0 x 03, 12 bits por píxel) datos de color utilizan 12 bits. Esto significa que puede enviar 2 píxeles valor de datos para cada 3 bytes. Si sólo va a enviar un píxel, sólo necesita enviar 2 bytes. A continuación se muestra el formato de 2 píxeles por 3 bytes:
GGGG RRRR | BBBB RRRR | BBBB GGGG
Si sólo envío de un píxel, puede utilizar este formato en su lugar:
RRRR XXXX | BBBB GGGG (X significa «no importa», puede ser 0 o 1, estos bits son descartados)
En C, puede utilizar este código para generar el formato de 2 píxeles por 3 bytes, color1 y color2 son valores de 16 bits (ints en AVR GCC)
(color_lcd_send_data(char dat) es una función que salidas de un byte de datos a la pantalla LCD)
color_lcd_send_data (color1 >> 4);
color_lcd_send_data (((color1&0x0F) << 4) | () color2 >> 8));
color_lcd_send_data(color2);
Este código se simplifica para formato 1-pixel-2-bytes por píxel escribe:
color_lcd_send_data (color >> 4);
color_lcd_send_data (color << 4);