- EEPROM w PIC16F877A:
- Schemat obwodu i wyjaśnienie:
- Symulacja użycia PIC EEPROM:
- Programowanie PIC dla EEPROM:
- Pracujący:
W tym samouczku dowiemy się, jak łatwo jest zapisywać dane przy użyciu pamięci EEPROM znajdującej się w mikrokontrolerze PIC16F877A. W większości projektów czasu rzeczywistego może być konieczne zapisanie niektórych danych, których nie należy usuwać nawet po wyłączeniu zasilania. Może się to wydawać skomplikowanym procesem, ale z pomocą XC8 Compiler to zadanie można wykonać, używając tylko jednej linii kodu. Jeśli dane są duże pod względem megabajtów, możemy połączyć urządzenie pamięci masowej, takie jak karta SD, i przechowywać te dane na nich. Ale możemy uniknąć tego męczącego procesu, jeśli dane są małe, możemy po prostu użyć pamięci EEPROM obecnej w mikrokontrolerze PIC, aby zapisać nasze dane i odzyskać je w dowolnym momencie.
Ten samouczek PIC EEPROM jest częścią sekwencji samouczków PIC dotyczących mikrokontrolerów, w których zaczynaliśmy od bardzo podstawowego poziomu. Jeśli nie nauczyłeś się poprzednich samouczków, lepiej byłoby przyjrzeć się im teraz, ponieważ ten samouczek zakłada, że jesteś zaznajomiony z łączeniem wyświetlacza LCD z mikrokontrolerem PIC i korzystaniem z ADC z mikrokontrolerem PIC.
EEPROM w PIC16F877A:
EEPROM oznacza „Elektronicznie kasowalną i programowalną pamięć tylko do odczytu”. Jak sama nazwa wskazuje, jest to pamięć obecna wewnątrz mikrokontrolera PIC, w której możemy zapisywać / odczytywać dane, programując je w tym celu. Dane zapisane w tym miejscu zostaną usunięte tylko wtedy, gdy jest to wskazane w programie. Ilość miejsca w pamięci dostępnej w EEPROM różni się w zależności od każdego mikrokontrolera; szczegóły zostaną jak zwykle podane w arkuszu danych. W naszym przypadku dla PIC16F877A dostępna przestrzeń wynosi 256 bajtów, jak wspomniano w arkuszu specyfikacji. Zobaczmy teraz, jak możemy wykorzystać te 256 bajtów do odczytu / zapisu danych przy użyciu prostej konfiguracji eksperymentalnej.
Schemat obwodu i wyjaśnienie:
Schemat obwodu dla projektu pokazano powyżej. Połączyliśmy wyświetlacz LCD, aby wizualizować dane, które są zapisywane i odzyskiwane. Zwykły potencjometr jest podłączony do kanału analogowego AN4, więc należy podawać zmienne napięcie, to zmienne napięcie będzie używane jako dane do zapisania w pamięci EEPROM. Użyliśmy również przycisku na RB0, po naciśnięciu tego przycisku dane z kanału analogowego zostaną zapisane w pamięci EEPROM.
To połączenie można wykonać na płytce stykowej. W Pinouty PIC mikrokontrolera przedstawiono w tabeli poniżej.
S.No: |
Kod PIN |
Nazwa pinu |
Połączony z |
1 |
21 |
RD2 |
RS LCD |
2 |
22 |
RD3 |
E z LCD |
3 |
27 |
RD4 |
D4 wyświetlacza LCD |
4 |
28 |
RD5 |
D5 wyświetlacza LCD |
5 |
29 |
RD6 |
D6 wyświetlacza LCD |
6 |
30 |
RD7 |
D7 wyświetlacza LCD |
7 |
33 |
RBO / INT |
Naciśnij przycisk |
8 |
7 |
AN4 |
Potencjometr |
Symulacja użycia PIC EEPROM:
Ten projekt obejmuje również Symulację zaprojektowaną przy użyciu Proteusa, za pomocą której możemy zasymulować działanie projektu bez żadnego sprzętu. Program do tej symulacji znajduje się na końcu tego samouczka. Możesz po prostu użyć pliku Hex stąd i zasymulować cały proces.
Podczas symulacji można wizualizować aktualną wartość ADC i dane zapisane w pamięci EEPROM na ekranie LCD. Aby zapisać aktualną wartość ADC w EEPROM, wystarczy nacisnąć przełącznik podłączony do RB0, a zostanie on zapisany. Poniżej przedstawiono migawkę symulacji.
Programowanie PIC dla EEPROM:
Pełny kod tego samouczka znajduje się na końcu tego samouczka. W naszym programie musimy odczytać wartości z modułu ADC i po naciśnięciu przycisku musimy zapisać tę wartość w naszej pamięci EEPROM. Ponieważ dowiedzieliśmy się już o ADC i interfejsach LCD, wyjaśnię dalej kod do zapisywania i pobierania danych z EEPROM.
Zgodnie z arkuszem danych „Te urządzenia mają 4 lub 8 tys. Słów programu Flash, z zakresem adresów od 0000h do 1FFFh dla PIC16F877A”. Oznacza to, że każda przestrzeń pamięci EEPROM ma adres, przez który można uzyskać do niej dostęp, aw naszym MCU adres zaczyna się od 0000h do 1FFFh.
Aby zapisać dane w określonym adresie EEPROM, po prostu użyj poniższej linii.
eeprom_write (0, adc);
Tutaj „adc” jest zmienną typu integer, w której znajdują się dane do zapisania. A „0” to adres pamięci EEPROM, na której zapisane są nasze dane. Składnia „eeprom_write” jest dostarczana przez nasz zgodny z XC8, stąd rejestry będą automatycznie obsługiwane przez kompilator.
Aby pobrać dane, które są już zapisane w pamięci EEPROM i zapisać je w zmiennej, można użyć następującego wiersza kodu.
Sadc = (int) eeprom_read (0);
Tutaj „Sadc” jest zmienną, w której zostaną zapisane dane z pamięci EEPROM. A „0” to adres EEPROM, z którego pobieramy dane. Składnia „eeprom_read” jest dostarczana przez nasz zgodny z XC8, więc rejestry będą automatycznie obsługiwane przez kompilator. Dane zapisane w EEPROM będą miały postać szesnastkową. Dlatego konwertujemy je na typ całkowity, poprzedzając składnię przedrostkiem a (int).
Pracujący:
Gdy zrozumiemy, jak działa kod i przygotujemy się na sprzęt, możemy przetestować kod. Prześlij kod do mikrokontrolera PIC i włącz konfigurację. Jeśli wszystko działa zgodnie z oczekiwaniami, powinieneś zobaczyć aktualne wartości ADC wyświetlane na wyświetlaczu LCD. Możesz teraz nacisnąć przycisk, aby zapisać wartość ADC w pamięci EEPROM. Teraz sprawdzasz, czy wartość została zapisana, wyłączając cały system i włączając go ponownie. Po włączeniu na ekranie LCD powinna pojawić się poprzednio zapisana wartość.
Pełne działanie tego projektu w celu wykorzystania pamięci EEPROM mikrokontrolera PIC jest pokazane na poniższym filmie. Mam nadzieję, że zrozumiałeś samouczek i podobało Ci się to. Jeśli masz jakiekolwiek wątpliwości, możesz napisać je w sekcji komentarzy poniżej lub zamieścić na naszych forach.