- EEPROM i PIC16F877A:
- Kretsschema och förklaring:
- Simulering av användning av PIC EEPROM:
- Programmering av PIC för EEPROM:
- Arbetssätt:
I denna handledning lär vi oss hur enkelt det är att spara data med EEPROM som finns i PIC16F877A Microcontroller. I de flesta realtidsprojekt kan vi behöva spara data som inte bör raderas även när strömmen är avstängd. Detta kan låta som en komplicerad process, men med hjälp av XC8 Compiler kan denna uppgift göras genom att bara använda en enda kodrad. Om data är stora när det gäller megabytes kan vi gränssnitt en lagringsenhet som ett SD-kort och lagra dessa data på dem. Men vi kan undvika de tröttsamma processerna om data är små, vi kan helt enkelt använda EEPROM som finns i PIC Microcontroller för att spara våra data och hämta den när som helst vi vill.
Denna PIC EEPROM-handledning är en del av en sekvens av PIC Microcontroller Tutorials där vi började från en mycket grundläggande nivå. Om du inte har lärt dig de tidigare självstudierna skulle det vara bättre att titta på dem nu, för den här självstudien förutsätter att du känner till gränssnitts LCD med PIC Microcontroller och att använda ADC med PIC Microcontroller.
EEPROM i PIC16F877A:
EEPROM står för “Elektroniskt raderbart och programmerbart skrivskyddat minne”. Som namnet antyder är det ett minne som finns inne i PIC Microcontroller där vi kan skriva / läsa data genom att programmera det för att göra det. Data som sparas i detta raderas endast om det nämns i programmet. Mängden tillgängligt lagringsutrymme i EEPROM varierar beroende på varje mikrokontroller; detaljerna kommer att ges i databladet som vanligt. I vårt fall för PIC16F877A är det tillgängliga utrymmet 256 byte som nämnts i specifikationsdatabladet. Låt oss nu se hur vi kan använda dessa 256 byte för att läsa / skriva data med hjälp av en enkel experimentell installation.
Kretsschema och förklaring:
Kretsschemat för projektet visas ovan. Vi har kopplat in en LCD för att visualisera data som sparas och hämtas. En normal potentiometer är ansluten till AN4 Analog kanal så mata in variabel spänning, denna variabla spänning kommer att användas som data som ska sparas i EEPROM. Vi har också använt en tryckknapp på RB0, när denna knapp trycks in sparas data från den analoga kanalen i EEPROM.
Denna anslutning kan göras på en brödbräda. De pinouts av PIC Microcontroller framgår av tabellen nedan.
S. nej: |
Pinkod |
Pin-namn |
Anslutna till |
1 |
21 |
RD2 |
RS på LCD |
2 |
22 |
RD3 |
E av LCD |
3 |
27 |
RD4 |
D4 på LCD |
4 |
28 |
RD5 |
D5 på LCD |
5 |
29 |
RD6 |
D6 på LCD |
6 |
30 |
RD7 |
D7 på LCD |
7 |
33 |
RBO / INT |
Tryckknapp |
8 |
7 |
AN4 |
Potentiometer |
Simulering av användning av PIC EEPROM:
Detta projekt involverar också en simulering designad med Proteus, med vilken vi kan simulera projektets arbete utan någon hårdvara. Programmet för denna simulering ges i slutet av denna handledning. Du kan helt enkelt använda Hex-filen härifrån och simulera hela processen.
Under simuleringen kan du visualisera det aktuella ADC-värdet och de data som sparats i EEPROM på LCD-skärmen. För att spara det aktuella ADC-värdet i EEPROM, tryck bara på strömbrytaren som är ansluten till RB0 så sparas den. En ögonblicksbild av simuleringen visas nedan.
Programmering av PIC för EEPROM:
Den fullständiga koden för denna handledning ges i slutet av denna handledning. I vårt program måste vi läsa värdena från ADC-modulen och när en knapp trycks in måste vi spara det värdet i vår EEPROM. Eftersom vi redan har lärt oss om ADC och LCD-gränssnitt kommer jag att förklara koden för att spara och hämta data från EEPROM.
Enligt databladet ”Dessa enheter har 4 eller 8K ord för program Flash, med ett adressintervall från 0000h till 1FFFh för PIC16F877A”. Detta innebär att varje EEPROM-lagringsutrymme har en adress genom vilken det kan nås och i vår MCU börjar adressen från 0000 till 1FFFh.
För att spara data i en viss EEPROM-adress, använd bara nedanstående rad.
eeprom_write (0, adc);
Här är “adc” en variabel av heltal där data som ska sparas finns. Och "0" är adressen till EEPROM där våra data sparas. Syntaxen "eeprom_write" tillhandahålls av vår XC8-efterlevnad, därför kommer registeren automatiskt att tas om hand av kompilatorn.
För att hämta en data som redan är lagrad i EEPROM och spara den i en variabel kan följande rad kod användas.
Sadc = (int) eeprom_read (0);
Här är "Sadc" variabeln där data från EEPROM kommer att sparas. Och "0" är adressen till EEPROM från vilken vi hämtar data. Syntaxen "eeprom_read" tillhandahålls av vår XC8-efterlevnad, därför kommer registeren automatiskt att tas om hand av kompilatorn. De data som sparas i EEPROM kommer att vara av hexadecimal typ. Därför konverterar vi dem till heltalstyp genom att prefixa en (int) före syntaxen.
Arbetssätt:
När vi förstår hur koden fungerar och gör oss redo med hårdvaran kan vi testa koden. Ladda upp koden till din PIC Microcontroller och starta installationen. Om allt fungerar som förväntat bör du se de aktuella ADC-värdena visas på LCD-skärmen. Du kan nu trycka på knappen för att spara ADC-värdet i EEPROM. Nu kontrollerar du om värdet sparas genom att stänga av hela systemet och slå på det igen. När du är påslagen bör du se det tidigare sparade värdet på LCD-skärmen.
Det fullständiga arbetet med detta projekt för att använda PIC Microcontroller EEPROM visas i videon nedan. Hoppas att du förstod handledningen och tyckte om att göra det. Om du är osäker kan du skriva dem i kommentarsektionen nedan eller lägga upp dem på våra forum.