- EEPROM v PIC16F877A:
- Schéma zapojenia a vysvetlenie:
- Simulácia použitia PIC EEPROM:
- Programovanie PIC pre EEPROM:
- Pracovné:
V tomto výučbe sa dozvieme, aké ľahké je ukladať údaje pomocou EEPROM prítomnej v mikrokontroléri PIC16F877A. Vo väčšine projektov v reálnom čase možno budeme musieť uložiť niektoré údaje, ktoré by sa nemali vymazať ani po vypnutí napájania. Môže to znieť ako zložitý proces, ale pomocou kompilátora XC8 sa dá táto úloha vykonať iba pomocou jedného riadku kódu. Ak sú dáta veľké v megabajtoch, môžeme ich prepojiť s úložným zariadením, ako je SD karta, a tieto dáta na ne uložiť. Ale týmto únavným procesom sa môžeme vyhnúť, ak sú dáta malé, môžeme jednoducho použiť EEPROM prítomnú v mikrokontroléri PIC na uloženie našich dát a ich načítanie kedykoľvek chceme.
Tento výukový program PIC EEPROM je súčasťou sekvencie výukových programov mikrokontrolérov PIC, v ktorých sme začínali od veľmi základnej úrovne. Ak ste sa nenaučili predchádzajúce výukové programy, bolo by lepšie sa na ne pozrieť teraz, pretože tento výukový program predpokladá, že ste oboznámení s rozhraním LCD pomocou PIC mikrokontroléra a používaním ADC s PIC mikrokontrolérom.
EEPROM v PIC16F877A:
EEPROM je skratka pre „elektronicky vymazateľnú a programovateľnú pamäť iba na čítanie“. Ako už názov napovedá, jedná sa o pamäť prítomnú vo vnútri mikrokontroléra PIC, do ktorej môžeme zapisovať / čítať dáta jej programovaním. Údaje uložené v tomto zozname sa vymažú, iba ak je to uvedené v programe. Množstvo úložného priestoru dostupného v EEPROM sa líši pre každý mikrokontrolér; podrobnosti budú uvedené v údajovom liste ako obvykle. V našom prípade pre PIC16F877A je dostupné miesto 256 bajtov, ako je uvedené v jeho špecifikácii. Teraz sa pozrime, ako môžeme týchto 256 bajtov použiť na čítanie / zápis údajov pomocou jednoduchého experimentálneho nastavenia.
Schéma zapojenia a vysvetlenie:
Schéma zapojenia projektu je uvedená vyššie. Prepojili sme rozhranie LCD na vizualizáciu ukladania a načítania údajov. K analógovému kanálu AN4 je pripojený normálny potenciometer, takže napájajte premenlivé napätie, toto premenné napätie sa použije ako údaje, ktoré sa majú uložiť do EEPROM. Použili sme tiež tlačidlo na RB0, keď je toto tlačidlo stlačené, dáta z analógového kanálu sa uložia do EEPROM.
Toto spojenie je možné vykonať na nepájivej doske. Na pinouts PIC mikroprocesora je uvedený v nasledujúcej tabuľke.
S.No: |
PIN kód |
Názov špendlíka |
Pripojený k |
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 |
Stlačte tlačidlo |
8 |
7 |
AN4 |
Potenciometer |
Simulácia použitia PIC EEPROM:
Tento projekt zahŕňa aj simuláciu navrhnutú pomocou programu Proteus, pomocou ktorej môžeme simulovať fungovanie projektu bez použitia hardvéru. Program pre túto simuláciu je uvedený na konci tohto tutoriálu. Tu môžete jednoducho použiť hexadecimálny súbor a simulovať celý proces.
Počas simulácie môžete na obrazovke LCD vizualizovať aktuálnu hodnotu ADC a údaje uložené v EEPROM. Ak chcete uložiť aktuálnu hodnotu ADC do EEPROM, jednoducho stlačte prepínač pripojený k RB0 a uloží sa. Snímka simulácie je uvedená nižšie.
Programovanie PIC pre EEPROM:
Celý kód tohto tutoriálu je uvedený na konci tohto tutoriálu. V našom programe musíme načítať hodnoty z modulu ADC a keď je stlačené tlačidlo, musíme túto hodnotu uložiť do našej EEPROM. Pretože sme sa už dozvedeli o rozhraní ADC a LCD, vysvetlím ďalej kód na ukladanie a načítanie údajov z EEPROM.
Podľa údajového listu „Tieto zariadenia majú 4 alebo 8 kB slova programu Flash s rozsahom adries od 0000 h do 1FFFh pre PIC16F877A“. To znamená, že každý úložný priestor EEPROM má adresu, cez ktorú je k nemu prístup, a v našom MCU začína adresa od 0000 h do 1FFFh.
Ak chcete uložiť údaje do konkrétnej adresy EEPROM, použite nasledujúci riadok.
eeprom_write (0, adc);
„Adc“ je tu premenná typu celé číslo, v ktorej sú údaje, ktoré sa majú uložiť. A „0“ je adresa EEPROM, na ktorej sú uložené naše údaje. Syntax „eeprom_write“ je poskytovaná našim kompatibilným procesorom XC8, preto sa o registre automaticky postará prekladač.
Na získanie údajov, ktoré sú už uložené v EEPROM a na ich uloženie do premennej, je možné použiť nasledujúci riadok kódu.
Sadc = (int) eeprom_read (0);
„Sadc“ je premenná, do ktorej sa budú ukladať údaje z EEPROM. A „0“ je adresa EEPROM, z ktorej načítavame údaje. Syntax „eeprom_read“ je poskytovaná našim kompatibilným procesorom XC8, preto sa o registre automaticky postará prekladač. Dáta uložené v EEPROM budú v hexadecimálnom formáte. Preto ich prevádzame na celočíselný typ predponou (int) pred syntaxou.
Pracovné:
Keď pochopíme, ako kód funguje, a pripravíme sa na hardvér, môžeme kód vyskúšať. Vložte kód do svojho mikrokontroléra PIC a napájajte nastavenie. Ak všetko funguje podľa očakávaní, mali by ste na displeji LCD vidieť aktuálne hodnoty ADC. Teraz môžete stlačiť tlačidlo a hodnota ADC sa uloží do EEPROM. Teraz skontrolujete, či je hodnota uložená tak, že vypnete celý systém a znova ho zapnete. Po zapnutí by ste mali na LCD obrazovke vidieť predtým uloženú hodnotu.
Kompletné fungovanie tohto projektu na použitie PIC mikrokontroléra EEPROM je zobrazené na videu nižšie. Dúfam, že ste pochopili výukový program a robili ho radi. Ak máte pochybnosti, môžete ich napísať do sekcie komentárov nižšie alebo zverejniť na našom fóre.