- EEPROM in PIC16F877A:
- Schema del circuito e spiegazione:
- Simulazione dell'utilizzo di PIC EEPROM:
- Programmazione PIC per EEPROM:
- Lavorando:
In questo tutorial impareremo quanto sia facile salvare i dati utilizzando la EEPROM presente nel microcontrollore PIC16F877A. Nella maggior parte dei progetti in tempo reale potremmo dover salvare alcuni dati che non dovrebbero essere cancellati anche quando l'alimentazione è spenta. Potrebbe sembrare un processo complicato, ma con l'aiuto del compilatore XC8 questa attività può essere eseguita utilizzando una sola riga di codice. Se i dati sono grandi in termini di Mega byte, possiamo interfacciare un dispositivo di archiviazione come una scheda SD e archiviare tali dati su di essi. Ma possiamo evitare quei processi faticosi se i dati sono piccoli, possiamo semplicemente usare l'EEPROM presente nel microcontrollore PIC per salvare i nostri dati e recuperarli in qualsiasi momento lo desideriamo.
Questo tutorial PIC EEPROM fa parte di una sequenza di tutorial PIC Microcontroller in cui siamo partiti da un livello molto semplice. Se non hai imparato i tutorial precedenti, sarebbe meglio esaminarli ora, perché questo tutorial presuppone che tu abbia familiarità con l'interfacciamento dell'LCD con il microcontrollore PIC e l'uso di ADC con il microcontrollore PIC.
EEPROM in PIC16F877A:
EEPROM sta per "Memoria di sola lettura cancellabile elettronicamente e programmabile". Come suggerisce il nome si tratta di una memoria presente all'interno del microcontrollore PIC in cui possiamo scrivere / leggere dati programmandoli a tal fine. I dati salvati in questo verranno cancellati solo se viene indicato di farlo nel programma. La quantità di spazio di archiviazione disponibile in EEPROM varia su ogni microcontrollore; i dettagli saranno forniti come di consueto nella scheda tecnica. Nel nostro caso per PIC16F877A lo spazio disponibile è di 256 byte, come indicato nella sua scheda tecnica. Vediamo ora come possiamo usare questi 256 byte per leggere / scrivere dati utilizzando una semplice configurazione sperimentale.
Schema del circuito e spiegazione:
Lo schema elettrico del progetto è mostrato sopra. Abbiamo interfacciato un LCD per visualizzare i dati salvati e recuperati. Un normale potenziometro è collegato al canale analogico AN4 in modo da alimentare una tensione variabile, questa tensione variabile verrà utilizzata come dati da salvare nella EEPROM. Abbiamo anche utilizzato un pulsante su RB0, quando questo pulsante viene premuto i dati dal canale analogico verranno salvati nella EEPROM.
Questa connessione può essere effettuata su una breadboard. La piedinatura del microcontrollore PIC è mostrata nella tabella seguente.
S.No: |
Codice PIN |
Nome pin |
Collegato a |
1 |
21 |
RD2 |
RS di LCD |
2 |
22 |
RD3 |
E di LCD |
3 |
27 |
RD4 |
D4 di LCD |
4 |
28 |
RD5 |
D5 di LCD |
5 |
29 |
RD6 |
D6 di LCD |
6 |
30 |
RD7 |
D7 di LCD |
7 |
33 |
RBO / INT |
Premi il bottone |
8 |
7 |
AN4 |
Potenziometro |
Simulazione dell'utilizzo di PIC EEPROM:
Questo progetto prevede anche una simulazione progettata utilizzando Proteus, utilizzando la quale possiamo simulare il funzionamento del progetto senza alcun hardware. Il programma per questa simulazione è fornito alla fine di questo tutorial. Puoi semplicemente usare il file Hex da qui e simulare l'intero processo.
Durante la simulazione è possibile visualizzare il valore ADC corrente ei dati salvati nella EEPROM sullo schermo LCD. Per salvare il valore dell'ADC corrente nella EEPROM è sufficiente premere l'interruttore collegato a RB0 e verrà salvato. Di seguito è mostrata un'istantanea della simulazione.
Programmazione PIC per EEPROM:
Il codice completo per questo tutorial viene fornito alla fine di questo tutorial. Nel nostro programma dobbiamo leggere i valori dal modulo ADC e quando viene premuto un pulsante dobbiamo salvare quel valore nella nostra EEPROM. Dato che abbiamo già imparato a conoscere gli ADC e l'interfacciamento LCD, spiegherò ulteriormente il codice per salvare e recuperare i dati da EEPROM.
Secondo la scheda tecnica "Questi dispositivi hanno 4 o 8K parole di programma Flash, con un intervallo di indirizzi da 0000h a 1FFFh per il PIC16F877A". Ciò significa che ogni spazio di archiviazione EEPROM ha un indirizzo attraverso il quale è possibile accedervi e nella nostra MCU l'indirizzo parte da 0000h fino a 1FFFh.
Per salvare un dato all'interno di un particolare indirizzo EEPROM è sufficiente utilizzare la riga sottostante.
eeprom_write (0, adc);
Qui “adc” è una variabile di tipo intero in cui sono presenti i dati da salvare. E "0" è l'indirizzo della EEPROM su cui vengono salvati i nostri dati. La sintassi "eeprom_write" è fornita dal nostro compilatore XC8 quindi i registri saranno automaticamente presi in carico dal compilatore.
Per recuperare un dato già memorizzato in EEPROM e salvarlo in una variabile è possibile utilizzare la seguente riga di codice.
Sadc = (int) eeprom_read (0);
Qui, "Sadc" è la variabile in cui verranno salvati i dati dalla EEPROM. E "0" è l'indirizzo della EEPROM da cui stiamo recuperando i dati. La sintassi “eeprom_read” è fornita dal nostro compilatore XC8 quindi i registri saranno automaticamente presi cura dal compilatore. I dati salvati in EEPROM saranno di tipo esadecimale. Quindi li convertiamo in tipo intero anteponendo un (int) prima della sintassi.
Lavorando:
Una volta che abbiamo capito come funziona il codice e ci siamo preparati con l'hardware, possiamo testare il codice. Carica il codice sul tuo microcontrollore PIC e alimenta il set-up. Se tutto funziona come previsto, dovresti vedere i valori correnti dell'ADC visualizzati sul display LCD. È ora possibile premere il pulsante per salvare il valore dell'ADC nella EEPROM. Ora verifichi se il valore è stato salvato spegnendo l'intero sistema e riaccendendolo. All'accensione dovresti vedere il valore salvato in precedenza sullo schermo LCD.
Il funzionamento completo di questo progetto per utilizzare EEPROM del microcontrollore PIC è mostrato nel video qui sotto. Spero che tu abbia capito il tutorial e ti sia piaciuto farlo. Se hai dei dubbi puoi scriverli nella sezione commenti qui sotto o pubblicarli sui nostri forum.