- EEPROM в PIC16F877A:
- Електрическа схема и обяснение:
- Симулация на използване на PIC EEPROM:
- Програмиране на PIC за EEPROM:
- Работа:
В този урок ще научим колко лесно е запазването на данни с помощта на EEPROM, присъстващ в микроконтролера PIC16F877A. В повечето проекти в реално време може да се наложи да запазим някои данни, които не трябва да се изтриват, дори когато захранването е изключено. Това може да звучи като сложен процес, но с помощта на XC8 Compiler тази задача може да бъде изпълнена само с помощта на един ред код. Ако данните са големи от мегабайтове, тогава можем да свържем устройство за съхранение като SD карта и да съхраняваме тези данни върху тях. Но можем да избегнем тези уморителни процеси, ако данните са малки, можем просто да използваме EEPROM, присъстващ в PIC Microcontroller, за да запазим данните си и да ги извлечем по всяко време, когато пожелаем.
Този урок за PIC EEPROM е част от поредица от уроци за PIC микроконтролер, в които започнахме от много основно ниво. Ако не сте научили предишните уроци, тогава би било по-добре да ги разгледате сега, защото този урок предполага, че сте запознати с взаимодействието на LCD с PIC микроконтролер и използването на ADC с PIC Microcontroller.
EEPROM в PIC16F877A:
EEPROM означава „Електронно изтриваема и програмируема памет само за четене“. Както подсказва името, това е памет, намираща се в микроконтролера PIC, в която можем да записваме / четем данни, като го програмираме. Запазените в това данни ще бъдат изтрити, само ако е споменато за това в програмата. Количеството място за съхранение, налично в EEPROM, варира в зависимост от всеки микроконтролер; подробностите ще бъдат дадени в таблицата с данни както обикновено. В нашия случай за PIC16F877A наличното пространство е 256 байта, както е споменато в техническия лист със спецификации. Сега нека видим как можем да използваме тези 256 байта за четене / запис на данни, като използваме проста експериментална настройка.
Електрическа схема и обяснение:
Схемата на проекта е показана по-горе. Ние сме свързали LCD, за да визуализираме данните, които се записват и извличат. Нормален потенциометър е свързан към AN4 аналогов канал, така че захранването с променливо напрежение, това променливо напрежение ще се използва като данните, които трябва да бъдат записани в EEPROM. Използвали сме и бутон на RB0, когато този бутон се натисне данните от аналоговия канал ще бъдат записани в EEPROM.
Тази връзка може да се направи на макет. На pinouts на PIC микроконтролера са показани в таблицата по-долу.
S.No: |
ПИН номер |
Име на ПИН |
Свързан с |
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 |
Натисни бутона |
8 |
7 |
AN4 |
Потенциометър |
Симулация на използване на PIC EEPROM:
Този проект включва и симулация, проектирана с помощта на Proteus, с помощта на която можем да симулираме работата на проекта без никакъв хардуер. Програмата за тази симулация е дадена в края на този урок. Можете просто да използвате Hex файла от тук и да симулирате целия процес.
По време на симулацията можете да визуализирате текущата стойност на ADC и данните, записани в EEPROM на LCD екрана. За да запазите текущата стойност на ADC в EEPROM, просто натиснете превключвателя, свързан към RB0, и той ще бъде запазен. Снимка на симулацията е показана по-долу.
Програмиране на PIC за EEPROM:
Пълният код за този урок е даден в края на този урок. В нашата програма трябва да прочетем стойностите от модула ADC и при натискане на бутон трябва да запазим тази стойност в нашия EEPROM. Тъй като вече научихме за ADC и LCD взаимодействие, ще обясня допълнително кода за запазване и извличане на данни от EEPROM.
Според таблицата с данни „Тези устройства имат 4 или 8K думи от програмата Flash, с адресен диапазон от 0000h до 1FFFh за PIC16F877A“. Това означава, че всяко пространство за съхранение на EEPROM има адрес, през който може да се осъществи достъп и в нашия MCU адресът започва от 0000h до 1FFFh.
За да запишете данни в определен EEPROM адрес, просто използвайте долния ред.
eeprom_write (0, adc);
Тук „adc“ е променлива от тип цяло число, в която присъстват данните, които трябва да бъдат записани. И „0“ е адресът на EEPROM, на който се съхраняват данните ни. Синтаксисът „eeprom_write“ се предоставя от нашия компилатор XC8, поради което регистрите автоматично ще се грижат от компилатора.
За да извлечете данни, които вече се съхраняват в EEPROM и да ги запишете в променлива, може да се използва следният ред код.
Sadc = (int) eeprom_read (0);
Тук „Sadc“ е променливата, в която данните от EEPROM ще бъдат запазени. И „0“ е адресът на EEPROM, от който извличаме данните. Синтаксисът „eeprom_read“ се предоставя от нашия компилатор XC8, поради което регистрите автоматично ще се грижат от компилатора. Данните, записани в EEPROM, ще бъдат в шестнадесетичен тип. Следователно ги преобразуваме в цяло число, като добавяме (int) пред синтаксиса.
Работа:
След като разберем как работи кодът и се подготвим с хардуера, можем да тестваме кода. Качете кода на вашия PIC микроконтролер и включете настройката. Ако всичко работи както се очаква, трябва да видите текущите стойности на ADC, показани на LCD дисплея. Вече можете да натиснете бутона, за да запазите ADC стойността в EEPROM. Сега проверявате дали стойността е запазена, като изключите цялата система и я включите отново. Когато е включен, трябва да видите предварително запазената стойност на LCD екрана.
Пълната работа на този проект за използване на PIC микроконтролер EEPROM е показана във видеото по-долу. Надявам се, че сте разбрали урока и ви е било приятно да го правите. Ако имате някакви съмнения, можете да ги напишете в раздела за коментари по-долу или да ги публикувате на нашите форуми.