Electromag1 Circuits électroniques et Picaxes

Petit site pour ceux qui bricolent en électronique en général et sur les PICAXES en particulier.
Les PICAXES sont des microprocesseurs (PIC de Microship) programmables en BASIC. Pleins de qualités, pas chers, ultra faciles à programmer.
Tout (ou presque) est sur le site du distributeur Gotronic (voir les liens).
Les pages  seront ajoutées ou modifiées petit à petit.
Dans le but d'améliorer ce blog, communiquez moi vos remarques et les erreurs que vous pouvez constater.
Pour me contacter: Envoyez un mail à l'adresse : mag1mic@free.fr .  Tout message reçoit une réponse
Pour retourner au menu, Cliquer sur "LISTE DES PAGES", ici ou en haut de la colonne de gauche
Pour laisser un message, allez dans le "LIVRE D'OR"
Bonne visite
 
 

Décodage des claviers matriciels


On a parfois besoin d'utiliser des claviers. Ce sont souvent des claviers matriciels, comportant huit broches, quatre pour les lignes et quatre pour les colones du clavier.
L'appui d'une touche établi une liaison entre la ligne et la colone au niveau de cette touche.


 
Principe du décodage:
Lorsque le nombre de broches du µC est suffisant, ces broches sont regroupées par huit. Ici, pour le picaxe 20M2, nous avons huit broches "B" et huit broches "C". Pour le décodage, l'ensemble des broches C est utilisé.
Le basic picaxe désigne les niveaux des huit broches C par un octet (voir cette page) nommé pinsC.
pincC=%10100011 représente les niveaux des broches C.7 à C.0, dans cet ordre

Ex: si pinsC= %11110000 , les 4 bits de poids fort sont au niveau haut (noté 1), les 4 bits poids faibles au niveau bas (noté 0).
Ce qui signifie que les broches C.7, C.6, C.5, C.4 sont niveau haut et C.3, C.2, C.1, C.0 au niveau bas

Pour éviter de câbler des résistances, les pullup des broches C.7, C.6, C.5, C.4 sont activées et donc au niveau haut (1).

Sur le schéma ci dessus:
Les lignes du clavier sont reliées à ces broches.
Les colones sont reliées aux broches C.0 à C.4. Le code va donner successivement à ces broches les valeurs %1110, %1101,%1011,%0111
Si la broche C.1 est à 0 et que l'on appuie sur la touche 5, la broche C.6 passe de 1 à 0. On a pinsC= %10111101

A chaque appui sur une touche, correspond une valeur particulière de pinsC.
Dans le code ci dessous, on utilise la notation décimale, plus compacte : %10111101 = 189

Comment savoir qu'une touche est appuyée:
Sans appui, pinsC= %1111xxxx (x= 0 ou 1). Or, %11110000 =240 , dans tous les cas, si un des 1 est remplacé par un 0, le nombre obtenu est inférieur à 240. donc pinsC < 240 signifie d'une touche est appuyée.

Deux commandes sont utilisées:
lookdown qui reconnait une combinaison pinsC correspondant à une numéro de touche
lookup qui attriue à ce numéro un caractère ASCII affiché sur le LCD
Il faut bien sûr veiller à ce que cette succession de transformation corresponde à la réalité.

Remarques sur le code ci dessous:
PoidsFaible est un octet qui évolue comme suit: %xxxx0001 ->%xxxx0010 -> %xxxx0100 -> %xxx1000 ->%xxxx0001
Il est inversé dans : pinsC= not PoidsFaible, par ex:  PoidsFaiblle= %xxxx0010 -> pinsC = %xxxx1101
Les poids forts xxxx ne sont pas utilisés, ils sont remplacés dans pinsC par les valeurs lues sur les broches C.4 à C.7, c'est à dire 1111 si on appuie sur aucune touche: %xxxx1101 -> %11111101 (=253, non testé car > 240 )






 



Créé avec Créer un site
Créer un site