Sistema per la gestione di un parcheggio
Gruppo: Tagnani, Dumbrava, Scaccia, Di Clemente
Indice 1.Parcheggio 6
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
2.Microcontrollore PIC 16F876 9
2.1.Descrizione del dispositivo 9
2.2.Schema a blocchi 9
2.3.Descrizione dei segnali 9
2.4.Organizzazione della memoria11
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
3.1.Generalità sui sistemi di sviluppo 16
3.2.Ambiente integrato MPLAB 16
3.2.1.Editing....................................................................................................................................16
3.2.2.Assembling.............................................................................................................................16
3.2.3.Simulazione e debug..............................................................................................................16
3.3.Programmazione 16
3.4.Esempio 16
3.4.1.Editing....................................................................................................................................16
3.4.2.Assembling.............................................................................................................................17
4.Scheda di prova 20
4.1.Funzione della scheda 20
4.2.Funzionamento 20
4.3.Schema elettrico 20
4.4.Software 21
4.4.1.Editing....................................................................................................................................21
4.4.2.Assembling.............................................................................................................................22
4.4.3.Programmazione del PIC.......................................................................................................22
4.5.Collaudo 22
5.1.Funzione del blocco 26
5.2.Richiami teorici 26
5.3.Funzionamento 27
5.4.Schema elettrico 27
5.5.Generazione del software di prova 28
5.5.1.Registrazione della voce.........................................................................................................28
5.5.2.Memorizzazione dei campioni in formato numerico.............................................................29
5.5.3.Trasporto dei campioni su foglio elettronico.........................................................................30
5.5.4.Trasformazione positiva dei campioni...................................................................................31
5.5.5.Adeguamento al range 0-255.................................................................................................32
2
5.5.6.Troncamento della parte decimale.........................................................................................33
5.5.7.Grafico di prova del foglio elettronico...................................................................................33
5.5.8. Programma in Basic..............................................................................................................34
5.6.Collaudo 34 6.Circuito di comando per motori 36
6.1.Funzione del blocco 36
6.2.Funzionamento 36
6.3.Schema elettrico 37
6.4.Descrizione dei componenti 37
6.4.1.Transistor TIP31C..................................................................................................................37
6.4.2.Transistor TIP32C..................................................................................................................38
6.5.Software di prova 38
6.5.1.Funzionamento del programma..............................................................................................38
6.5.2.Diagramma di flusso..............................................................................................................38
6.5.3.File di prova...........................................................................................................................39
6.6.Collaudo statico 39
6.7.Collaudo con PIC 39 7.Visualizzatore 41
7.1.Funzione del blocco 41
7.2.Funzionamento 41
7.3.Schema elettrico 42
7.4.Descrizione dei componenti 42
7.4.1.Circuito integrato 9368...........................................................................................................42
7.4.2.Display a 7 segmenti..............................................................................................................43
7.5.Software di prova 43
7.5.1.Funzionamento del programma..............................................................................................43
7.5.2.Diagramma di flusso..............................................................................................................44
7.5.3.File di prova...........................................................................................................................45
7.6.Collaudo 45 8.Tastiera 47
8.1.Funzione del blocco 47
8.2.Funzionamento 47
8.3.Schema elettrico 48
8.4.Software di prova 48
8.4.1.Funzionamento del programma..............................................................................................48
8.4.2.Diagramma di flusso..............................................................................................................48
8.4.3.File di prova con MPLAB......................................................................................................49
8.4.4.File di prova con MikroBasic.................................................................................................51
8.5.Collaudo 51 9.Semaforo 53
9.1.Funzione del blocco 53
9.2.Funzionamento 53
9.3.Schema elettrico 53
9.4.Software di prova 53
9.5.Collaudo 54 10.Schema elettrico definitivo55
11.Software di gestione 57
11.1.Descrizione del problema 57
11.2.Diagramma di flusso 57
11.3.Scrittura sorgente 57
11.4.Software definitivo 58
11.5.Assemblaggio 71 3
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 que
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.