- EEPROM in PIC16F877A:
- Schakelschema en uitleg:
- Simulatie van het gebruik van PIC EEPROM:
- PIC programmeren voor EEPROM:
- Werken:
In deze tutorial zullen we leren hoe gemakkelijk het is om gegevens op te slaan met behulp van de EEPROM die aanwezig is in de PIC16F877A Microcontroller. In de meeste realtime projecten moeten we mogelijk gegevens opslaan die niet mogen worden gewist, zelfs niet als de stroom is uitgeschakeld. Dit klinkt misschien als een gecompliceerd proces, maar met de hulp van XC8 Compiler kan deze taak worden uitgevoerd door slechts een enkele regel code te gebruiken. Als de gegevens groot zijn in termen van megabytes, kunnen we een opslagapparaat zoals een SD-kaart koppelen en die gegevens daarop opslaan. Maar we kunnen dat vermoeiende proces vermijden als de gegevens klein zijn, we kunnen eenvoudig de EEPROM gebruiken die aanwezig is in de PIC Microcontroller om onze gegevens op te slaan en op elk gewenst moment op te halen.
Deze PIC EEPROM-tutorial maakt deel uit van een reeks PIC Microcontroller-tutorials waarin we begonnen met een heel basaal niveau. Als je de vorige tutorials niet hebt geleerd, is het beter om ze nu te bekijken, omdat deze tutorial ervan uitgaat dat je bekend bent met Interfacing LCD met PIC Microcontroller en het gebruik van ADC met PIC Microcontroller.
EEPROM in PIC16F877A:
EEPROM staat voor "Electronically Erasable and Programmable Read Only Memory". Zoals de naam al doet vermoeden, is het een geheugen dat aanwezig is in de PIC Microcontroller waarin we gegevens kunnen schrijven / lezen door deze te programmeren. De gegevens die hierin zijn opgeslagen, worden alleen gewist als dit in het programma wordt vermeld. De hoeveelheid opslagruimte die beschikbaar is in EEPROM verschilt per microcontroller; de details worden zoals gewoonlijk in het gegevensblad vermeld. In ons geval voor PIC16F877A is de beschikbare ruimte 256 bytes, zoals vermeld in het specificatiegegevensblad. Laten we nu eens kijken hoe we deze 256 bytes kunnen gebruiken om gegevens te lezen / schrijven met behulp van een eenvoudige experimentele opstelling.
Schakelschema en uitleg:
Het schakelschema voor het project is hierboven weergegeven. We hebben een LCD-scherm aangesloten om te visualiseren dat de gegevens worden opgeslagen en opgehaald. Een normale potentiometer is aangesloten op het AN4 analoog kanaal, dus voer een variabele spanning in, deze variabele spanning zal worden gebruikt als de gegevens die in de EEPROM moeten worden opgeslagen. We hebben ook een drukknop op RB0 gebruikt, wanneer deze knop wordt ingedrukt, worden de gegevens van het analoge kanaal opgeslagen in de EEPROM.
Deze verbinding kan gemaakt worden op een breadboard. De pinouts van de PIC Microcontroller worden weergegeven in de onderstaande tabel.
S.Nee: |
Pincode |
Pin Naam |
Verbonden met |
1 |
21 |
RD2 |
RS van LCD |
2 |
22 |
RD3 |
E van LCD |
3 |
27 |
RD4 |
D4 van LCD |
4 |
28 |
RD5 |
D5 van LCD |
5 |
29 |
RD6 |
D6 van LCD |
6 |
30 |
RD7 |
D7 van LCD |
7 |
33 |
RBO / INT |
Druk op de knop |
8 |
7 |
AN4 |
Potentiometer |
Simulatie van het gebruik van PIC EEPROM:
Dit project omvat ook een simulatie ontworpen met Proteus, waarmee we de werking van het project kunnen simuleren zonder enige hardware. Het programma voor deze simulatie wordt aan het einde van deze tutorial gegeven. U kunt vanaf hier eenvoudig het Hex-bestand gebruiken en het hele proces simuleren.
Tijdens simulatie kunt u de huidige ADC-waarde en de gegevens die zijn opgeslagen in de EEPROM op het LCD-scherm visualiseren. Om de huidige ADC-waarde in de EEPROM op te slaan, drukt u eenvoudig op de schakelaar die is aangesloten op RB0 en deze wordt opgeslagen. Een momentopname van de simulatie wordt hieronder weergegeven.
PIC programmeren voor EEPROM:
De volledige code voor deze tutorial wordt aan het einde van deze tutorial gegeven. In ons programma moeten we de Values from ADC module lezen en als er op een knop wordt gedrukt moeten we die waarde opslaan in onze EEPROM. Omdat we al hebben geleerd over ADC's en LCD-interfacing, zal ik de code om gegevens van EEPROM op te slaan en op te halen verder uitleggen.
Volgens Datasheet "Deze apparaten hebben 4 of 8K woorden van programma Flash, met een adresbereik van 0000h tot 1FFFh voor de PIC16F877A". Dit betekent dat elke EEPROM-opslagruimte een adres heeft waarmee deze kan worden benaderd en in onze MCU begint het adres van 0000h tot 1FFFh.
Gebruik de onderstaande regel om gegevens in een bepaald EEPROM-adres op te slaan.
eeprom_write (0, adc);
Hier is "adc" een variabele van het type integer waarin de gegevens die moeten worden opgeslagen aanwezig zijn. En "0" is het adres van de EEPROM waarop onze gegevens zijn opgeslagen. De syntaxis "eeprom_write" wordt geleverd door onze XC8-complier, vandaar dat de registers automatisch door de compiler worden verzorgd.
Om gegevens op te halen die al in EEPROM zijn opgeslagen en deze in een variabele op te slaan, kan de volgende coderegel worden gebruikt.
Sadc = (int) eeprom_read (0);
Hier is "Sadc" de variabele waarin de gegevens van de EEPROM worden opgeslagen. En "0" is het adres van EEPROM waaruit we de gegevens ophalen. De syntaxis "eeprom_read" wordt geleverd door onze XC8-complier, vandaar dat de registers automatisch door de compiler worden verzorgd. De gegevens die in EEPROM zijn opgeslagen, zijn van het hexadecimale type. Daarom converteren we ze naar integer-type door een (int) voor de syntaxis te plaatsen.
Werken:
Zodra we begrijpen hoe de code werkt en ons klaar maken met de hardware, kunnen we de code testen. Upload de code naar uw PIC Microcontroller en zet de installatie aan. Als alles naar verwachting werkt, zou u de huidige ADC-waarden op het LCD-scherm moeten zien. U kunt nu op de knop drukken om de ADC-waarde op de EEPROM op te slaan. Nu controleer je of de waarde is opgeslagen door het hele systeem uit en weer aan te zetten. Wanneer het apparaat is ingeschakeld, zou u de eerder opgeslagen waarde op het LCD-scherm moeten zien.
De volledige werking van dit project om PIC Microcontroller EEPROM te gebruiken, wordt in de onderstaande video getoond. Ik hoop dat je de tutorial hebt begrepen en ervan hebt genoten. Als je twijfels hebt, kun je ze in de commentaarsectie hieronder schrijven of op onze forums posten.