Мигание светодиодом с помощью микроконтроллера PIC


В двух предыдущих статьях на нашем сайте мы рассмотрели начало работы с микроконтроллером PIC и мигание светодиодом с его помощью в симуляторе Proteus. Программу для него мы разрабатывали в среде MPLABX. В этой же статье мы рассмотрим уже аппаратную реализацию проекта мигания светодиодом с помощью микроконтроллера PIC, собранную на перфорированной плате.

Внешний вид проекта мигания светодиодом с помощью микроконтроллера PIC

Мы загрузим программу в микроконтроллер PIC и проверим ее работу. Для программирования микроконтроллера PIC мы будем использовать MPLAB IPE.

Необходимые компоненты

  1. Микроконтроллер PIC16F877A (купить на AliExpress).
  2. Программатор PicKit 3 (купить на AliExpress).
  3. Держатель микросхем на 40 контактов (купить на AliExpress).
  4. Кварцевый генератор на 20 МГц (купить на AliExpress).
  5. Конденсаторы 33 пФ – 2 шт. (купить на AliExpress).
  6. Конденсаторы 100 мкФ и 10 мкФ (купить на AliExpress).
  7. Резисторы 680 Ом, 10 кОм и 560 Ом (купить на AliExpress).
  8. Светодиод любого цвета (купить на AliExpress).
  9. Микросхема регулятора напряжения 7805 (купить на AliExpress).
  10. Набор для пайки.
  11. Перфорированная плата (Perf board) и соединительные провода.
  12. Адаптер питания на 12V.

Что происходит при записи программы в микроконтроллер

Запись программ в современные микроконтроллеры и проверка их работы является обычным делом в мире современной электроники. Но что на самом деле происходит когда несколько строк программы на языке C записываются внутрь кремниевого чипа и начинают в нем выполняться?

Для понимания этих процессов вначале посмотрим на нашу программу.

Вид нашей программы в среде MPLABX

Как видим, она написана на языке C и в таком виде она не может исполняться нашим микроконтроллером. Для того, чтобы наш микроконтроллер начал "понимать" эту программу, компилятор преобразует ее в формат, который могут "понимать" микроконтроллеры. Этот формат называется HEX кодом и файл с этим кодом будет сохраняться в наших проектах в каталоге:

Если вам интересно что содержится в этом HEX файле откройте его с помощью notepad или любого другого аналогичного текстового редактора. Для нашей программы мигания светодиодом HEX файл будет содержать следующие строки:

Существует несколько путей анализа информации, содержащейся в HEX файле. Одним из них является обратное дизассемблирование, но данные вопросы уже находятся за пределами нашей статьи. Здесь вам необходимо запомнить тот факт, что HEX файл является "финальным" (выходным) кодом для нашего микроконтроллера и именно он используется MPLAB IPE для "прожига" микроконтроллера.

Флэш память

HEX код хранится в микроконтроллере в месте, называемом флэш памятью (Flash memory) и из нее он и исполняется. После компиляции нашей программы в MPLABX мы получим следующую информацию о типе памяти в выходном окне программы:

Информация об использованной памяти после компиляции программы

Поскольку мы имеем дело с простой программой мигания светодиодом, то, как видно из рисунка, мы заняли всего 0.5% доступной памяти программ и 1.4% доступной памяти данных.

У микроконтроллера PIC16F877 есть три типа памяти:

Память программ (Program Memory): в этой памяти хранятся программы когда мы записали их в микроконтроллер. Поскольку наша программа мигания светодиодом очень маленькая, то мы заняли всего 0.5% от общего объема этой памяти. Данные в этом типе памяти хранятся даже после отключения питания микроконтроллера.

Память данных (Data Memory): этот тип памяти называется оперативным запоминающим устройством (ОЗУ, RAM) и он содержит регистры специальных функций (Special Function Register, SFR) и регистры общего назначения (General Purpose Register, GPR), которые включают TRIS, PORT и т.д. Переменные, которые мы храним в памяти данных, стираются когда мы выключаем питание микроконтроллера. Любая переменная, которую мы объявляем в программе, будет храниться в памяти данных.

Энергонезависимая память EEPROM (Electrically Erasable Programmable Read-Only Memory): позволяет хранить значения переменных, которые мы используем в программе, даже после выключения питания микроконтроллера.

Внутрисхемное программирование ICSP

Мы будем программировать наш микроконтроллер PIC16F877A с помощью опции внутрисхемного программирования ICSP (In Circuit Serial Programming), доступного в нем. ICSP позволяет производить программирование микроконтроллера после того как он помещен на плату проекта и для этого не будет нужно специальной платы программирования – нам необходимо будет сделать всего 6 соединений с нашим программатором PicKit3, которые приведены в следующей таблице.

1 VPP (or MCLRn) вход в режим программирования
2 Vcc Power: Pin 11 или 32
3 GND Ground: PIN 12 или 31
4 PGD - Data RB7. PIN40
5 PGC - Clock RB6. PIN 39
6 PGM - LVP enable RB3/RB4. Не обязателен

Интерфейс ICSP доступен во всех микроконтроллерах PIC. Для его использования необходимо соединить 5 контактов (6-й контакт PGM не является обязательным) микроконтроллера с программатором Pickit3 как показано на следующих рисунках.

Подключение по интерфейсу ICSP к различным типам микроконтроллеров PIC

Схема проекта

Теперь, когда у нас готов HEX файл и мы знаем как подключить PicKit 3 к нашему микроконтроллеру PIC через разъем ICSP, можно приступать к сборке схемы нашего проекта. Схема проекта мигания светодиодом с помощью микроконтроллера PIC представлена на следующем рисунке.

Схема проекта мигания светодиодом с помощью микроконтроллера PIC

В представленной схеме мы использовали регулятор напряжения 7805 для подачи стабилизированного напряжения питания на наш микроконтроллер PIC. На регулятор напряжения 7805 мы подаем питание с адаптера питания 12V. Горящий светодиод красного цвета будет свидетельствовать о том, что на микроконтроллер PIC подано питание. Коннектор J1 будет использоваться для внутрисистемного программирования ICSP.
На первый контакт микроконтроллера (MCLR) подается уровень high с помощью резистора 10 кОм – это будет предотвращать микроконтроллер от сброса. Для сброса микроконтроллера на контакт MCLR необходимо подать уровень Low – это можно сделать, добавив в схему переключатель.

Светодиод подключен к микроконтроллеру через токоограничивающий резистор 560 Ом. При правильно собранной схеме после загрузки программы в микроконтроллер светодиод должен начать мигать. Внешний вид собранной на перфорированной плате конструкции нашего проекта приведен в начале нашей статьи.

Загрузка кода программы в микроконтроллер PIC с помощью MPLAB IPE

Для этого выполните следующую последовательность шагов:

  1. Запустите MPLAB IPE.
  2. Подключите программатор PicKit 3 к вашему компьютеру и к контактам ICSP вашего микроконтроллера.
  3. В программе MPLAB IPE соединитесь с вашим микроконтроллером PIC нажав на кнопку connect.
  4. Откройте HEX файл программы мигания светодиодом и нажмите на Program.

Если все идет нормально, то в окне MPLAB IPE вы должны увидеть сообщение об успешной загрузке программы в микроконтроллер. Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
1 558 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *