je cherche code source en C pour la gestion de clavier 4x4
j'utilise le pic877a
-----
25/04/2010, 02h41
#2
invite7a49d0d5
Date d'inscription
janvier 1970
Messages
3 348
Re : gestion de clavier 4x4
Bonjour,
comment il est câblé ce clavier 4x4?
multiplexé (4lignes * 4colonnes)?
si NON, combien de "fils en sorties"??
avec quelques précisions(schéma) je te ponds le pseudo-code dans l'heure...
vede
;O]
___________________________
VIVE les PICS ;O]
25/04/2010, 03h20
#3
LABTOOL48
Date d'inscription
mai 2007
Localisation
algeria
Âge
39
Messages
133
Re : gestion de clavier 4x4
merci vede pour la reponse
le clavier que j'ai est de 4lignes * 4colonnes et je veux l'utilise avec le portB de pic877A mais je ne sais pas comment la détection de changement détat des bits de port
25/04/2010, 17h05
#4
invite7a49d0d5
Date d'inscription
janvier 1970
Messages
3 348
Re : gestion de clavier 4x4
Bonjour,
il faut connecter :
les 4 colonnes sur les ports B0 à B3
et
les 4 lignes sur les ports B4 à B7
Puis configurer les ports B0 à B3 en sorties numériques
Puis configurer les ports B4 à B7 en entrées numériques,
avec des résistances de "Pull-Down"...
ADCON1 = 7; // désactive ADC
TRSIB = 0b11110000;
Puis "allumer" les colonnes les unes après les autres...
Pour y sonder si une touche est appuyée...
pseudo-exemple :
Code:
while true { // TESTE LES TOUCHES EN BOUCLE
PortB = 0b0001; // allume colonne 1
if PortB > 8 { // si une entrée RB4 à RB7 est @ 1
// c'est q'une touche de la colonne 1 est pressé
var = PortB;
var = var >> 4;
if var = 1 touche = 0;
if var = 2 touche = 1;
if var = 4 touche = 2;
if var = 8 touche = 3;
// affiche(touche);
// antirebonds();
}
//et on recommences avec la seconde colonne...
PortB = 0b0010; // allume colonne 2
if PortB > 8{ // si une entrée RB4 à RB7 est @ 1
// c'est qu'une touche de la colonne 2 est pressée
var = PortB;
var = var >> 4;
if var = 1 touche = 4;
if var = 2 touche = 5;
if var = 4 touche = 6;
if var = 8 touche = 7;
// affiche(touche);
// antirebonds();
}
// TODO : A COMPLETER (COPIER/COLLER CI-DESSUS)
PortB = 0b0100; // allume colonne 3
//(...ici)
PortB = 0b1000; // allume colonne 4
//(...ici)
}
wend
c'est juste une suggestion...une base...améliorable...
c'est une façon de procéder...parmi d'autres...
on pourrait "décoder" autrement...
et optimiser l'encodage...
vede
;O]
______________________
VIVE les PICS ;O]
Aujourd'hui
A voir en vidéo sur Futura
29/04/2010, 06h23
#5
LABTOOL48
Date d'inscription
mai 2007
Localisation
algeria
Âge
39
Messages
133
Re : gestion de clavier 4x4
merci bcp vede pour ton aide j'ai trouvé tous le nississar pour mon clavier et je l'ai pas encore toucher car j'étais occupé avec l'eeprom 93cs46 j'ai seulment hier que j'ai réussi a ecrire dedans et la prochaine fois je commence par le clavier et finire mon project
merci bcp a toi t'es le seul qui nous repond ici