- EEPROM PIC16F877A:
- Grandinės schema ir paaiškinimas:
- PIC EEPROM naudojimo modeliavimas:
- EEPROM programavimas PIC:
- Darbas:
Šioje pamokoje sužinosime, kaip lengva išsaugoti duomenis naudojant EEPROM, esantį PIC16F877A mikrovaldiklyje. Daugumoje projektų realiuoju laiku gali tekti išsaugoti kai kuriuos duomenis, kurių nereikėtų ištrinti, net kai maitinimas išjungtas. Tai gali skambėti kaip sudėtingas procesas, tačiau naudojant „XC8 Compiler“ šią užduotį galima atlikti tiesiog naudojant vieną kodo eilutę. Jei duomenys yra dideli „Mega“ baitų atžvilgiu, mes galime susieti sąsają su atminties įrenginiu, pvz., SD kortele, ir tuos duomenis jose saugoti. Bet mes galime išvengti šio varginančio proceso, jei duomenų yra mažai, mes galime tiesiog naudoti EEPROM, esantį PIC mikrovaldiklyje, savo duomenims išsaugoti ir nuskaityti bet kada, kai tik norime.
Ši „ PIC EEPROM“ mokymo programa yra PIC mikrovaldiklių pamokų sekos dalis, kurioje pradėjome nuo labai paprasto lygio. Jei neišmokote ankstesnių vadovėlių, geriau būtų juos apžvelgti dabar, nes šioje pamokoje daroma prielaida, kad esate susipažinę su LCD sąsaja su PIC mikrovaldikliu ir ADC naudojimu su PIC mikrovaldikliu.
EEPROM PIC16F877A:
EEPROM reiškia „elektroniniu būdu ištrinamą ir programuojamą tik skaitymo atmintį“. Kaip rodo pavadinimas, tai yra atmintis, esanti PIC mikrovaldiklyje, kurioje mes galime užrašyti / skaityti duomenis programuodami tai padaryti. Čia išsaugoti duomenys bus ištrinti tik tuo atveju, jei tai bus paminėta programoje. EEPROM saugomos vietos kiekis priklauso nuo kiekvieno mikrovaldiklio; išsami informacija bus pateikta duomenų lape, kaip įprasta. Mūsų PIC16F877A atveju laisva vieta yra 256 baitai, kaip nurodyta jos specifikacijų duomenų lape. Dabar pažiūrėkime, kaip mes galime naudoti šiuos 256 baitus duomenims skaityti / rašyti naudodami paprastą eksperimentinę sąranką.
Grandinės schema ir paaiškinimas:
Projekto schema parodyta aukščiau. Mes susiejame skystųjų kristalų ekraną, kad galėtume vizualizuoti išsaugomus ir gaunamus duomenis. Įprastas potenciometras yra prijungtas prie AN4 analoginio kanalo, todėl tiekiant kintamą įtampą, ši kintama įtampa bus naudojama kaip duomenys, kurie bus išsaugoti EEPROM. Mes taip pat naudojome mygtuką RB0, kai paspaudus šį mygtuką, duomenys iš analoginio kanalo bus išsaugoti EEPROM.
Ši jungtis gali būti padaryta ant duonos lentos. Kad iš IPS mikrokontrolerio pinouts yra parodyta žemiau pateiktoje lentelėje.
S.Ne: |
PIN kodas |
PIN vardas |
Prisijungęs prie |
1 |
21 |
RD2 |
LCD ekranas |
2 |
22 |
RD3 |
LCD ekranas |
3 |
27 |
RD4 |
D4 skystųjų kristalų ekranas |
4 |
28 |
RD5 |
D5 skystųjų kristalų ekranas |
5 |
29 |
RD6 |
D6 skystųjų kristalų ekranas |
6 |
30 |
RD7 |
D7 skystųjų kristalų ekranas |
7 |
33 |
RBO / INT |
Paspauskite mygtuką |
8 |
7 |
AN4 |
Potenciometras |
PIC EEPROM naudojimo modeliavimas:
Šis projektas taip pat apima modeliavimą, sukurtą naudojant „Proteus“, kuriuo galime imituoti projekto darbą be jokios aparatūros. Šio modeliavimo programa pateikiama šios pamokos pabaigoje. Čia galite paprasčiausiai naudoti „Hex“ failą ir imituoti visą procesą.
Modeliavimo metu LCD ekrane galite vizualizuoti dabartinę ADC vertę ir duomenis, išsaugotus EEPROM. Norėdami išsaugoti dabartinę ADC vertę EEPROM, tiesiog paspauskite jungiklį, prijungtą prie RB0, ir jis bus išsaugotas. Modeliavimo momentinė nuotrauka parodyta žemiau.
EEPROM programavimas PIC:
Visas šios mokymo programos kodas pateikiamas šios pamokos pabaigoje. Savo programoje turime perskaityti „Values from ADC“ modulį ir paspaudus mygtuką turime išsaugoti šią vertę savo EEPROM. Kadangi mes jau sužinojome apie ADC ir LCD sąsajas, aš toliau paaiškinsiu kodą, kaip išsaugoti ir gauti duomenis iš EEPROM.
Pagal duomenų lapą „Šie įrenginiai turi 4 arba 8K programos„ Flash “žodžių, kurių adresas yra nuo 0000h iki 1FFFh PIC16F877A“. Tai reiškia, kad kiekviena EEPROM saugojimo vieta turi adresą, per kurį ją galima pasiekti, o mūsų MCU adresas prasideda nuo 0000h iki 1FFFh.
Norėdami išsaugoti duomenis tam tikrame EEPROM adrese, tiesiog naudokite žemiau esančią eilutę.
eeprom_write (0, adc);
Čia „adc“ yra sveiko skaičiaus kintamasis, kuriame yra išsaugotini duomenys. „0“ yra EEPROM adresas, kuriame saugomi mūsų duomenys. Sintaksę „eeprom_write“ teikia mūsų „XC8“ atitiktis, todėl kompiliatorius automatiškai pasirūpins registrais.
Norėdami gauti duomenis, kurie jau saugomi EEPROM, ir išsaugoti juos kintamajame, galima naudoti šią kodo eilutę.
Sadc = (int) eeprom_read (0);
Čia „Sadc“ yra kintamasis, kuriame bus išsaugoti duomenys iš EEPROM. „0“ yra EEPROM adresas, iš kurio gauname duomenis. Sintaksę „eeprom_read“ teikia mūsų „XC8“ atitikmuo, todėl kompiliatorius automatiškai rūpinsis registrais. EEPROM išsaugoti duomenys bus šešioliktainiai. Taigi mes juos konvertuojame į sveiko skaičiaus tipą prieš sintaksę priešdėlį (int).
Darbas:
Supratę, kaip veikia kodas, ir pasiruošę aparatinei įrangai galime išbandyti kodą. Įkelkite kodą į savo PIC mikrovaldiklį ir įjunkite sąranką. Jei viskas veikia taip, kaip tikėtasi, turėtumėte pamatyti dabartines ADC vertes, rodomas LCD. Dabar galite paspausti mygtuką, kad išsaugotumėte ADC reikšmę EEPROM. Dabar patikrinkite, ar vertė išsaugota, išjungdami visą sistemą ir vėl ją įjungdami. Įjungus, LCD ekrane turėtumėte pamatyti anksčiau išsaugotą vertę.
Visas šio projekto darbas naudojant PIC mikrovaldiklį EEPROM parodytas toliau pateiktame vaizdo įraše. Tikiuosi, kad supratote pamoką ir patiko tai daryti. Jei turite kokių nors abejonių, galite jas parašyti žemiau esančiame komentarų skyriuje arba paskelbti mūsų forumuose.