- EEPROM în PIC16F877A:
- Schema și explicația circuitului:
- Simularea utilizării PIC EEPROM:
- Programarea PIC pentru EEPROM:
- Lucru:
În acest tutorial vom afla cât de ușor este să salvați datele folosind EEPROM prezentă în microcontrolerul PIC16F877A. În majoritatea proiectelor în timp real, este posibil să trebuiască să salvăm unele date care nu ar trebui șterse chiar și atunci când alimentarea este oprită. S-ar putea să pară un proces complicat, dar cu ajutorul XC8 Compiler această sarcină poate fi realizată doar folosind o singură linie de cod. Dacă datele sunt mari în termeni de Mega octeți, atunci putem interfața un dispozitiv de stocare precum un card SD și putem stoca aceste date pe ele. Dar putem evita acele procese obositoare dacă datele sunt mici, putem folosi pur și simplu EEPROM-ul prezent în microcontrolerul PIC pentru a ne salva datele și a le recupera oricând dorim.
Acest tutorial PIC EEPROM face parte dintr-o secvență de tutoriale PIC cu microcontroler în care am pornit de la un nivel foarte de bază. Dacă nu ați învățat tutorialele anterioare, atunci ar fi mai bine să le aruncați o privire acum, deoarece acest tutorial presupune că sunteți familiarizat cu interfața LCD cu microcontrolerul PIC și utilizarea ADC cu microcontrolerul PIC.
EEPROM în PIC16F877A:
EEPROM reprezintă „Memorie numai în citire ștearsă și programabilă electronic”. După cum sugerează și numele, este o memorie prezentă în interiorul microcontrolerului PIC în care putem scrie / citi date programându-le pentru a face acest lucru. Datele salvate în acest document vor fi șterse numai dacă se menționează acest lucru în program. Cantitatea de spațiu de stocare disponibil în EEPROM variază în funcție de fiecare microcontroler; detaliile vor fi date în Foaie de date ca de obicei. În cazul nostru pentru PIC16F877A, spațiul disponibil este de 256 de octeți, așa cum se menționează în foaia de date cu specificații. Acum, să vedem cum putem folosi acești 256 de octeți pentru a citi / scrie date utilizând o configurare experimentală simplă.
Schema și explicația circuitului:
Schema de circuit pentru proiect este prezentată mai sus. Am interfațat un ecran LCD pentru a vizualiza datele salvate și recuperate. Un potențiometru normal este conectat la canalul analogic AN4, astfel încât alimentați cu tensiune variabilă, această tensiune variabilă va fi utilizată ca date care trebuie salvate în EEPROM. De asemenea, am folosit un buton pe RB0, când este apăsat acest buton, datele de pe canalul analogic vor fi salvate în EEPROM.
Această conexiune poate fi realizată pe o placă de calcul. De pinouts de PIC microcontroller este prezentată în tabelul de mai jos.
S. Nu: |
Numarul pin |
Nume PIN |
Conectat la |
1 |
21 |
RD2 |
RS de LCD |
2 |
22 |
RD3 |
E de LCD |
3 |
27 |
RD4 |
D4 de LCD |
4 |
28 |
RD5 |
D5 de LCD |
5 |
29 |
RD6 |
D6 de LCD |
6 |
30 |
RD7 |
D7 de LCD |
7 |
33 |
RBO / INT |
Apasa butonul |
8 |
7 |
AN4 |
Potențiometru |
Simularea utilizării PIC EEPROM:
Acest proiect implică, de asemenea, o simulare proiectată folosind Proteus, cu ajutorul căreia putem simula funcționarea proiectului fără hardware. Programul pentru această simulare este dat la sfârșitul acestui tutorial. Puteți utiliza pur și simplu fișierul Hex de aici și puteți simula întregul proces.
În timpul simulării, puteți vizualiza valoarea ADC curentă și datele salvate în EEPROM pe ecranul LCD. Pentru a salva valoarea ADC curentă în EEPROM pur și simplu apăsați comutatorul conectat la RB0 și va fi salvat. Un instantaneu al simulării este prezentat mai jos.
Programarea PIC pentru EEPROM:
Codul complet pentru acest tutorial este dat la sfârșitul acestui tutorial. În programul nostru trebuie să citim valorile din modulul ADC și atunci când este apăsat un buton trebuie să salvăm acea valoare în EEPROM. Deoarece am aflat deja despre ADC-urile și interfața LCD, voi explica în continuare codul pentru a salva și prelua date din EEPROM.
Conform Fișei tehnice „Aceste dispozitive au 4 sau 8K cuvinte ale programului Flash, cu un interval de adrese de la 0000h la 1FFFh pentru PIC16F877A”. Aceasta înseamnă că fiecare spațiu de stocare EEPROM are o adresă prin care poate fi accesat și în MCU-ul nostru adresa începe de la 0000h la 1FFFh.
Pentru a salva date într-o anumită adresă EEPROM, pur și simplu utilizați linia de mai jos.
eeprom_write (0, adc);
Aici „adc” este o variabilă de tip întreg în care sunt prezente datele de salvat. Și „0” este adresa EEPROM pe care sunt salvate datele noastre. Sintaxa „eeprom_write” este furnizată de autorul nostru XC8, prin urmare, registrele vor fi automat îngrijite de compilator.
Pentru a prelua date care sunt deja stocate în EEPROM și a le salva într-o variabilă, se poate utiliza următoarea linie de cod.
Sadc = (int) eeprom_read (0);
Aici, „Sadc” este variabila în care datele din EEPROM vor fi salvate. Și „0” este adresa EEPROM de pe care preluăm datele. Sintaxa „eeprom_read” este furnizată de autorul nostru de compatibilitate XC8, prin urmare, registrele vor fi automat îngrijite de compilator. Datele salvate în EEPROM vor fi de tip hexazecimal. Prin urmare, le convertim în tip întreg prin prefixarea unui (int) înainte de sintaxă.
Lucru:
Odată ce înțelegem cum funcționează codul și ne pregătim cu hardware-ul, putem testa codul. Încărcați codul pe microcontrolerul PIC și alimentați setarea. Dacă totul funcționează conform așteptărilor, ar trebui să vedeți valorile ADC curente afișate pe ecranul LCD. Acum puteți apăsa butonul pentru a salva valoarea ADC în EEPROM. Acum verificați dacă valoarea este salvată oprind întregul sistem și pornind-o din nou. Când este pornit, ar trebui să vedeți valoarea salvată anterior pe ecranul LCD.
Funcționarea completă a acestui proiect de utilizare a microcontrolerului PIC EEPROM este prezentată în videoclipul de mai jos. Sper că ai înțeles tutorialul și ți-a plăcut să îl faci. Dacă aveți îndoieli, le puteți scrie în secțiunea de comentarii de mai jos sau le puteți posta pe forumurile noastre.