- EEPROM в PIC16F877A:
- Електрична схема та пояснення:
- Моделювання використання PIC EEPROM:
- Програмування PIC для EEPROM:
- Робоча:
У цьому підручнику ми дізнаємося, як легко зберігати дані за допомогою EEPROM, який присутній у мікроконтролері PIC16F877A. У більшості проектів у режимі реального часу нам може знадобитися зберегти деякі дані, які не слід стирати навіть при відключенні живлення. Це може здатися складним процесом, але за допомогою компілятора XC8 це завдання можна виконати, використовуючи лише один рядок коду. Якщо дані великі з точки зору мегабайт, тоді ми можемо взаємодіяти з пристроєм зберігання, таким як SD-карта, і зберігати ці дані на них. Але ми можемо уникнути цих процесів, які втомлюють, якщо даних мало, ми можемо просто використати EEPROM, що міститься в мікроконтролері PIC, щоб зберегти наші дані та отримати їх у будь-який час, коли нам заманеться.
Цей підручник з PIC EEPROM є частиною послідовності навчальних посібників з мікроконтролера PIC, в яких ми починали з самого базового рівня. Якщо ви не вивчили попередні підручники, тоді було б краще поглянути на них зараз, оскільки цей посібник передбачає, що ви знайомі з взаємодією РК з мікроконтролером PIC та використанням АЦП з мікроконтролером PIC.
EEPROM в PIC16F877A:
EEPROM розшифровується як “Електронно стирається та програмована пам’ять лише для читання”. Як випливає з назви, це пам'ять, що міститься всередині мікроконтролера PIC, в яку ми можемо писати / читати дані, програмуючи це для цього. Дані, збережені в ньому, будуть стерті, лише якщо про це згадується в програмі. Кількість вільного місця в EEPROM залежить від кожного мікроконтролера; подробиці будуть вказані в таблиці даних, як зазвичай. У нашому випадку для PIC16F877A доступний простір становить 256 байт, як зазначено в його специфікації. Тепер давайте подивимося, як ми можемо використовувати ці 256 байт для читання / запису даних за допомогою простої експериментальної установки.
Електрична схема та пояснення:
Схема проекту представлена вище. Ми підключили РК-дисплей для візуалізації даних, які зберігаються та отримуються. Звичайний потенціометр підключений до аналогового каналу AN4, тому подайте змінну напругу, ця змінна напруга буде використана як дані, які будуть збережені в EEPROM. Ми також використовували кнопку на RB0, коли ця кнопка натискається, дані з аналогового каналу зберігаються в EEPROM.
Це з'єднання можна зробити на макетній дошці. У терморегулятори ПОС мікроконтролера показано в таблиці нижче.
S.No: |
Номер PIN-коду |
Ім'я PIN-коду |
Пов'язаний з |
1 |
21 |
RD2 |
RS РК |
2 |
22 |
RD3 |
E РК |
3 |
27 |
RD4 |
D4 РК-дисплея |
4 |
28 |
RD5 |
D5 РК-дисплея |
5 |
29 |
RD6 |
D6 РК-дисплея |
6 |
30 |
RD7 |
D7 РК-дисплея |
7 |
33 |
RBO / INT |
Нажимна Кнопка |
8 |
7 |
AN4 |
Потенціометр |
Моделювання використання PIC EEPROM:
Цей проект також включає симуляцію, розроблену з використанням Proteus, за допомогою якої ми можемо імітувати роботу проекту без будь-якого обладнання. Програма для цього моделювання наведена в кінці цього посібника. Ви можете просто використати Hex-файл звідси і змоделювати весь процес.
Під час моделювання ви можете візуалізувати поточне значення АЦП та дані, збережені в EEPROM на РК-екрані. Щоб зберегти поточне значення АЦП в EEPROM, просто натисніть перемикач, підключений до RB0, і воно буде збережено. Знімок моделювання наведено нижче.
Програмування PIC для EEPROM:
Повний код цього підручника подано в кінці цього підручника. У нашій програмі ми маємо прочитати значення з модуля ADC, і при натисканні кнопки ми повинні зберегти це значення в нашому EEPROM. Оскільки ми вже дізналися про АЦП та РК-інтерфейси, я далі поясню код для збереження та отримання даних з EEPROM.
Згідно з технічним паспортом, «ці пристрої мають 4 або 8 тис. Слів програмного 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 в EEPROM. Тепер ви перевіряєте, чи збережено значення, вимкнувши всю систему та увімкнувши її знову. При увімкненні ви повинні побачити збережене раніше значення на РК-екрані.
Повна робота цього проекту з використанням мікроконтролера PIC EEPROM показана на відео нижче. Сподіваюся, ви зрозуміли підручник і вам сподобалось його робити. Якщо у вас є сумніви, ви можете написати їх у розділі коментарів нижче або опублікувати на наших форумах.