Étape 4: Protocole de LCD - dessin (Phillips PCF8833 seulement!)
Continuer avec le protocole, une fois que l’écran LCD est initialisé, il est prêt à tirer. Dessin travaille tout d’abord définir une région pour dessiner et ensuite en streaming des données de pixels pour remplir cette région. C’est déroutant au premier, mais si fait correctement, c’est plus efficace que le dessin pixel par pixel. Une région est tout simplement une zone rectangulaire sur l’écran. Nous allons dire il commence au point (X1, Y1) et se termine au point (X2, Y2). Une fois défini, le contrôleur LCD remplira en pixels, de gauche à droite en commençant à (X1, Y1). Lorsqu’il atteint le bord de la région, il passera à la ligne suivante [dans mon exemple, (X1, Y1 + 1)]. Il fait ceci jusqu'à ce qu’il atteigne (X2, Y2) à qui il s’arrête à accepter les données. Si vous souhaitez seulement dessiner un pixel, vous suffit de définir (X1, Y1) et (X2, Y2) au pixel vous souhaitez dessiner. Ceci définit la région comme un seul pixel. Toutes les données envoyées après qu’une valeur du premier pixel de données est ignorée.Pour définir une zone, vous devez envoyer ces commandes dans l’ordre suivant :
PASET (Hex 0x2B) - adresse de la Page ensemble
Données Y1 - la position de départ Y
Données Y2 - l’emplacement Y fin
CASET (Hex 0x2A) - jeu d’adresse de colonnes
Données X1-partir de la position X
Données X2-la fin X position
RAMWR (Hex 0x2C) - RAM écriture - Start envoie des données de pixel après cette commande
< données de pixel - > formatage décrite ci-dessous
Après que l’écran est prêt à accepter les données de pixels, vous devez envoyer des données de couleur pour chaque pixel dans l’ordre. Dans le mode de couleur par défaut (0 x 03, 12 bits par pixel) données couleur utilisent 12 bits. Cela signifie que vous pouvez envoyer 2 pixels d’une valeur de données pour chaque 3 octets. Si vous envoyez uniquement un pixel, il vous suffit d’envoyer 2 octets. Le format 2-pixel-par-3-octets est illustré ci-dessous :
RRRR VVVV | RRRR BBBB | VVVV BBBB
Si seulement l’envoi d’un pixel, vous pouvez utiliser ce format plutôt :
XXXX RRRR | GGGG BBBB (X signifie « n’aime pas », peut être 0 ou 1, ces bits sont ignorés)
En C, vous pouvez utiliser ce code de sortie format 2-pixel-par-3-octets, color1 et color2 sont des valeurs 16 bits (ints en AVR GCC)
(color_lcd_send_data(char dat) est une fonction qui affiche un octet de données à l’écran LCD)
color_lcd_send_data (color1 >> 4) ;
color_lcd_send_data (((color1&0x0F) << 4) | () couleur2 >> 8)) ;
color_lcd_send_data(color2) ;
Ce code a été simplifié pour le format 1-pixel-2-octets pour single-pixel écrit :
color_lcd_send_data (couleur >> 4) ;
color_lcd_send_data (couleur << 4) ;