Bonjour à tous, je suis un élève de terminale S-SI et j'ai pour projet scolaire de programmer la gestion d'un PIC sous "Flowcode" afin que celui-ci puisse interpréter les touches entrées dans un clavier matriciel (3x4) et afficher
le bon caractère sur un écran LCD. Le programme devra ainsi faire en sorte de retenir les touches entrées et les comparées à un code; pour cela, j'ai d'abord mis sous tension les broches de la Colonne (matrice) du clavier pour
que lorsqu'il y a appui sur une touche, un cours circuit mettra la Ligne du clavier en position haut. Il ne restera donc plus qu'à inverser la mise sous tension des Lignes et Colonnes afin d'identifier la touche saisie.
Les valeurs obtenues pour les Lignes et les Colonnes sont sous forme binaire:
- en sortie donc les valeurs 00000001, 00000010, 00000100, pour les Colonnes
- en sortie donc les valeurs 00001000, 00010000, 00100000, 01000000 pour les Lignes
J'additionne ensuite ces deux valeurs qui sont comparées avec un tableau; cela a pour effet d'incrémenter la variable "i" qui sert a parcourir le tableau tant que la valeur de la somme n'est pas égale à celle du tableau.
La même variable "i" sert ensuite à faire le lien entre la valeur binaire du tableau et la valeur de référence d'un autre tableau, c'est le caractère voulu.
La touche "#" servira à valider le code saisi et la touche "*" à enlever le dernier caractère. Je n'ai pas encore créer les fonctions nécessaires à l’interprétation de ces touches.
Le programme devra fonctionner en tant que simulation sous "Proteus": le problème que je rencontre est que la première saisie fonctionne, mais les saisies juste après ne fonctionnent pas.
J'en ai déduit que cela est du peut être à la vitesse à laquelle le processeur exécute les instructions et lors d'un appui de touche celui-ci "retient" comme si la touche avait été appuyée plusieurs fois.
J'ai essayé plusieurs solutions "d'anti-rebond" mais aucune ne semble fonctionner...
C'est donc pour cela que j'aurai besoin d'un peu d'aide afin de m'expliquer la solution a mon problème.
Merci d'avance, cordialement,
Pitt64
ps: le programme et les ressources se trouvent dans les pièces jointes.
-----