Afficheur GV07 AEG-MIS
Présentation
Ce petit afficheur à cristaux liquides, déniché par mon ami Richard, faisait parti d’un plus grand ensemble composé de trois lignes de quatre afficheurs.

Notre premier réflexe fut de rechercher des informations sur internet, en vain…
Mes demandes d’informations auprès de la société AEG sont restées vaines elles aussi.
Descriptif et recherche
Il est composé de 8 caractères composés de 38 parties affichables indépendamment.
(3x5 carrés, certains étant divisés en plusieurs parties, donnant au total 38 zones affichables)

Il est piloté via un module sur lequel figure un HC245A, un «Octal 3−State Noninverting Bus Transceiver» et trois connecteurs :
- X1 : connecté au circuit de pilotage ou au module précédent.
- X2 : connecté au module suivant ou à un «bouchon» électrique de renvoi de signaux au circuit de pilotage.
- X3 : connecté à l’afficheur

Numérotation des broches des connecteurs.

Voici le schéma électrique partiel d’un module.

Par chance nous avons pu étudier les signaux émis par le circuit de pilotage.
Voltmètre, analyseur logique (USB), oscilloscope et de multiples essais nous ont permis de découvrir la fonction des différentes broches.
L’étude du schéma, plus particulièrement la broche 9 de X3 (renvoyée à sur la broche 15 de X2), nous a appris que les signaux sont émis de manière sériel, donc que la broche 15 est la ligne des données.
Au final, l’afficheur fonctionne via une liaison SPI
Description des broches du connecteur X3 :
- 1 : data
- 2 : GND (la masse)
- 3 : +8,5 volts
- 4 : Vcc 5 volts
- 5 : on/off (permet la désactivation de l’affichage, pendant la transmission des données par exemple)
- 6 : PWM (maintient l’affichage correcte, sinon ça s’efface doucement par la droite)
- 7 : latch (permet l’affichage des données transmises)
- 8 : clock (signal d’horloge)
- 9 : data’ (les données ressortent comme pour un registre à décalage)
programme
Nous avons utilisé une carte Arduino Dueminalove pour piloter notre afficheur.
Voici le programme pour quatre afficheurs en série.
/*
Pilotage de 4 afficheurs LCD (GV07 AEG-MIS) de 8 caractères de 38 segments en série.
Alain Gauthier
juin 2019
*/
#include "SPI.h"
// pin 11 MOSI A1 broche 1
// broche 2 VCC 5V
// broche 3 VCC 8,5 V
// broche 4 GND
int displayOnOff = 5; // A5 broche 5 low on - high off
int pwmPin = 6; // A4 broche 6 - ce qui empêche l'écran de s'effacer sur la droite
int displayLatch = 4; // A3 broche 7 - latch ou SS et SPI (Slave Select)
// pin 13 clock A2 broche 8
// broche 9 - non connectée - renvoi des données sérielles à l'afficheur suivant
// pin 12 MISO
const int nbAfficheurs = 4;
const int nbCaracteres = 8;
const byte octetsParCaractere = 5;
const int nbLettresAlphabet = 66;
const byte offsetCodeASCII = 32;
const uint8_t sensLectureOctet = MSBFIRST;
int displayLatchs = B00010000; // un latch par bit...
typedef struct
{
byte codeDuGlyphe[octetsParCaractere];
} glyphe;
glyphe alphabet[nbLettresAlphabet] {
{ 0, 0, 0, 0, 0}, // espace 32
{ 64, 4, 62, 48, 128}, // ! 33
{ 0, 3, 193, 192, 0}, // " 34
{ 0, 0, 0, 0, 0}, // # 35
{ 0, 0, 0, 0, 0}, // $ 36
{ 3, 1, 241, 179, 96}, // %
{ 0, 0, 0, 0, 0}, // &
{ 0, 1, 240, 32, 0}, // '
{ 64, 0, 9, 78, 108}, // (
{ 91, 115, 72, 0, 0}, // )
{ 3, 95, 0, 91, 96}, // *
{ 4, 252, 54, 63, 144}, // +
{ 68, 0, 0, 0, 0}, // ,
{ 0, 124, 32, 31, 128}, // -
{ 64, 0, 0, 0, 0}, // .
{ 0, 1, 240, 51, 110 }, // /
{ 91, 127, 73, 95, 108}, // 0 48
{ 124, 132, 62, 112, 158}, // 1
{ 120, 31, 105, 19, 236}, // 2
{ 91, 127, 105, 16, 140}, // 3
{ 59, 127, 225, 217, 128}, // 4
{ 91, 76, 233, 217, 140}, // 5
{ 91, 76, 105, 95, 236}, // 6
{ 59, 127, 105, 16, 128}, // 7
{ 91, 95, 105, 91, 236}, // 8
{ 91, 127, 105, 89, 140}, // 9
{ 64, 4, 32, 16, 128}, // :
{ 0, 0, 0, 0, 0}, // ;
{ 0, 0, 0, 0, 0}, // <
{ 7, 131, 22, 96, 112}, // =
{ 0, 0, 0, 0, 0}, // >
{ 0, 0, 0, 0, 0}, // ?
{ 0, 0, 0, 0, 0}, // @
{ 59, 127, 105, 95, 238}, // A 65
{ 91, 95, 105, 223, 238}, // B
{ 88, 0, 73, 79, 108}, // C
{ 91, 123, 73, 207, 110}, // D
{ 120, 4, 233, 223, 238}, // E
{ 0, 4, 233, 223, 238}, // F
{ 91, 124, 73, 79, 108}, // G
{ 59, 127, 225, 223, 238}, // H
{ 68, 132, 62, 48, 144}, // I
{ 91, 123, 192, 0, 108}, // J
{ 59, 77, 241, 255, 238}, // K
{ 120, 0, 1, 207, 110}, // L
{ 59, 123, 243, 239, 110}, // M
{ 59, 127, 227, 239, 110}, // N
{ 91, 123, 73, 79, 108}, // O
{ 0, 31, 105, 223, 238}, // P
{ 123, 251, 73, 79, 108}, // Q
{ 59, 95, 105, 223, 238}, // R
{ 91, 76, 105, 89, 140}, // S
{ 68, 132, 255, 176, 144}, // T
{ 91, 123, 193, 207, 108}, // U
{ 77, 251, 193, 207, 88}, // V
{ 59, 127, 225, 255, 110}, // W
{ 59, 95, 225, 219, 110}, // X
{ 68, 159, 225, 217, 144}, // Y
{ 120, 1, 249, 179, 110}, // Z
{ 0, 0, 0, 0, 0}, // [
{ 0, 0, 0, 0, 0}, // "\"
{ 0, 0, 0, 0, 0}, // ]
{ 0, 0, 0, 0, 0}, // ^
{ 0, 0, 0, 0, 0}, // _
{ 0, 0, 0, 0, 0}, // `
{ 0, 31, 73, 89, 128}, // "a" = degrés
};
void latch (void) {
// passe à 1 la broche 4
PORTD = PORTD | displayLatchs;
delay(10);
// passe à 0 la broche 4
PORTD = PORTD & (~displayLatchs);
}
void displayOn () {
digitalWrite(displayOnOff, LOW);
}
void displayOff () {
digitalWrite(displayOnOff, HIGH);
}
void clearDisplay (void) {
int nbOctets = nbAfficheurs * nbCaracteres * octetsParCaractere;
for (byte i = 0; i < nbOctets; i++) {
envoie(0);
}
latch();
}
void envoiePhrase(String laPhrase) {
displayOff ();
for (int noLettre = laPhrase.length() - 1; noLettre >= 0 ; noLettre--) {
envoieLettre( laPhrase[noLettre] - offsetCodeASCII);
}
latch();
displayOn ();
}
void envoieLettre (byte lettre) {
for (byte i = 0; i < octetsParCaractere; i++) {
envoie (alphabet[lettre].codeDuGlyphe[i]);
}
}
void envoie (uint8_t val) {
SPI.transfer(val);
delay(1);
}
void setup() {
pinMode(displayOnOff, OUTPUT);
analogWrite(pwmPin, 128);
pinMode(displayLatch, OUTPUT);
digitalWrite(displayLatch, LOW);
SPI.begin();
SPI.setDataMode(1);
SPI.setBitOrder(MSBFIRST);
}
void loop() {
delay(2000);
clearDisplay ();
envoiePhrase("DISPLAY GV07 AEG-MIS");
delay(2000);
clearDisplay ();
envoiePhrase("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
delay(2000);
clearDisplay ();
envoiePhrase("0123456789 !\"%'()*+-/:=a");
delay(2000);
clearDisplay ();
envoiePhrase("ATELIER D'ALGAU HTTP:// ALGAU.EU");
}