PIC 16F877 / 16F874 Development Board v. 1.1

You are the visitor n.

Fare click qui per la versione Italiana

Best view with 1024x768

 
 
The Development Board v. 1.1 connected to an LCD display. It is well visible (read further, in the description) the led row to check the logic state of till to 8 I/O ports or external circuits' pins. Of course, if you own an 8 trace oscilloscope, you can do without it. :-)) On the right bottom the programming cable.
 
Under, the PCB of the Development Board (version 1.0) - On the right, the DB v. 1.1 at work
 
Back to Home Page

E-mail address

 
On this site you can now find the new version (v. 1.2) (Italian version at the moment) of the circuit here described (version 1.1). If you are interested, just click on this link

At the moment, sorry, the complete document is available in Italian version only.
I am going to translate it as soon as possible.
For your convenience, I have reported here the part still in Italian (the most part at the moment!); if you think you can find here something interesting, please bookmark this link and visit this page again.

F. Iacopetti


Introduction

After I could have the comfortability of using a PIC 16F84 / C84 Evaluation Board, designed and built by myself according to my need, when approaching a higher level microcontroller I decided to go on in the same way, of course trying to add something useful but respecting the size I had choosen for the PCB. Like the Evaluation Board for the 16F84, this circuit allows the use of the 16F877 in the RC and XT mode, that is with the clock signal generated by a resistor-capacitor net or by a crystal, but above all it allows the interfacing of the PIC with any external circuit in a very useful and in the same time affordable way. On the board it is placed, as well as a little trimmer to experience the on-board A/D converters, a CMOS octal buffer driving 8 small LEDs; two series of connectors allows in this way to show the logic state of I/O pins and of any other terminal of external circuits (of course connected to the same ground reference of the D.B.) without charging sources. The version presented here is the 1.1, finished in June 2002; it is the evolution of the version 1.0, of the previous month, to which it adds some important features.

Acknowledgement and disclaimers

This project is entirely personal; an acknowledgement goes to the software allowing me to realize the circuit's layout. It is the program PCB Elegance v. 2.0; I have it in the FREE version, limited to 200 pins, by MERCO Electronics, which has authorized me by e-mail also to non-personal purposes.
Microchip and PIC are registered trademarks..

Note: Although it's theoretically possible to use other forms of supply, this Development Board has been projected to receive supply from a 9V battery and interfaced only with circuits with low voltage batteries supply.

In any case, be always aware of what you are doing!

Being this material at free disposal of whoever desires it, it is absolutely forbidden any form of use for commercial purposes.
It is also forbidden any change to the circuit if not for didactic or purely personal purposes; if this is the case, they must not take anyway to any form of direct or indirect profit.
If, in whichever way, you wish to divulge such changes, it is compulsory to ask a written permit to the author of this article (also by e-mail, at f_iacopetti@libero.it).
The circuit's layout and all the informations contained in this page are supplied "as they are", without any form of warranty. I don't assume of course any direct or indirect responsibility for direct or indirect damages to things or person coming from informations got from this article.
Suggestions of any kind to allow me to improve the circuit are well accepted


Circuit's characteristics and description

Let's immediately say that this circuit is not a PIC programmer, but it can be easily interfaced with one of the many ones that it is possible to find, allowing not to remove the microcontroller from the D.B. during programming.
The D.B. is built on a double side board, so it's not just easy to realize; anyway, just with a look to the layout, it is easy to agree that it was the only feasible way, unless one decided to insert dozens bridges. La maggior parte delle modalità di funzionamento del microcontrollore è selezionabile mediante una serie di dip-switch a 4 vie e a 6 vie; è possibile portare alla basetta segnali esterni di alimentazione e di I/O, oppure attingerli da essa, nonchè portare al chip i segnali per la programmazione; tutti i collegamenti con il mondo esterno possono essere realizzati comodamente utilizzando la doppia fila di connettori presenti o previsti sui lati del circuito, una per connettori stabili, una per fili volanti.
Prima di procedere con la descrizione del circuito, introduciamo una nota operativa.

Note per la identificazione degli switch e dei terminali dei connettori

Il riferimento ad un particolare interruttore dello switch Sx avverrà mediante la grafia Sx-n, ove n e x sono due numeri interi; medesima grafia per i connettori JPx. Il suffisso "E" indica semplicemente "extra". Ad esempio, il riferimento allo switch Sx-1 indica il primo interruttore dello switch Sx a partire dall'alto nella figura in cui è riportato il disegno sovrapposto di componenti, ponticelli e piste; analogo significato nel riferimento ai connettori. Ad esempio, S6-4 non è connesso ad alcuna pista; quando aperto, S5-6 è connesso solo a S5-3 e a JP9-3; quando S5-6 e S3-6 sono chiusi, c'è connessione fra JP-3 il piedino 36 del PIC.
Nota: nel testo si farà riferimento quasi esclusivamente a JP1, JP2 .. JP8; resta inteso che si tratta di riferimenti anche ai connettori JPE1, JPE2 .. JPE8 (e JPE9) rispettivamente, essendo gli elementi omologhi dei due insiemi collegati fra loro pin a pin.

Torniamo adesso alle caratteristiche della Development Board.

Supply: il circuito è stato progettato per essere alimentato mediante batteria a 9V, ma è possibile utilizzare anche una sorgente continua non regolata 7-15V (un 7805 fornisce +5V regolati al PIC, ad un eventuale programmatore e ad un eventuale circuito esterno), oppure alimentazione da un circuito esterno mediante JP8 - S6 (si consultino i datasheet Microchip per il range di valori ammessi).

/MCLR pin: è possibile controllarlo mediante circuito esterno o mediante programmatore, connetterlo mediante pull-up direttamente a Vdd, oppure anche tramite capacità a Vss in modo da implementare un circuito di Power On (peraltro già presente nel PIC); esiste anche la possibilità di resettare il PIC mediante pulsante S4.

Connection from and to external circuits of Vdd, Vss, /MCLR: connessione da o verso un circuito esterno di Vdd, Vss, /MCLR (quest'ultimo indipendentemente da quale sia la sorgente di alimentazione); connessione di Vdd e Vss da o verso un qualunque programmatore.

Clock generation: connettore con la possibilità di ospitare un quarzo (testati: 4MHz, 8 MHz, 20 MHz), modalità RC con resistenza regolabile, per una oscillazione regolabile su un vastissimo range (testato solo parzialmente), fino a quualche MHz;
possibilità di ricevere il clock da un circuito esterno o di inviare ad esso l'oscillazione di riferimento; questa potenzialità non è stata testata sperimentalmente; sono state condotte prove, anche se non certo esaustive, in merito ad eventuale cross-talking fra la pista del clock e le piste di segnale, nonché fra le piste stesse, senza al momento rilevare problemi anche a 20 MHz.

Possibility to program the PIC just on the Development Board: è possibile connettere la basetta ad un programmatore mediante connettore a 5 fili, con possibilità di fornire alimentazione al programmatore o di riceverla da esso.

Connection from and to external circuits of I/O pins: tutti i piedini di I/O sono portati a connettori per interfacciare il PIC con un circuito esterno. Nel circuito in fotografia mancano alcuni connettori fissi, mentre sono presenti tutti i SIL per fili volanti.

Spie alimentazione: tre led inseribili singolarmente mediante jumpers indicano la presenza di alimentazione in parti diverse del circuito e ricordano di prestare attenzione ad evitare conflitti elettrici fra le possibili sorgenti di alimentazione.
Esiste anche un diodo per la protezione dall'inversione della polarità di alimentazione al 7805 (ma non per le altre sorgenti).

Some applications
Per quanto riguarda le possibili applicazioni, la basetta consente di avere un circuito di base sicuramente funzionante e facilmente interfacciabile, con conseguente possibilità di dedicarsi alla messa a punto del programma e del circuito da sviluppare.
Al momento, per mancanza di tempo, ho solamente provato alcuni programmi per sperimentare alcune funzionalità del 16F877; con il PIC 16F84, suo parente di categoria inferiore, ho invece realizzato, tra l'altro, un frequenzimetro di L.F. (fino a circa 18 KHz), un cardiofrequenzimetro (mediante coppia led-fotoresistore posta in prossimità della cute), entrambi con visualizzazione su display 7 segmenti, una interfaccia per la comunicazione con un mouse PS/2.


Selezione della modalità di funzionamento

Come anticipato, la selezione fra le diverse modalità di funzionamento avviene mediante dip-switch.

Veniamo subito alla descrizione delle loro funzioni.

S1
Controlla l'alimentazione e il reset.

Alimentazione. Con S1-1 e S1-2 su ON si invia al PIC l'alimentazione positiva proveniente dal 7805, ovvero +5V regolati, e lo si connette al comune del medesimo regolatore, che coincide con il comune del circuito di alimentazione esterno (J1). In particolare, lo switch S1-1 è per il positivo a +5V (Vdd) e lo switch S1-2 è per la massa (Vss).
Lo switch S1-3, se attivato, permette al piedino /MCLR di essere connesso mediante pull-up alla Vdd (se inviata al PIC), il che, in parole povere, significa che in tal caso il PIC non viene tenuto nello stato di reset e il programma viene eseguito.
Per resettare il microcontrollore è comunque disponibile (e talvolta preferibile) un pulsante di Reset (S4).
Lo switch S1-4 permette di inserire fra il piedino /MCLR e la massa una capacità, in modo tale da ottenere l'uscita dallo stato di reset dopo un certo tempo dal collegamento all'alimentazione dello switch S1-3 connesso a /MCLR.
Tale espediente (personalmente raramente utilizzato) dovrebbe essere comunque superfluo, visto che il PIC possiede internamente un circuito che svolge la medesima funzione.
Quando si vuole attivare il PIC, suggerisco di porre su OFF tutti gli interruttori di S1, attivare l'alimentazione (sia essa quella inviata al 7805 o quella proveniente da un circuito esterno), porre su ON S1-1 ed S1-2 (Vdd e Vss), porre su ON S1-3 (/MCLR) ed eventualmente S1-4 per il Power On ( quest'ultimo prima di S1-3). Il Pic comincia allora a funzionare. In dipendenza dal programma, può essere conveniente o necessario resettare il PIC con il pulsante S4.

S5
Si tratta di un dip-switch a 6 vie che controlla la programmazione del PIC.
Fare molta attenzione, eventualmente, nel connettere la Vdd anche al programmatore se già inviata al PIC dal 7805 tramite tramite S1-1 e S1-2, oppure da un circuito esterno tramite JP8 ed S6. Alcuni programmatori hanno infatti bisogno di alimentazione, che può dunque essere quella presente sui piedini del PIC fornita attraverso S1, ma altri forniscono essi stessi l'alimentazione al PIC.
S5-1 connette la Vdd presente sul piedino del PIC a quella del programmatore.
S5-3 connette invece la Vss del PIC al programmatore.
S5-2 connette al programmatore il piedino /MCLR.
S5-4 ed S5-5 connettono rispettivamente la RB6 ed RB7 del programmatore, tramite lo switch S3, ai relativi piedini del PIC. La funzione di S3 è descritta oltre.
S5-6 connette alla massa del programmatore, se S3-3 è aperto, il piedino RB3 del PIC; tale operazione è necessaria se si utilizza la funzione di programmazione a bassa tensione (Low Voltage Programming), tra l'altro di default sui PIC usciti dalla fabbrica, che prevede di porre a massa RB3 durante le operazioni di programmazione. RB3, se si utilizza la LVP, selezionabile mediante programmazione dei fuses, non può essere usato come piedino di I/O.

S2
Si tratta dello switch che controlla la sorgente dell'oscillazione di riferimento con cui il PIC genera il clock interno. Da notare che, almeno nel caso di sorgente quarzata, l'oscillazione sui terminali Osc1 e Osc2 risulta sinusoidale.
S2-5 ed S2-6 connettono i piedini Osc1 e Osc2 del PIC al quarzo, facendo in tal modo funzionare il microcontrollore in modalità XT.
Tramite S2-1 ed S2-2 si connettono i piedini Osc1 e Osc2 al connettore JP1, permettendo in tal modo di portare tali segnali ad un circuito esterno o di riceverli da esso.
S2-3 connette al PIC la rete RC per la generazione del clock in tale modalità. Il potenziometro permette di regolare la frequenza di oscillazione su un ampio range. Il valore minimo di resistenza nella rete RC è dato dal valore di RE4.
Naturalmente solo una sorgente di oscillazione (RC o quarzo) deve essere selezionata in ogni istante, altrimenti le conseguenze sono imprevedibili.

S3
Tramite S3-1,S3-2 ed S3-3 si connettono i piedini del PIC RB7, RB6, RB3 rispettivamente ai connettori JP5-8, JP5-7, JP5-4.
Tramite S3-4 e S3-5 si connettono i piedini RB7 ed RB6 agli switch S5-5 e S5-4 rispettivamente (notare l'inversione di ordine), e, nel caso questi siano chiusi, anche ai connettori JP9-5 e JP9-4 da connettere al programmatore.
Se si usa il LVP, durante la programmazione lo switch S3-6 va chiuso, così come anche S5-6, per connettere RB3 alla massa del programmatore.
Si raccomanda di fare attenzione, durante la programmazione, ad isolare i pin dei connettori JP5 e JPE5 connessi a RB6,RB7, RB3 aprendo S3-1, S3-2, S3-3.
E' invece buona norma, se non indispensabile, durante il normale funzionamento, isolare il PIC dal terminale di programmazione, aprendo tutti gli switch di S5 e anche S3-4, S3-5, S3-6.

S6
Con questo dip-switch si connettono i piedini Vdd,Vss del PIC ai connettori JP8 e JPE8 e JPE9, mentre /MCLR viene portato su JP7-2 e JPE7-2. In particolare, S6-1 connette Vdd a JP8-2, S6-2 connette /MCLR a JP7-2, S6-3 connette la Vss a JP8-1.
Si noti l'inversione nell'ordine fra Vdd e Vss.
Al solito, si faccia attenzione a non creare conflitto fra le alimentazioni.


Jumpers

Quando chiuso, S7 permette al led D1 di indicare la presenza di tensione in uscita al 7805.
S8 connette il led D2, il quale, in tal caso, indica la presenza di alimentazione al PIC, sia essa proveniente dal 7805, tramite S1, da JP9 tramite S5 o da JP8 tramite S6.
S9 connette invece il led D4, il quale indica la presenza di tensione fra i piedini 1 e 2 del connettore JP8; tale tensione può ovviamente essere quella fornita dal circuito che alimenta il PIC (il 7805, tramite S1, o il programmatore, tramite JP9 e S5), con S6-1 e S6-3 chiusi, oppure provenire dal connettore JP8 (in tal caso essa raggiunge il PIC solo se S6-1 e S6-3 sono chiusi.

Programmazione

Per programmare il PIC senza rimuovelo dalla Evaluation Board, si devono innanzitutto collegare a JP9 opportuni segnali e tensioni provenienti dal programmatore. In dipendenza dal tipo di quest'ultimo, si deve adottare la giusta configurazione degli switch.

Se non altrimenti specificato, tutti gli switch devono essere posti su OFF!

In ogni caso, siate sempre consapevoli di ciò che fate! Fate molta attenzione al conflitto fra le alimentazioni, e tenete presente che anche collegare fra loro due terminali "comune" (o massa, o terra) di alimentatori diversi può provocare seri danni ai circuiti!

Ad esempio, se alimentate il PIC e il programmatore con due diversi alimentatori, collegare fra loro i terminali "comune" (indispensabile) può essere molto pericoloso per la sopravvivenza dei circuiti stessi! Stessa cosa può succedere se state programmando il PIC con un programmatore collegato al computer e lo alimentate con un alimentatore! Attenzione! Quando avete dubbi, meglio utilizzare una batteria, la quale è flottante e si adegua al riferimento eventualmente imposto da un punto di connessione al circuito.

Indipendentemente da quale sia il programmatore, consiglio vivamente, soprattutto nel caso il PIC sia collegato ad un circuito esterno mediante JP8, di scollegare i terminali RB6, RB7 e RB3 del PIC dal connettore JP5 ponendo su OFF S3-1, S3-2 e S3-3. Consiglio inoltre di isolare i piedini Osc1 e Osc2 ponendo su OFF tutti gli switch di S2.

I piedini RB7 e RB6 del PIC, naturalmente, devono essere collegati tramite S3-4 e S3-5 (ON) ai piedini S5-5 e S5-4 (notare l'inversione), e da questi al programmatore collegato a JP9 ponendo su ON, appunto, gli switch S5-5 e S5-4.

Nel seguito verrà sottointeso che se si utilizza il LVP, anche S3-6 va chiuso, così come S5-6 (NOTA: il LVP non è stato testato).

Siate inoltre sicuri che, nel caso sia il programmatore a fornire alimentazione al PIC, esso sia in grado di erogare una corrente sufficiente anche all'alimentazione del led D2 (circa 5 mA).

1) Programmatore che fornisce al PIC alimentazione (Vdd e Vss), /MCLR, RB6 e RB7.
In tal caso lo switch S1 deve avere tutti gli interruttori su OFF; la programmazione avviene allora attivando S5-1 (Vdd), S5-2 (/MCLR), S5-3 (Vss), S5-4 (RB6), S5-5 (RB7).

2) Programmatore che riceve alimentazione (Vdd e Vss) dalla basetta.
2-a)
alimentazione dal 7805: in tal caso si deve portare ai terminali Vdd e Vss del PIC l'alimentazione proveniente dal regolatore ponendo su ON gli switch S1-1 e S1-2, lasciando su OFF S1-3 e S1-4; si devono poi porre su ON gli switch da S5-1 a S5-5, in modo che al programmatore arrivi la tensione di alimentazione, e che il programmatore stesso controlli il terminale di /MCLR (oltre, ovviamente, ai terminali RB6 e RB7).
2-b) alimentazione da un circuito esterno mediante JP8: si devono porre su OFF tutti gli switch di S1; si devono porre su ON S6-1 e S6-3, lasciando su OFF S6-2 (/MCLR); si devono poi attivare gli switch da S5-1 a S5-5 per inviare al programmatore l'alimentazione e da esso ricevere /MCLR, RB6 e RB7


Elenco dei componenti

Note: all resistors are 1/4 W, 5%.
For JPE14 it can be used a single 2-pins connector, with 5.08 mm step (200 mils).
All other connectors have a 2.54 mm step (100 mils).
Jumpers have a distance of 7.62 mm (300 mils) between pins.
The SIL resistor nets have 9 pins, 8 resistors with a common pin; referring to the schematic with tracks and components position, the two common terminals are both connected to ground, and they are connected for RE3 to the pin 19 of UE1 and for RE2 to the pin 1 of UE1.
I have not any problem of oscillation, so I don't use the RE6. If it should be needed, the track has to be cut to use the needed holes (for a resistor, a trimmer, etc.).

R1 - 10 kOhm
R2, R3, R5 - 680 Ohm
R4 - 100 Ohm
RE1 - Trimmer 10 kOhm
RE2 - SIL resistor net 100 kOhm
RE3 - SIL resistor net 1 kOhm
RE4 - about 10 kOhm
RE5 - Mini/micro potentiometer between 100 kOhm and 2.2 MOhm
RE6 - Resistor to eliminate oscillation problems - See the PIC 16F877 datasheet
C1, C2 - 100 nF
C3 - 100 uF 25 V
C4 - 47 uF 16 V
C5 - 10 uF 16 V
C6, C7 - 15 pF
CE1 - 33 pF or more
Y1 - Crystal between 4 MHz and 20 MHz (depending on the PIC's version)
D1, D2, D4 - LED 2.5 / 3 mm
D3 - 1N4001 or equivalent
DE1-DE8 - Rectangular LEDs 5 mm x 2 mm; step 2.54 mm
S1, S6 - 4 channels dip switch
S2, S3, S5 - 6 channels dip switch
S7, S8, S9 - Jumper
SE1 - Jumper
S4 - Normally open, unstable switch
J1 - jack connector for Vdd andVss
JPE14 - 2 pins connector step 5.08 mm per Vdd e Vss.
JP1, JP7, JP8 - 2 pins connector
JP2 - 4 pins DIL connector
JP6, JP9 - 6 pins connector
JP3, JP4, JP5 - 8 pins DIL connector
JPE1, JPE7, JPE8, JPE9 - 2 pins connector
JPE10, JPE11 - 3 pins connector
JPE2 - 4 pins DIL connector
JPE6 - 6 pins connector
JPE3, JPE4, JPE5, JPE12, JPE13 - 8 pins DIL connector
U2 - 7805 or equivalent
U1 - PIC 16F877
UE1 - 74HC541N


Realizzazione del circuito

Sono riportate, nelle seguenti immagini, le figure relative al layout del circuito e alla disposizione dei componenti.

Si tratta di immagini a 100 e 300 dpi. Per avere le immagini in una nuova finestra, da dove potrete stampare quelle a 300 dpi, potete fare click direttamente su quelle visibili qui sotto o sui link sottostanti, oppure, se utilizzate un sistema Windows (TM) 95/98, utilizzare il tasto destro del mouse e scegliere "Apri collegamento in un' altra finestra". In alternativa potete salvare le immagini sul vostro hard disk o altra memoria di massa con l'opzione contestuale "Salva immagine con nome" e stamparle in un secondo tempo con il browser o altri programmi. Con il browser si potrebbero avere problemi di dimensioni, mentre ad esempio Imaging (TM) di Windows (TM) dovrebbe stampare automaticamente con le dimensioni reali. Se avete dei dubbi sulle dimensioni della stampa ottenuta, perlomeno del layout lato rame, e temete che non sia a grandezza reale, provate a misurare le distanze fra i fori per i componenti DIL, che deve risultare di 2.54 mm fra piedini contigui e di 2.54 mm * 3 = 7.62 mm fra le due file. Ovviamente, per non incorrere in grossolani errori di misura, nel caso della distanza fra pin contigui utilizzate quella fra il primo e il nono piedino di una fila, assicurandovi che sia di 2.54 mm * (9-1) = 20.32 mm. Non riuscirete naturalmente ad apprezzare i centesimi di millimetro, e forse neppure i decimi (non avrebbe neppure senso viste le dimensioni finite delle piazzole e dei loro fori), ma se la vostra misura è appena superiore ai 20 mm dovreste essere a posto. La distanza fra le file dovrebbe invece essere approssimativamente appena superiore ai 7.5 mm. Se una delle due distanze non fosse quella attesa , detta x la relativa misura, dovreste applicare un fattore di zoom orizzontale pari a 7.62/x e un fattore di zoom verticale pari a 20.32/x.

Nella seconda figura si nota la disposizione dei componenti con la basetta vista dall'alto e in trasparenza. Da essa si può notare come il layout del lato componenti vada riprodotto sul circuito come se fosse con il lato stampato opposto al rame; per quanto riguarda il layout della parte inferiore (saldature) il lato di stampa è invece quello che andrebbe appoggiato al rame.

Lo schema elettrico non è, al momento, stampabile in maniera dettagliata.

 
 
 
Copper side layout at 100 dpi


Here the printable 300 dpi layout

Component side layout at 100 dpi


Here the printable 300 dpi layout

   
 
 
 
Component placement on the board



Here the printable 300 dpi drawing

Component placement and view of bottom side tracks (copper side, red) and top side tracks (component side, blue)

Here the printable 300 dpi drawing

   
 
 
 
Electrical schematic

Here the enlarged 100 dpi schematic

 
 
 
Hoping I have been useful to you, just to me to wish you a good work!
 
 

If you wish to contact me for informations and suggestions:

f_iacopetti@libero.it

 
Last update: August 1 2002, 22.50 HyperCounter HyperCounter