Logo Central

Display EADOGS102

Étude du Display LCD EADOGS102 : j'ai implanté ce modèle de display sur le projet "Minuteur", principalement pour sa faible consommation et ses dimensions.

Le principe de fonctionnement : une manière d'utiliser ce display est de créer un buffer en mémoire RAM représentant tous les pixels du display (1 byte = 8 bits), soit 102 x 8 = 816 bytes.

Les registres de commande

Registres de commande

Le registre SET_COM_Direction et SET_SEG_Direction permet de placer l'origine x et y selon la position du LCD (attention : dans le cas 12 o'clock, la coordonnée en x débute à 30 et non pas à zéro).

Exemple de configuration pour une position comme indiquée ci-dessous.

Set Scroll line 0x40,
Set SEG Direction 0xA0,
Set COM Direction 0xC0,
Set ALL Pixel 0xA4,
Set Invers Display 0xA6,
Set LCD Bias Ratio 0xA2,
Set Power Control 0x2F,
Set VCLD Resistor Ratio 0x27,
Set Electronic Volume MSB 0x81,
Set Electronic Volume LSB 0x10,
Set Adv. Program control0 msb 0xFA,
Set Adv. Program control0 lsb 0x90,
Set Display Enable 0xAF,
structure rotation 180 C

les polices de caractère

Les polices de caractères (fonts) sont représentées sous forme d'un tableau de bytes. Un caractère peut avoir une largeur différente, par exemple, la lettre "I" sera moins large que la lettre "W". Si nous choisissons un espacement constant, l'écriture n'est pas très agréable. C'est pourquoi nous utilisons deux tableaux : le premier, "font" (police de caractères), qui définit chaque caractère, et le deuxième tableau, le descripteur, qui définit la largeur en pixels et la position ou le décalage dans le tableau font.
Prenons un exemple pour mieux comprendre : la lettre "D" majuscule dans le tableau font Arial16pt. La police utilisée est Arial16, pour inclure tous les caractères, y compris les minuscules et les jambages, cette police est définie avec une hauteur de 21 pixels.

fichier "font.c"
@1260 'D' (12 pixels wide)
0x00,0x00,
// ............
0xFF,0x00,
// ########....
0xFF,0xC0,
// ##########..
0xC0,0xE0,
// ##.....###..
0xC0,0xE0,
// ##......##..
0xC0,0xE0,
// ##.......##.
0xC0,0xE0,
// ##.......##.
0xC0,0xE0,
// ##.......##.
0xC0,0xE0,
// ##.......##.
0xC0,0xE0,
// ##.......##.
0xC0,0xE0,
// ##.......##.
0xC0,0xE0,
// ##.......##.
0xC0,0xE0,
// ##......##..
0xC0,0xE0,
// ##.....###..
0xFF,0xC0,
// ##########..
0xFF,0x00,
// ########....
0x00,0x00,
// ............
0x00,0x00,
// ............
0x00,0x00,
// ............
0x00,0x00,
// ............
0x00,0x00,
// ............
fichier "descripteur.c"
{ 11, 1176 }, // B
{ 13, 1218 }, // C
{ 12, 1260 }, // D
{ 11, 1302 }, // E
{ 10, 1344 }, // F
{ 14, 1386 }, // G

Le tableau de description (descripteur) définit la position du caractère dans le tableau font.c. Dans cet exemple, la lettre "D" commence à l'adresse 1260, elle occupe 42 octets et le nombre de bits pour la largeur de la lettre est de 12 bits. On remarque que les quatre derniers bits du deuxième octet sont toujours égaux à zéro puisqu'ils ne sont pas utilisés.
Le décalage dans le tableau font.c est toujours un multiple de 21, puisque c'est la hauteur des lettres.