Home
Accesso / Registrazione
 di 

Corso di programmazione per microcontrollori PIC. Nona puntata - 2

Corso di programmazione per microcontrollori PIC

Per questo applicativo dobbiamo innanzitutto spostare il ponticello da JP3 a JP1 in modo da rendere disponibili come risorse la tastiera a matrice ed il display a sette segmenti.

LA TASTIERE A MATRICE
La tastiera a matrice è realizzata con dei pulsanti collegati all’incrocio di una serie di conduttori disposti in righe e in colonne; ad esempio volendo utilizzare una tastiera a 16 tasti, questi ultimi sono disposti in modo da collegare, quando vengono premuti, gli incroci di una matrice conduttiva costituita da 4 righe e da 4 colonne.

Questo sistema risulta molto comodo perché limita il numero di connessioni verso il microcontrollore. Ad esempio, se si interfacciano 16 pulsanti separati occorrono 32 linee di ingresso/uscita (2 per ogni pulsante). La tastiera a matrice necessita, invece, di sole 8 linee di I/O, corrispondenti alle 4 righe ed alle 4 colonne. In elettronica, la grande maggioranza delle tastiere, comprese quelle dei personal computer, sono realizzate in questo modo.

La tastiera a matrice viene gestita attraverso un procedimento di scansione di righe e di colonne; per capire come ciò avviene, analizziamo lo schema di collegamento della tastiera realizzato sulla demoboard. In pratica, viene utilizzata tutta la porta b del micro (8 linee di I/O) e vengono abilitate 4 linee per funzionare come uscite (da RB0 a RB3) e 4 come ingressi (linee da RB4 a RB7). Le quattro linee di uscita vengono collegate alle quattro colonne della tastiera, mentre le linee di ingresso alle righe della matrice. Da notare che queste linee di ingresso sono tenute normalmente a livello logico alto da quattro resistenze (R18 - R21).

La lettura della tastiera si effettua nel seguente modo: si impone uno zero su di una colonna, ad esempio partendo dalla prima colonna, mentre si lasciano le altre linee a livello alto, e si va a leggere le quattro linee di ingresso. Se nessun tasto è pigiato, semplicemente si leggeranno quattro livelli logici alti. Se però uno dei pulsanti che incrociano la prima colonna con le quattro righe risulta premuto, cortocircuiterà la corrispondente riga con la colonna.

Poiché la colonna si trova a livello logico zero, anche la riga dove è posizionato il pulsante che abbiamo premuto si porterà a livello logico zero; in questo modo non leggeremo più sugli ingressi quattro livelli alti, ma tre livelli alti ed uno basso. Dall’identificazione della colonna che avevamo “attivato” e della riga che abbiamo trovata bassa, possiamo stabilire univocamente il tasto pigiato. Ovviamente questa operazione deve essere effettuata per tutte le quattro colonne.

Vediamo a questo punto il semplice listato che effettua questa operazione (DEMO6); il programma risulta un po’ lungo ma è molto semplice da comprendere. Come al solito, la prima parte comprende l'inizializzazione delle porte: la porta B viene configurata metà come ingresso e metà come uscita, per realizzare la lettura della tastiera, mentre la porta A viene configurata come uscita, in quanto ad essa è collegata la decodifica BCD/7 segmenti che ci permetterà di visualizzare il tasto che viene premuto. Dopo questa operazione vengono poste a 1 logico le quattro linee di uscita della porta b attraverso quattro istruzioni BSF che, lo ricordiamo, pongono a 1, cioè settano, il bit di un file.

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 19 utenti e 67 visitatori collegati.

Ultimi Commenti