effacer le lcd avec commande binaire

Informations et questions sur les composants tiers de la boutique (émetteur/récepteur RF, capteurs...)

effacer le lcd avec commande binaire

Message non lude lcd1602 » Sam 9 Juin 2012 17:17

bonjour,
je souhaite effacer le LCD de façon binaire.
en lui envoyant la valeur 0b00000001 qui correspond au clear de la librairie liquid.
c'est pour comprendre le fonctionnement.
d’après ce que j'ai pu glaner il faut:
mette la broche enable à 1
mettre la broche RS à 0
envoyer la commande 0b00000001 sur D...
remettre enable à 0.
pour l'instant ce ne donne rien.
avez vous une petite idée, un bout de code :)
a+
lcd1602
 
Messages: 22
Inscription: Sam 5 Mai 2012 12:16

Re: effacer le lcd avec commande binaire

Message non lude SesechXP » Dim 10 Juin 2012 08:27

Salut,

L'écran LCD du Deuligne est câblé pour être utilisé en mode 4 bits. Par conséquent l'envoi de chaque octet vers celui-ci se fait en deux étapes :
1- envoi du quartet de poids fort ;
2- envoi du quartet de poids faible.
Pour la commande clear, il faut donc envoyer successivement 0b0000 puis 0b0001.

Pour effacer l'écran il faut donc :
- mettre la broche RS à 0 ;
- envoyer le quartet de poids fort ;
- mettre la broche EN à 1 ;
- tempo ;
- mettre la broche EN à 0 ;
- envoyer le quartet de poids faible ;
- envoyer le quartet de poids fort ;
- mettre la broche EN à 1 ;
- tempo ;
- mettre la broche EN à 0.

Après il ne faut pas oublier de tenir compte des spécificités du Deuligne qui utilise un MAX23008 :!:
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35

Re: effacer le lcd avec commande binaire

Message non lude lcd1602 » Dim 10 Juin 2012 09:32

merci SEsechXP
pour votre réponse. :D

mettre les broche soit à un soit à 0 je sais faire,
mais envoyer quartet de poids fort comment on fait ?

on envoi successivement quartet de poids fort ,
puis le poids faible, puis le poids fort ??????
merci pour votre lecture.
cldt.
lcd1602
 
Messages: 22
Inscription: Sam 5 Mai 2012 12:16

Re: effacer le lcd avec commande binaire

Message non lude SesechXP » Dim 10 Juin 2012 10:24

Un quartet est un demi-octet. Ici, l'octet qu'on veut envoyer est 0b00000001, ce qui fait deux quartets à envoyer : 0b0000 puis b0001.

Pour le Deuligne, le plus simple est de regarder ce que fait sa bibliothèque quand on appelle la méthode clear :
Code: Tout sélectionner
void Deuligne::clear() {
  command(CMD_CLR);
}

qui appelle la méthode command :
Code: Tout sélectionner
void Deuligne::command( uint8_t command ) {
  // RS - leave low
  WriteLCDByte(myAddress,command);
  delay(1);
}

qui appelle la méthode WriteLCDByte (c'est là que ça devient intéressant) :
Code: Tout sélectionner
void WriteLCDByte( byte deviceAddr, byte bdata ) {
  SendToLCD(deviceAddr,bdata >> 4);
  SendToLCD(deviceAddr,bdata & 0x0F);
}

Ici la variable bdata est égale à la commande clear, soit 0b00000001. Et son envoi se fait en deux temps en appelant deux fois la méthode SendToLCD :
1- envoi du quartet de poids fort (bdata >>4 = 0b0000) :
Code: Tout sélectionner
SendToLCD(deviceAddr,bdata >> 4);

2- envoi du quartet de poids faible (bdata &0x0F = 0b0001) :
Code: Tout sélectionner
SendToLCD(deviceAddr,bdata & 0x0F);

Vient ensuite la méthode SendToLCD qui envoie le fameux quartet et pilote le signal de validation EN :
Code: Tout sélectionner
void SendToLCD( byte deviceAddr, byte data ) {
  data |= dataPlusMask;
  SetMCPReg(deviceAddr,0x0A,data);
  data ^= 0x10; // E
  delayMicroseconds(1);
  SetMCPReg(deviceAddr,0x0A,data);
  data ^= 0x10; // E
  delayMicroseconds(1);
  SetMCPReg(deviceAddr,0x0A,data);
  delay(1);
}
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35

Re: effacer le lcd avec commande binaire

Message non lude lcd1602 » Dim 10 Juin 2012 10:59

merci, :D
j'y vois un peu plus clair.
les commandes :
WriteLCDbyte,SendToLCD,SetMCPReg...
font partie exclusivement de la bibliothèque deux lignes , car j'utilise LiquidCrital qui possède les mêmes fonctions.
Mais elle ne semble par avoir ces commandes ???
comment peux ton avoir acces à la commande clear, pour savoir si elle est vraiment semblable à la deux lignes???
a+
lcd1602
 
Messages: 22
Inscription: Sam 5 Mai 2012 12:16

Re: effacer le lcd avec commande binaire

Message non lude SesechXP » Dim 10 Juin 2012 12:50

lcd1602 a écrit:les commandes :
WriteLCDbyte,SendToLCD,SetMCPReg...
font partie exclusivement de la bibliothèque deux lignes , car j'utilise LiquidCrital qui possède les mêmes fonctions.
Mais elle ne semble par avoir ces commandes ???

Tout à fait, ce sont des méthodes propres à la bibliothèque Deuligne et au shield Deuligne. Donc LiquidCrystal ne les a pas.
lcd1602 a écrit:comment peux ton avoir acces à la commande clear, pour savoir si elle est vraiment semblable à la deux lignes???

Les sources de la bibliothèque LiquidCrystal sont disponibles avec l'environnement Arduino, dans le dossier arduino/libraries/LiquidCrystal. Cette bibliothèque permet de piloter des écrans LCD en mode 4 bits ou 8 bits, en fonction du type de LCD qu'on souhaite utiliser.

++
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35

Re: effacer le lcd avec commande binaire

Message non lude lcd1602 » Dim 10 Juin 2012 13:13

ayant un hd44780, je ne puis utiliser la lib deuxligne :cry:
j'ai la commande init qui ne se ferai pas ( pas de coloration syntaxique) :?:
avez vous une idée pour réaliser la même chose avec la liquidcristal ?
Ou comment décortiquer les fonction de la liquid ?

Mon projet est de faire clignoter un mot lorsque celui-ci est sélectionner, mais avant je voulais comprendre comment fonctionne l'affichage en mode binaire, pour lire dans la mémoire du hd444780. :oops:
lcd1602
 
Messages: 22
Inscription: Sam 5 Mai 2012 12:16

Re: effacer le lcd avec commande binaire

Message non lude SesechXP » Dim 10 Juin 2012 19:33

LiquidCrystal permet d'effacer le LCD, pourquoi vouloir utiliser autre chose ?

Pour lire la mémoire du LCD, il y a peut-être une piste à creuser avec la broche R/W. Mais je n'en sais pas plus, j'avoue ne jamais avoir étudié ce mode de fonctionnement.

Pour faire clignoter un mot à l'écran, il est peut-être plus simple de garder en mémoire la chaîne de caratères affichée et tout à tour de l'afficher ou réécrire des espaces par dessus en repositionnant le curseur. A voir...
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35

Re: effacer le lcd avec commande binaire

Message non lude Lionel » Lun 11 Juin 2012 08:58

Bonjour,

je déplace ce sujet qui ne concerne pas le deuligne dans la catégorie composants tiers pour éviter la confusion
Image - Distributeur officiel Arduino - Conception de shields
Avatar de l’utilisateur
Lionel
 
Messages: 734
Inscription: Mar 21 Déc 2010 09:52
Localisation: Toulouse


Retourner vers Composants tiers

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron