matrice clavier triangulaire

 

Il existe une methode qui permet de ne pas gaspiller des ports pour creer une matrice clavier. Elle demande un peu plus de soft, mais on peut cabler davantage de touches pour un meme nombre de ports.

Pour exemple, on va comparer le nombre de touches que l'on peut cabler sur 8 ports.

Les ports doivent etre bidirectionnels. Pour les matrices carree et triangulaire simple, les ports peuvent etre du type 8051 ou il n'existe pas de registre de direction, et ou seul la mise a 0 est possible -- la mise a l'etat 1 est effectuee par les pull-up.

 


matrice carree classique

Une matrice carree cablee sur 8 ports ne permet que la gestion de 16 touches.

Pour scanner les touches, P0..P3 sont configures en entree, P4..P7 en sortie. P4 est mis a 0, P5..P7 sont mis a 1. La lecture de P0..P3 renseigne immediatement sur l'etat de la 1ere ligne des touches. Ensuite c'est P5 qui est mis seul a 0 et une nouvelle lecture donne l'etat des 4 touches de la ligne suivante. Et ainsi de suite.

Si plus d'une touche est active, alors la routine de lecture du clavier retourne l'etat precedent.

Si aucune touche n'est active, la routine retourne un code special, par exemple 0.

La routine d'examen du clavier doit etre executee periodiquement par une tache de fond dont la periode peut aller de 20 a 40 ms. L'anti-rebond est effectue par un test/decision portant sur 2 lectures consecutives espacees par la duree de la récurrence de la tache de fond. Si les 2 lectures sont identiques, le resulat apres anti-rebond est cette lecture. Si les 2 lectures sont differentes, on retourne la valeur la plus ancienne.

 


matrice triangulaire simple

Cette matrice triangulaire utilise les 8 ports du microcontroleur et permet la gestion de 28 touches. On gagne ainsi 12 touches par rapport a la matrice carree classique.

La routine de balayage doit s'effectuer de cette facon :

  1. P0 en sortie a 0
    P1..P7 en entree
    si P1 est a 0 -> K1 actif
    si P2 est a 0 -> K2 actif
    si P3 est a 0 -> K3 actif
    si P4 est a 0 -> K4 actif
    si P5 est a 0 -> K5 actif
    si P6 est a 0 -> K6 actif
    si P7 est a 0 -> K7 actif

  2. P1 en sortie a 0
    P0, P2..P7 en entree
    si P2 est a 0 -> K8 actif
    si P3 est a 0 -> K9 actif
    si P4 est a 0 -> K10 actif
    si P5 est a 0 -> K11 actif
    si P6 est a 0 -> K12 actif
    si P7 est a 0 -> K13 actif

  3. P2 en sortie a 0
    P0, P1, P3..P7 en entree
    si P3 est a 0 -> K14 actif
    si P4 est a 0 -> K15 actif
    si P5 est a 0 -> K16 actif
    si P6 est a 0 -> K17 actif
    si P7 est a 0 -> K18 actif

  4. P3 en sortie a 0
    P0..P2, P4..P7 en entree
    si P4 est a 0 -> K19 actif
    si P5 est a 0 -> K20 actif
    si P6 est a 0 -> K21 actif
    si P7 est a 0 -> K22 actif

  5. P4 en sortie a 0
    P0..P3, P5..P7 en entree
    si P5 est a 0 -> K23 actif
    si P6 est a 0 -> K24 actif
    si P7 est a 0 -> K25 actif

  6. P5 en sortie a 0
    P0..P4, P6, P7 en entree
    si P6 est a 0 -> K26 actif
    si P7 est a 0 -> K27 actif

  7. P6 en sortie a 0
    P0..P5, P7 en entree
    si P6 est a 0 -> K28 actif

  8. Si plus d'une touche active detectee -> etat memoire


matrice triangulaire double

Si on a besoin de davantage de touches, il faut utiliser des diodes. On arrive alors a un total de 84 !!! touches.

Methode de balayage de la matrice :

  1. mettre P0 a 0
    mettre P1..P7 en entree
    lire P1..P7
    • Si un port en lecture retourne un 0, mettre ce port en sortie a 0 et mettre P0 en entree.
    • Si P0 est a 0 alors c'est la touche qui n'est pas sur la ligne avec diode qui est active
    • Si P0 est a 1 alors c'est la touche qui est sur la ligne avec diode qui est active
    • Exemple :
      • si durant le balayage, on lit P1 a 0, alors soit la touche 14, soit la touche 21 est active
      • on met P1 en sortie a 0, et P0 en entree.
      • si on lit P0 a 0 alors c'est la touche 14 qui est active
      • si on lit P0 a 1 alors c'est la touche 21 qui est active
  2. continuez ainsi de suite en mettant a tour de role P2 a P7 a 0.

 


utilisation de la masse

Il y a encore une possibilite d'augmenter un peu le nombre de touches en cablant des touches entre les lignes de port et la masse. Cette solution n'est possible en toute securite uniquement si les ports peuvent etre configures dans un mode "drain ouvert". Si les ports n'existent qu'en mode "totem pole" alors il est dangereux de cabler des touches a la masse car on cree un courant important inacceptable pour une solution professionnelle.

Si on decide de completer une de ces 3 matrices par une ligne supplementaire de touches reliees a la masse, alors il faut completer la routine de balayage en mettant toutes les lignes en entree ; si on lit un port a 0 alors c'est qu'une touche de la ligne de masse est active.

Avec ce complement on obtient jusqu'a 92 touches pour 8 ports.

 


nombre maximal de touches

 

nombre de ports
utilises
matrice carree matrice carree
+ masse
matrice triangulaire
simple
matrice triangulaire
simple + masse
matrice triangulaire
double
matrice triangulaire
double + masse
4 4 8 6 10 18 22
5 6 11 10 15 30 35
6 9 15 15 21 45 51
7 12 19 21 28 63 70
8 16 24 28 36 84 92
 
page d'accueil

contact

 

menu precedent
street fighting
Est-ce ainsi que les hommes vivent ?
Baudelaire Les Fleurs du mal
rfc1869 SMTP Service Extensions
rfc1870 Extension for Message Size Declaration
rfc1939 Post Office Protocol
rfc1957 Observations on Implementations of POP3
rfc2034 Extension for Returning Enhanced Error Codes
rfc2195 IMAP/POP AUTHorize Extension
rfc2449 POP3 Extension Mechanism
rfc2487 Secure SMTP over TLS
rfc2554 Extension for Authentication
rfc822 ARPA Internet text messages
rfc0959 File Transfer Protocol (FTP)
rfc2428 FTP Extensions for IPv6 and NATs
le dernier jour d'un condamne
du cote de chez swann
le joueur
libretto 100
didgeridoo
php
Capability Maturity Model
vcd
histoire de francois m.
le grand secret de toto
sources
1-wire bus
rtos
µC scenix
matrice clavier triangulaire
cables-connecteurs informatiques
format des fichiers S motorola
java
spc statistical process control
codage video couleur
conversion d'unites de surface
conversion d'unites d'energie
conversion d'unites de longueur
conversion d'unites de masse
conversion d'unites de puissance
conversion d'unites de pression
conversion hexa-bin-oct-dec
conversion d'unites de temperature
conversion d'unites de vitesse
calculatrice javascript
cryptographie
yescard
knot tie
Kyusho Atemi-Waza Vital Point Striking Techniques
CRC
source UPS
tcpintro.txt
tcp_ip_tutorial.txt
AWG with current ratings
port parallele
training
le reseau sous DOS
video test
macrovision
Teach Yourself C++
Teach Yourself Java
Teach Yourself C
Java Guide
Applets
Beyond Logic
www.hwb.acc.umu.se
cd

 
moteur de recherche
chercher sur ce site
powered by FreeFind

 

contact

 

FREE, la liberté n'a pas de prix !

<-- precedent ] page d'accueil ] menu precedent ] suite --> ]

derniere mise a jour : dimanche janvier 26, 2003 21:38:01 +0100