- EEPROM itt: PIC16F877A:
- Áramkör és magyarázat:
- A PIC EEPROM használatának szimulációja:
- PIC programozása az EEPROM-hoz:
- Dolgozó:
Ebben az oktatóanyagban megtudhatjuk, milyen egyszerű az adatok mentése a PIC16F877A mikrokontrollerben lévő EEPROM segítségével. A legtöbb valós idejű projektben előfordulhat, hogy néhány adatot el kell mentenünk, amelyeket nem szabad törölni akkor sem, ha a készüléket kikapcsolják. Ez bonyolult folyamatnak tűnhet, de az XC8 Compiler segítségével ezt a feladatot egyetlen kódsor használatával lehet elvégezni. Ha az adatok nagyok a Mega bájtokat tekintve, akkor összekapcsolhatunk egy tárolóeszközt, mint egy SD-kártyát, és ezeket az adatokat tárolhatjuk rajtuk. De elkerülhetjük ezeket a fárasztó folyamatokat, ha az adatok kicsiek, egyszerűen felhasználhatjuk a PIC mikrovezérlőben lévő EEPROM-ot adataink mentésére és lekérésére bármikor.
Ez a PIC EEPROM oktatóanyag a PIC mikrokontroller oktatóprogramok sorozatának része, amelyben egy nagyon alapszintről indultunk. Ha még nem tanulta meg a korábbi oktatóanyagokat, jobb, ha most megnézi őket, mert ez az oktatóanyag azt feltételezi, hogy ismeri az LCD interfész PIC mikrovezérlővel való használatát és az ADC használatát a PIC mikrokontrollerrel.
EEPROM itt: PIC16F877A:
Az EEPROM az „Elektronikusan törölhető és programozható, csak olvasható memória” rövidítése. Ahogy a neve is sugallja, a PIC mikrokontroller belsejében található memória, amelybe programozással adatokat írhatunk / olvashatunk. Az ebbe mentett adatok csak akkor törlődnek, ha a program ezt megemlíti. Az EEPROM-ban rendelkezésre álló tárhely mennyisége mikrokontrollerenként változik; a részleteket a szokásos módon az adatlapon adjuk meg. A PIC16F877A esetében a rendelkezésre álló hely 256 bájt, amint azt a specifikációs adatlapja tartalmazza. Most nézzük meg, hogyan használhatjuk ezeket a 256 bájtokat adatok olvasására / írására egy egyszerű kísérleti beállítás segítségével.
Áramkör és magyarázat:
A projekt kapcsolási rajza fent látható. Csatoltunk egy LCD-t az adatok mentésének és visszakeresésének megjelenítéséhez. Az AN4 analóg csatornához normál potenciométer van csatlakoztatva, így változó feszültséggel táplálva ezt a változó feszültséget fogják használni az EEPROM-ban elmentendő adatokként. Használtunk egy nyomógombot is az RB0-on, amikor ezt a gombot megnyomjuk, az analóg csatorna adatai az EEPROM-ba kerülnek.
Ez a kapcsolat kenyérlapon hozható létre. A PIC mikrokontroller csatlakozóit az alábbi táblázat mutatja.
S. Nem: |
Pinkód |
PIN neve |
Csatlakozva valamihez |
1 |
21 |
RD2 |
Az LCD RS-je |
2 |
22. |
RD3 |
E az LCD |
3 |
27. |
RD4 |
Az LCD D4 |
4 |
28. |
RD5 |
D5 LCD |
5. |
29. |
RD6 |
Az LCD D6-ja |
6. |
30 |
RD7 |
D7 LCD |
7 |
33 |
RBO / INT |
Nyomógomb |
8. |
7 |
AN4 |
Potenciométer |
A PIC EEPROM használatának szimulációja:
Ez a projekt a Proteus segítségével tervezett szimulációt is magában foglalja, amelynek segítségével hardver nélkül szimulálhatjuk a projekt működését. A szimuláció programja az oktatóanyag végén található. Itt egyszerűen felhasználhatja a Hex fájlt, és szimulálja az egész folyamatot.
A szimuláció során megjelenítheti az EEPROM-ban tárolt aktuális ADC értéket és adatokat az LCD képernyőn. Az aktuális ADC érték mentéséhez az EEPROM-ba egyszerűen nyomja meg az RB0-hoz csatlakoztatott kapcsolót, és ez mentésre kerül. Az alábbiakban a szimuláció pillanatképe látható.
PIC programozása az EEPROM-hoz:
Az oktatóanyag teljes kódja az oktatóanyag végén található. Programunkban el kell olvasnunk az Értékeket az ADC modulból, és amikor egy gombot megnyomunk, el kell mentenünk ezt az értéket az EEPROM-ba. Mivel már megismertük az ADC-ket és az LCD interfészeket, tovább elmagyarázom a kódot az adatok mentésére és visszakeresésére az EEPROM-ból.
Az adatlap szerint „Ezek az eszközök 4 vagy 8K szóval tartalmazzák a Flash programot, a PIC16F877A címtartománya 0000h és 1FFFh között van”. Ez azt jelenti, hogy minden EEPROM tárhelynek van címe, amelyen keresztül elérhető, és az MCU-ban a cím 0000h-tól 1FFFh-ig kezdődik.
Adatok mentéséhez egy adott EEPROM-címen egyszerűen használja az alábbi sort.
eeprom_write (0, adc);
Itt az „adc” egy egész típusú változó, amelyben a menteni kívánt adatok szerepelnek. A „0” pedig annak az EEPROM-nak a címe, amelyre adatainkat mentjük. Az „eeprom_write” szintaxist az XC8-kompatibilisunk biztosítja, ezért a fordítók automatikusan gondoskodnak a regiszterekről.
Az EEPROM-ban már tárolt adatok lekéréséhez és egy változóba történő mentéshez a következő kódsor használható.
Sadc = (int) eeprom_read (0);
Itt a „Sadc” az a változó, amelybe az EEPROM adatait menteni fogják. A „0” pedig az EEPROM címe, ahonnan az adatokat lekérjük. Az „eeprom_read” szintaxist az XC8-kompatibilisunk biztosítja, ezért a fordítók automatikusan gondoskodnak a regiszterekről. Az EEPROM-ba mentett adatok hexadecimális típusúak lesznek. Ezért konvertáljuk őket egész típusúvá egy (int) előtaggal a szintaxis előtt.
Dolgozó:
Miután megértettük a kód működését és felkészültünk a hardverre, kipróbálhatjuk a kódot. Töltse fel a kódot a PIC mikrovezérlőre, és kapcsolja be a beállítást. Ha minden a várakozásoknak megfelelően működik, akkor látnia kell az LCD-n az aktuális ADC értékeket. Most megnyomhatja a gombot az ADC érték elmentéséhez az EEPROM-ba. Most az egész rendszert kikapcsolva és újra bekapcsolva ellenőrizheti, hogy az érték mentésre került-e. Bekapcsoláskor látnia kell a korábban elmentett értéket az LCD képernyőn.
A projekt teljes munkáját az EEPROM PIC mikrokontroller használatával az alábbi videó mutatja. Remélem, megértette az oktatóanyagot, és élvezettel csinálta. Ha kétségei vannak, írhatja meg őket az alábbi megjegyzés rovatba, vagy tegye fel fórumunkba.