Che cos'è un PIC?
Semplici progetti per il PIC
Programmatore seriale PIC e ICSP

Semplici progetti per PIC

(per sapere come collegare il PIC a dispositivi esterni, potete fare riferimento alla guida "Corso PIC by Exemple" sul sito: http://www.tanzilli.com )

A cosa serve un circuito che fa soltanto accendere e spegnere delle lucette secondo una sequenza prestabilita, o secondo una combinazione di tasti premuta?
A parte l'albero di Natale, se ci ragionate un po', è possibile destinare un circuito di questo tipo a tante applicazioni interessanti; ad esempio potete sostituire i led con opportuni relè, ed ecco che il circuito è in grado di pilotare l'accensione di qualunque dispositivo elettrico; manovrare i vagoncini del plastico ferroviario, far accendere le luci d i casa, gestire i cicli di lavaggio di una lavabiancheria, o anche tradurre in numeri un'informazione (un display 7 segmenti altro non è che un insieme di lucette accostate)

 

Note importanti:

  • Collegate sempre tra l'alimentazione del PIC e massa un condensatore di 100KpF il più vicino possibile al piedino del PIC. Il condensatore può essere poliestere o ceramico, ma non elettrolitico.
  • All'ingresso e all'uscita del regolatore di tensione, sono disposti dei condensatori di diverse decine di microfarad elettrolitici. Ponete in parallelo ad essi dei condensatori non elettrolitici di 100KpF
  • Collegate tutti i piedini non utilizzati del PIC e degli altri componenti a massa o a +V a seconda dei casi; piedini lasciati aperti possono dare origine a comportamenti anomali imprevedibili. Se ai piedini sono connessi degli interruttori, per evitare che ad interruttore aperto il piedino rimanga anch'esso libero, prevedete delle resistenze di pull-up o pull-down a seconda dei casi, di valori prossimi 100Kohm (evitate di scendere sotto i 10Kohm)
     




Considerazioni sul registro W
Il registro W ha funzioni speciali, e non è possibile applicare su di esso istruzioni che operano sui bit (BSF, BCF, BTFSS, BTFSC)
 
Per tutti i PIC
Elenco progetti
 

 
Rotazione di 8 led alla pressione di un tasto

Per PIC16F84

Che cosa fa? L'accensione di un led avviene tutte le volte che viene premuto e rilasciato il tasto.
Ogni pressione del tasto spegne il led precedente e accende il successivo

A cosa serve? È simile al circuito che tramite relè accende con un unico tasto le luci di una stanza con una certa sequenza.
 Nota: occorrerebbe modificarlo in modo da consentire anche l'accensione simultanea di più luci

Elenco progetti

Rotazione di 8 led alla pressione di un tasto con controllo antiblocco CPU
VARIANTE

Come il progetto precedente, con in più un controllo di blocco della CPU, che resetta il PIC automaticamente
Per PIC16F84
Elenco progetti




Contatore di impulsi a ritroso con display LCD 7 segmenti

Per PIC16F84

Che cosa fa? Conta a ritroso da 9 a 0 facendo apparire la cifra sul display LCD.
Ogni pressione del tasto RA0 decrementa la cifra sullo schermo; il conteggio si arresta arrivati a 0.
Il tasto RB0 gestisce un reset asincrono

Elenco progetti

Contatore di impulsi a ritroso con display LCD 7 segmenti e autospegnimento
VARIANTE

Come il programma precedente, ha in più la funzione di autospegnimento a fine conteggio, e un led lampeggiante che avverte dell'accensione o dell'imminente spegnimento del dispositivo.
Per PIC16F84
Elenco progetti




 
Contasecondi 0 -> 9 con display LCD 7 segmenti

Per PIC16F84

Che cosa fa? Conta i secondi da 0 a 9 usando il quarzo interno e il prescaler, facendo apparire la cifra sul display LCD.
Nota: non è un contasecondi di precisione; leggere i commenti all'inizio del listato
 
Elenco progetti



 
Convertitore BCD 8421 -> decimale, con display LCD 7 segmenti

Per PIC16F84Per PIC16F876
Che cosa fa? Confronta il dato "BCD 8421" immesso tramite i tasti con una tabella inserita nella EEPROM interna e visualizza il corrispondente numero decimale su display 7 segmenti a 2 cifre
Nota: Il PIC elabora i dati di ingresso molto velocemente, pertanto durante l'immissione della sequenza binaria potrebbe visualizzare cifre inattendibili. Per evitare questo inconveniente si potrebbe modificare il programma in modo da sfruttare l'ultimo ingresso disponibile sul PIC16F84 (RA4), o uno qualunque degli altri ingressi sul PIC16F876, come abilitazione alla lettura
Nota: La tabella su EEPROM viene in questo caso creata ad ogni avvio del programma, ma potrebbe essere inserita permanentemente assieme al codice hex.

Elenco progetti

Convertitore BCD 8421 -> decimale, con display e tasto conferma immissione
VARIANTE

Come il programma precedente, ha in più un tasto per confermare l'immissione dei dati
Per PIC16F876
Elenco progetti


Gestione di uno stack FIFO / LIFO sui registri GPRs

Per PIC16F84 Che cosa fa? Memorizza un ingresso BCD8421 in uno stack creato nei registri per uso generico, in modalità FIFO o LIFO. Permette di estrarre i dati in ordine e riportarli in uscita 
Elenco progetti

Gestione di uno stack a 5 bit FIFO / LIFO sui registri GPRs
VARIANTE

Come il programma precedente, lavora con 5 bit anzicchè 4 (codice BCD + bit di stato)
Per PIC16F84
Elenco progetti


Considerazioni sulla bidirezionalità delle porte del PIC
 La direzionalità delle porte del PIC non deve essere necessariamente definita all'inizio del programma
ma può essere cambiata anche all'interno del programma stesso
Ecco un piccolo esempio da testare al simulatore
 
 
Per PIC16F84
Elenco progetti
 

Considerazioni sui banchi di registri e le variabili
 Alcune considerazioni sull'uso delle variabili nel PIC16F876: banchi distinti e banchi condivisi
(da testare al simulatore)
Per PIC16F876
altro esempio:
Elenco progetti
 


 
Rotazione di 3 led

Per PIC16F876


Che cosa fa? Accende tre led a rotazione;
il più semplice progetto che potete realizzare con il PIC16F876

Elenco progetti
 


 
Doppio convertitore BCD 8421 -> decimale, con uscite display condivise

Per PIC16F876
Che cosa fa? Due convertitori BCD 8421 - > decimale con due display LCD 7 segmenti distinti, che condividono le stesse porte di uscita del PIC

Elenco progetti

Lettura di un dato a 8 bit da bus a 4 bit
 Effettua due letture consecutive su un bus a 4 bit per ricostruire una variabile a 8 bit; un tasto viene usato per confermare l'immissione dati 
 

Per PIC16F876
Elenco progetti


 


 

I2C Master trasmettitore - ricevitore


Per PIC16F876

Che cosa fa? Gestisce il protocollo di comunicazione seriale I
2C, sfruttando i registri di supporto del PIC
Nota!: Limitazioni nel funzionamento dei simulatori; leggere intestazione del listato

Elenco progetti




 



Considerazioni sulla paginazione della flash memory
Quando il numero di righe di codice diventa elevato è necessario suddividerlo in "pagine", per consentire alle istruzioni CALL e GOTO di essere correttamente indirizzate.
Da testare al simulatore

 

Per PIC16F876
Elenco progetti