Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
11.6.Programmazione del PIC 71
12.Collaudo definitivo 72
4
Capitolo 1°: Parcheggio
1.1. Specifiche di progetto ............................................................................................................... 6
1.2. Modalità di funzionamento ....................................................................................................... 7
1.3. Schema a blocchi ...................................................................................................................... 7
1.4. Funzione svolta dai singoli blocchi ........................................................................................... 7
5
1. Parcheggio
1.1. Specifiche di progetto
Si vuole realizzare una “scheda” di controllo, per parcheggio, realizzata mediante un PIC 16F876.
Il sistema è composto da:
Un visualizzatore, da 0 a 99, indicante il numero di posti disponibili;
Due pulsanti, che permettono di aprire le sbarre all’arrivo delle automobili, per accedere o
uscire dal parcheggio. Inoltre sono necessari per il conteggio dei posti auto;
Due luci di colore rosso e verde, indicanti il momento opportuno per valicare la sbarra;
Due motori che permettono il movimento delle sbarre;
Un altoparlante, che permette di “colloquiare” con gli automobilisti.
LUCI
MOTORI
PULSANTI
P
I VISUALIZZATORI
C ALTOPARLANTE
6
1.2. Modalità di funzionamento
Il circuito permette, premendo il pulsante, di accedere al parcheggio, ma solo nella condizione che vi
siano dei posti liberi, quindi quando sul visualizzatore è indicato un numero diverso da 0. Nel caso in
cui i posti liberi siano esauriti il circuito non permette l’accesso ad altre auto; contemporaneamente il
pulsante d’ingresso è disabilitato. All’ingresso inoltre è presente un visualizzatore che indica il numero
dei posti disponibili. Sia all’accesso che all’uscita, il sistema riproduce un messaggio vocale.
1.3. Schema a blocchi
1.4. Funzione svolta dai singoli blocchi
Ogni singolo blocco svolge un compito fondamentale al fine del funzionamento dell’intero circuito:
PIC (Peripheral Interface Controller): è il “cervello” del nostro circuito. Svolge tutte le
operazioni necessarie per eseguire il programma che comanderà tutti i processi;
I porti: sono dei dispositivi necessari per l’interfaccia dei periferici di ingresso e uscita con il
microcontrollore. Sono distinguibili in: porti d’ingresso e di uscita, chiamati anche
rispettivamente buffer tristate e latch bufferizzati;
Motori, luci e visualizzatori: sono tre periferici di uscita, che permettono l’apertura delle sbarre,
la possibilità di entrare o di uscire e la visualizzazione dei posti disponibili;
Pulsanti: anche questo è un periferico, ma si differenzia dagli altri in quanto è di ingresso e
permette l’acquisizione dei dati (“comunica” al microcontrollore se qualcuno ha premuto i
pulsanti per l’accesso o l’uscita dal parcheggio);
L’ altoparlante è in grado di riprodurre un messaggio vocale.
7
Capitolo 2°: Microcontrollore PIC 16F876
2.1. Descrizione del dispositivo ....................................................................................................... 9
2.2. Schema a blocchi
...................................................................................................................... 9
2.3. Descrizione dei segnali ............................................................................................................. 9
2.4. Organizzazione della memoria ................................................................................................ 11
2.4.1. Memoria programma ....................................................................................................... 11
2.4.2. Memoria dati
................................................................................................................... 11
2.4.3. Registri speciali ............................................................................................................... 12
2.4.3.1. Registri PCL e STATUS ....................................................................................... 12
2.4.3.2. Registri TRIS_A, TRIS_B e TRIS_C ................................................................. 13
2.4.3.3. Registri PORT_A, PORT_B e PORT_C ........................................................... 13
2.4.3.4. Registri ADCON0 e ADCON1 ............................................................................. 13
2.5. Set d’istruzioni ........................................................................................................................ 13
2.5.1. Istruzioni di trasferimento dati ........................................................................................ 13
2.5.2. Istruzioni “byte oriented” ................................................................................................ 14
2.5.3. Istruzioni “bit oriented” .................................................................................................. 14
8
2. Microcontrollore PIC 16F876
2.1. Descrizione del dispositivo
Il PIC 16F876 è un dispositivo che presenta le seguenti caratteristiche:
Memoria:
una memoria destinata al programma da 8K (parola da 14 bit) di tipo FLASH
EEPROM;
una memoria dati da 368byte (parola da 8 bit) di tipo RAM e 256byte di tipo EEPROM;
Clock: il microcontrollore può lavorare con segnali di clock aventi frequenze comprese 4MHz a
20MHz;
Alimentazione: singola compresa tra 2,0V e 5,5V con un assorbimento di correte di appena
1μA in standby e quasi 2mA ad una frequenza del clock pari a 4MHZ con un'alimentazione di
5V;
Periferiche di I/O: possiede un totale di 22 linee dedicate ad operazioni di input/output distinte
in tre porti: RA (6 linee), RB (8 linee), RC (8 linee). Ciascuna linea di un porto può essere
configurata come input o output;
Set di istruzioni: 35 scritte in linguaggio assembly.
2.2. Schema a blocchi
MEMORIA PER IL PROGRAMMA
MEMORIA PER I DATI
CLOCK PORTI di
I/O
CPU
In figura è rappresentata la struttura interna di un microcontrollore PIC 16F876.
2.3. Descrizione dei segnali
L’integrato è provvisto di 28 linee:
Tre per l’alimentazione, una linea per Vdd e due per Vss (massa);
Sei (RA0 a RA5), del PORT_A. Ogni linea può essere programmata in modo indipendente
come input o output. La RA4 può essere utilizzata anche come ingresso del clock esterno. Se
il bit del registro TRIS_A si trova al livello logico alto allora la linea corrispondente del porto è
d’ingresso, invece se si trova al livello logico basso la linea è d’uscita.
Otto (RB0 a RB7), del PORT_B. È possibile, via software, collegare alle linee di uscita un
debole carico di pull-up interno. La linea RB0 è utilizzata anche come ingresso per segnali
d’interrupt esterni. Le linee da RB4 a RB7, programmate come ingressi, possono generare un
interrupt. I pull-up interni possono essere utilizzati per mantenere al livello logico alto le linee
del PORT_B quando sono usate come ingressi. Se i bit del registro TRIS_B si trovano al
9
livello logico alto allora il porto è d’ingresso, invece se si trovano al livello logico basso il porto
è d’uscita.
Otto (RC0 a RC7), del PORT_C. Se i bit del registro TRIS_C si trovano al livello logico alto
allora il porto è d’ingresso, invece se si trovano al livello logico basso il porto è d’uscita.
Una di reset MCLR, attiva al livello basso. In condizioni normali di funzionamento deve essere
posta a livello logico alto collegandola con un resistore di pull-up a Vdd. È opportuno non
collegare direttamente a massa la linea per il reset.
Due di OSC1/CLKIN e OSC2/CLKOUT, per il collegamento con l’oscillatore esterno.
Nella tabella sottostante sono descritti i principali segnali del dispositivo. Si tenga presente che molti
dei pin svolgono più di una funzione.
PIN FUNZIONE DESCRIZIONE
1 MCLR Vpp Reset - ingresso per la tensione di programmazione
2 RA0 AN0 I/0 digitale Port A - ingresso canale 0 analogico
3 RA1 AN1 I/0 digitale Port A - ingresso canale 1 analogico
4 RA2 AN2 Vref- I/0 digitale Port A - ingresso canale 2 analogico
5 RA3 AN3 Vref+ I/0 digitale Port A - ingresso canale 3 analogico
6 RA4 T0CKI I/0 digitale Port A - ingresso clock TMRO
7 RA5 AN4 SS I/0 digitale Port A - ingresso canale 4 analogico
8 Vss GND
9 OSC1 CLKIN Ingresso oscillatore a cristallo - ingresso clock esterno
10 OSC2 CLKOUT Uscita oscillatore a cristallo - uscita clock (1/4 f req. di OSC1)
11 RC0 T1CKI T1OSO I/0 digitale Port C - ingresso clockTMR1 - out oscill. TMR1
12 RC1 CCP2 T1OSI I/0 digitale Port C - input Capture 2 - input oscill. TMR1
13 RC2 CCP1 I/0 digitale Port C- input Capture 1
14 RC3 SCK SCL I/0 digitale Port C
15 RC4 SDI SDA I/0 digitale Port C
16 RC5 SDO I/0 digitale Port C
17 RC6 TX CK I/0 digitale Port C - Tx per trasmiss. Asincrona - clock sincrona
18 RC7 RX DT I/0 digitale Port C - Rx per ricezione Asincrona - dati sincrona
19 Vss GND
20 Vdd Positivo alimentazione
21 RB0 INT I/0 digitale Port B - ingresso interrupt
22 RB1 I/0 digitale Port B
23 RB2 I/0 digitale Port B
24 RB3 PGM I/0 digitale Port B - ingresso per la programmazione
25 RB4 I/0 digitale Port B
26 RB5 I/0 digitale Port B
27 RB6 PGC I/0 digitale Port B - clock per programmazione seriale
28 RB7 PGD I/0 digitale Port B - dati per programmazione seriale
10
2.4. Organizzazione della memoria
La struttura interna della memoria, è costituita principalmente da due blocchi:
MEMORIA PROGRAMMA
FLASH EEPROM
8K
MEMORIA DATI
RAM
368Bytes
registri
funzioni
speciali
32Bytes
registri di uso
generale
EEPROM 96bytes
256Bytes 80bytes
80bytes
80bytes
2.4.1. Memoria programma
La memoria programma del PIC 16F876 è di 8K x 14bit ed è di tipo FLASH EEPROM. Per mezzo di
un idoneo programmatore le locazioni della memoria possono essere cancellate con segnali elettrici e
quindi essere nuovamente scritte. La cancellazione può riguardare una singola locazione o più
locazioni. Ciascuna locazione è distinta da un indirizzo, normalmente espresso in esadecimale, a
partire da 0000 fino a 1FFF . All’avvio il program counter che ha 13 bit punta alla locazione con
h h
indirizzo 0000 (locazione di reset) e per questo motivo tale locazione deve contenere il primo codice
h
del programma, invece dopo un’istruzione interrupt il program counter punta alla locazione con
indirizzo 0004 .
h
2.4.2. Memoria dati
La memoria dati è suddivisa in due sezioni distinte:
Memoria di tipo EEPROM, con estensione di 256 locazioni di un byte ciascuna
Memoria di tipo RAM da 368 locazioni di 8bit che possono essere suddivisi in quattro banchi:
primo banco con indirizzamento 00 – 7F di cui le locazioni 00 – 1F sono riservate ai
h h h h
registi speciali quelle 20 – 7F riservate per i registri di uso generale
h h
secondo banco con indirizzamento 80 – EF di cui le locazioni 80 – 9F sono riservate
h h h h
ai registi speciali quelle A0 – EF riservate per i registri di uso generale
h h
terzo banco con indirizzamento 100 – 16F di cui le locazioni 100 – 11F sono
h h h h
riservate ai registi speciali quelle 120 – 16F riservate per i registri di uso generale
h h
quarto banco con indirizzamento 180 – 1EF di cui le locazioni 180 – 19F sono
h h h h
riservate ai registi speciali quelle 1A0 – 1EF riservate per i registri di uso generale
h h
Indirect addr. 00h Indirect addr. 80h Indirect addr. 100h Indirect addr. 180h
TMR0 01h OPTION_REG 81h TMR0 101h OPTION_REG 181h
PCL 02h PCL 82h PCL 102h PCL 182h
STATUS 03h STATUS 83h STATUS 103h STATUS 183h
FSR 04h FSR 84h FSR 104h FSR 184h
PORT_A 05h TRIS_A 85h 105h 185h
11
PORT_B 06h TRIS_B 86h PORT_B 106h TRIS_B 186h
PORT_C 07h TRIS_C 87h 107h 187h
PORTD 08h 88h 108h 188h
PORTE 09h 89h 109h 189h
PCLATH 0Ah PCLATH 8Ah PCLATH 10Ah PCLATH 18Ah
INTCON 0Bh INTCON 8Bh INTCON 10Bh INTCON 18Bh
PIR1 0Ch PIE1 8Ch EEDATA 10Ch EECON1 18Ch
TMR1L 0Dh PIE2 8Dh EEADR 10Dh EECON2 18Dh
TMR1H 0Eh PCON 8Eh EEDATH 10Eh Reserved(2) 18Eh
T1CON 0Fh 8Fh EEADRH 10Fh Reserved(2) 18Fh
TMR2 10h 90h 110h 190h
T2CON 11h SSPCON2 91h 111h 191h
SSPBUF 12h PR2 92h 112h 192h
SSPCON 13h SSPADD 93h 113h 193h
CCPR1L 14h SSPSTAT 94h 114h 194h