- EEPROM i PIC16F877A:
- Kretsdiagram og forklaring:
- Simulering av bruk av PIC EEPROM:
- Programmering av PIC for EEPROM:
- Jobber:
I denne opplæringen vil vi lære hvor enkelt det er å lagre data ved hjelp av EEPROM som er tilstede i PIC16F877A Microcontroller. I de fleste sanntidsprosjekter må vi kanskje lagre data som ikke bør slettes selv når strømmen er slått av. Dette kan høres ut som en komplisert prosess, men ved hjelp av XC8 Compiler kan denne oppgaven gjøres ved å bare bruke en enkelt kodelinje. Hvis dataene er store når det gjelder megabyte, kan vi grensesnitt en lagringsenhet som et SD-kort og lagre disse dataene på dem. Men vi kan unngå den anstrengende prosessen hvis dataene er små, vi kan ganske enkelt bruke EEPROM til stede i PIC Microcontroller for å lagre dataene våre og hente dem når som helst vi vil.
Denne PIC EEPROM-opplæringen er en del av en sekvens av PIC Microcontroller Tutorials der vi startet fra et veldig grunnleggende nivå. Hvis du ikke har lært de foregående opplæringene, ville det være bedre å ta en titt på dem nå, fordi denne opplæringen forutsetter at du er kjent med Grensesnitt LCD med PIC Microcontroller og bruk av ADC med PIC Microcontroller.
EEPROM i PIC16F877A:
EEPROM står for “Elektronisk slettbart og programmerbart skrivebeskyttet minne”. Som navnet antyder, er det et minne som er inne i PIC Microcontroller der vi kan skrive / lese data ved å programmere det til å gjøre det. Dataene som er lagret i dette slettes bare hvis det er nevnt å gjøre det i programmet. Mengden lagringsplass som er tilgjengelig i EEPROM varierer avhengig av hver mikrokontroller; detaljene vil bli gitt i databladet som vanlig. I vårt tilfelle for PIC16F877A er ledig plass 256 byte som nevnt i spesifikasjonsdatabladet. La oss nå se hvordan vi kan bruke disse 256 byte til å lese / skrive data ved hjelp av et enkelt eksperimentelt oppsett.
Kretsdiagram og forklaring:
Kretsskjemaet for prosjektet er vist ovenfor. Vi har grensesnitt en LCD for å visualisere dataene som blir lagret og hentet. Et normalt potensiometer er koblet til AN4 Analog kanal, så mat inn variabel spenning, denne variable spenningen vil bli brukt som dataene som skal lagres i EEPROM. Vi har også brukt en trykknapp på RB0, når du trykker på denne knappen lagres dataene fra den analoge kanalen i EEPROM.
Denne forbindelsen kan gjøres på et brødbrett. De pinouts av PIC mikrokontroller, er vist i tabellen nedenfor.
S. nei: |
PIN-kode |
Pin-navn |
Koblet til |
1 |
21 |
RD2 |
RS på LCD |
2 |
22 |
RD3 |
E av LCD |
3 |
27 |
RD4 |
D4 av LCD |
4 |
28 |
RD5 |
D5 av LCD |
5 |
29 |
RD6 |
D6 av LCD |
6 |
30 |
RD7 |
D7 av LCD |
7 |
33 |
RBO / INT |
Trykknapp |
8 |
7 |
AN4 |
Potensiometer |
Simulering av bruk av PIC EEPROM:
Dette prosjektet involverer også en simulering designet med Proteus, som vi kan simulere arbeidet med prosjektet uten maskinvare. Programmet for denne simuleringen er gitt på slutten av denne veiledningen. Du kan ganske enkelt bruke Hex-filen herfra og simulere hele prosessen.
Under simuleringen kan du visualisere gjeldende ADC-verdi og data lagret i EEPROM på LCD-skjermen. For å lagre den nåværende ADC-verdien i EEPROM, trykk bare på bryteren som er koblet til RB0, så lagres den. Et øyeblikksbilde av simuleringen er vist nedenfor.
Programmering av PIC for EEPROM:
Den komplette koden for denne opplæringen er gitt på slutten av denne opplæringen. I vårt program må vi lese Verdiene fra ADC-modulen, og når du trykker på en knapp, må vi lagre den verdien i vår EEPROM. Siden vi allerede har lært om ADC og LCD-grensesnitt, vil jeg forklare koden for å lagre og hente data fra EEPROM.
I følge databladet "Disse enhetene har 4 eller 8K ord med program Flash, med et adresseområde fra 0000h til 1FFFh for PIC16F877A". Dette betyr at hver EEPROM-lagringsplass har en adresse den er tilgjengelig gjennom, og i vår MCU starter adressen fra 0000 til 1FFFh.
For å lagre data i en bestemt EEPROM-adresse, bruk bare linjen nedenfor.
eeprom_write (0, adc);
Her er “adc” en variabel av typen heltall der dataene som skal lagres er til stede. Og "0" er adressen til EEPROM som dataene våre lagres på. Syntaksen "eeprom_write" er gitt av vår XC8-complier, og derfor blir registerene automatisk ivaretatt av kompilatoren.
For å hente data som allerede er lagret i EEPROM og lagre dem i en variabel, kan følgende linje med kode brukes.
Sadc = (int) eeprom_read (0);
Her er "Sadc" variabelen der dataene fra EEPROM vil bli lagret. Og "0" er adressen til EEPROM som vi henter dataene fra. Syntaksen “eeprom_read” er gitt av vår XC8-complier, og derfor blir registerene automatisk ivaretatt av kompilatoren. Dataene som er lagret i EEPROM, vil være i heksadesimal type. Derfor konverterer vi dem til heltallstype ved å foran en (int) før syntaksen.
Jobber:
Når vi forstår hvordan koden fungerer og gjør oss klar med maskinvaren, kan vi teste ut koden. Last opp koden til PIC Microcontroller og slå på oppsettet. Hvis alt fungerer som forventet, bør du se gjeldende ADC-verdier vises på LCD-skjermen. Du kan nå trykke på knappen for å lagre ADC-verdien i EEPROM. Nå sjekker du om verdien er lagret ved å slå av hele systemet og slå det på igjen. Når den er slått på, bør du se den tidligere lagrede verdien på LCD-skjermen.
Fullstendig arbeid med dette prosjektet for å bruke PIC Microcontroller EEPROM er vist i videoen nedenfor. Håper du forsto opplæringen og likte å gjøre det. Hvis du er i tvil, kan du skrive dem i kommentarseksjonen nedenfor eller legge dem ut på forumene våre.