- EEPROM v PIC16F877A:
- Shema vezja in razlaga:
- Simulacija uporabe PIC EEPROM:
- Programiranje PIC za EEPROM:
- Delo:
V tej vadnici bomo izvedeli, kako enostavno je shranjevanje podatkov z uporabo EEPROM-a, ki je prisoten v mikrokrmilniku PIC16F877A. V večini projektov v realnem času bomo morda morali shraniti nekaj podatkov, ki se jih ne sme izbrisati, tudi če je napajanje izključeno. To se morda sliši kot zapleten postopek, toda s pomočjo prevajalnika XC8 lahko to nalogo opravite z eno samo vrstico kode. Če so podatki veliki v megabajtih, potem lahko povežemo pomnilniško napravo, kot je kartica SD, in te podatke shranimo nanje. Vendar se lahko temu utrujajočemu postopku izognemo, če so podatki majhni, lahko preprosto uporabimo EEPROM, ki je prisoten v mikrokrmilniku PIC, da shranimo naše podatke in jih kadar koli pridobimo.
Ta vadnica PIC EEPROM je del zaporedja vadnic mikrokrmilnika PIC, v kateri smo začeli z zelo osnovne ravni. Če se prejšnjih vaj niste naučili, bi bilo bolje, da si jih zdaj ogledate, ker ta vadnica predpostavlja, da poznate povezavo LCD-ja z mikrokrmilnikom PIC in uporabo ADC-ja z mikrokrmilnikom PIC.
EEPROM v PIC16F877A:
EEPROM pomeni „Elektronsko izbrisljiv in programabilen bralni pomnilnik“. Kot že ime pove, gre za pomnilnik, ki je prisoten v mikrokrmilniku PIC, v katerega lahko zapisujemo / beremo podatke, tako da ga programiramo. Pri tem shranjeni podatki bodo izbrisani le, če je to omenjeno v programu. Količina prostora za shranjevanje, ki je na voljo v EEPROM-u, je odvisna od posameznega mikrokrmilnika; podrobnosti bodo kot običajno na voljo v podatkovnem listu. V našem primeru za PIC16F877A je na voljo prostor 256 bajtov, kot je omenjeno v obrazcu s specifikacijami. Zdaj pa poglejmo, kako lahko uporabimo teh 256 bajtov za branje / pisanje podatkov s preprosto eksperimentalno nastavitvijo.
Shema vezja in razlaga:
Shema vezja za projekt je prikazana zgoraj. Zaslon LCD smo povezali tako, da si ponazorimo, kako se podatki shranjujejo in pridobivajo. Običajni potenciometer je povezan z analognim kanalom AN4, zato se napaja s spremenljivo napetostjo, ta spremenljiva napetost pa bo uporabljena kot podatki, ki se shranijo v EEPROM. Uporabili smo tudi tipko na RB0, ko se ta gumb pritisne, se podatki iz analognega kanala shranijo v EEPROM.
Ta povezava se lahko izvede na plošči. V pinouts iz mikrokontrolerja je prikazana v spodnji tabeli.
S. Št: |
PIN številka |
Pripnite ime |
Povezan z |
1. |
21. |
RD2 |
RS LCD |
2. |
22. |
RD3 |
E LCD |
3. |
27. |
RD4 |
D4 LCD |
4. |
28. |
RD5 |
D5 LCD |
5. |
29. |
RD6 |
D6 LCD |
6. |
30. |
RD7 |
D7 LCD |
7. |
33 |
RBO / INT |
Pritisni gumb |
8. |
7. |
AN4 |
Potenciometer |
Simulacija uporabe PIC EEPROM:
Ta projekt vključuje tudi simulacijo, zasnovano s pomočjo Proteusa, s pomočjo katere lahko simuliramo delovanje projekta brez strojne opreme. Program za to simulacijo je podan na koncu te vaje. Datoteko Hex lahko preprosto uporabite od tukaj in simulirate celoten postopek.
Med simulacijo lahko na LCD zaslonu prikažete trenutno vrednost ADC in podatke, shranjene v EEPROM-u. Če želite shraniti trenutno vrednost ADC v EEPROM, preprosto pritisnite stikalo, priključeno na RB0, in ta bo shranjen. Posnetek simulacije je prikazan spodaj.
Programiranje PIC za EEPROM:
Popolna koda za to vadnico je podana na koncu te vadnice. V našem programu moramo prebrati vrednosti iz modula ADC in ko pritisnemo gumb, moramo to vrednost shraniti v naš EEPROM. Ker smo že izvedeli za ADC-je in vmesnike LCD, bom nadalje razložil kodo za shranjevanje in pridobivanje podatkov iz EEPROM-a.
V skladu s podatkovnim listom "Te naprave imajo 4 ali 8K besed programa Flash, z naslovom v območju od 0000h do 1FFFh za PIC16F877A". To pomeni, da ima vsak prostor za shranjevanje EEPROM naslov, prek katerega je do njega mogoče dostopati, v našem MCU pa se naslov začne od 0000h do 1FFFh.
Če želite shraniti podatke znotraj določenega naslova EEPROM, preprosto uporabite spodnjo vrstico.
eeprom_write (0, adc);
Tu je "adc" spremenljivka vrste celo število, v kateri so podatki, ki jih je treba shraniti. In "0" je naslov EEPROM-a, na katerem so shranjeni naši podatki. Sintakso “eeprom_write” zagotavlja naš skladnik XC8, zato bo prevajalnik samodejno poskrbel za registre.
Če želite pridobiti podatke, ki so že shranjeni v EEPROM-u, in jih shraniti v spremenljivko, lahko uporabite naslednjo vrstico kode.
Sadc = (int) eeprom_read (0);
Tu je »Sadc« spremenljivka, v kateri bodo shranjeni podatki iz EEPROM-a. In "0" je naslov EEPROM-a, s katerega pridobivamo podatke. Sintakso "eeprom_read" zagotavlja naš sklad XC8, zato bo prevajalnik samodejno poskrbel za registre. Podatki, shranjeni v EEPROM-u, bodo v šestnajstiški obliki. Zato jih pretvorimo v celoštevilčne vrste s predpono (int) pred sintakso.
Delo:
Ko enkrat razumemo, kako koda deluje in se pripravimo na strojno opremo, lahko kodo preizkusimo. Naložite kodo na svoj mikrokrmilnik PIC in vključite nastavitev. Če vse deluje po pričakovanjih, bi morali na LCD-prikazovalniku prikazati trenutne vrednosti ADC. Zdaj lahko pritisnete gumb, da shranite vrednost ADC v EEPROM. Zdaj preverite, ali je vrednost shranjena, tako da izklopite celoten sistem in ga znova vklopite. Ko je vklopljen, boste na LCD zaslonu videli prej shranjeno vrednost.
Popolno delovanje tega projekta za uporabo PIC mikrokrmilnika EEPROM je prikazano v spodnjem videu. Upam, da ste razumeli vadnico in ste jo uživali. Če dvomite, jih lahko napišete v spodnjem oddelku za komentarje ali objavite na naših forumih.