Лекция 1

Семинар предназначен для ознакомления старшеклассников с микроконтроллерами. Учащиеся создадут схему мигающего света и/или счетчик-таймер. В процессе создания этого проекта студенты узнают о микроконтроллерах и цифровой электронике. Вот список деталей для проектов.

Скачать файлы asm для прошивки можно здесь.
Asm файлы можно редактировать обычным блокнотом. А чтобы создать из asm файла hex – воспользуйтесь программой MPASMWIN, также вам понадобиться файл с расширением inc – все это для PIC12F629 находиться – здесь. Перед конвертацией в hex – создайте папку и закиньте в нее asm и inc файл.

Проект мигающих Огней
В качестве первого проекта на макетной плате мы запрограммируем микроконтроллер на создание схемы мигания до пяти светодиодов. Мы начнем с одного из самых простых микроконтроллеров: PIC12F629. Сначала мы построим схему на макетной плате, затем запрограммируем микросхему PIC12F629.

Построение схемы

1. Схема этой схемы приведена ниже:

2. PIC12F629 имеет только 8 контактов. Вывод 8 – это вывод заземления, а вывод 1 – вывод положительного напряжения. В наших приложениях мы будем использовать две батарейки типа АА последовательно, которые будут выдавать около 3 вольт на контакт 1.
3. Остальные шесть контактов (2-7) будут использоваться в качестве цифрового входа / выхода. Контакты 2, 3, 5, 6 и 7 будут выходными контактами, подключенными к светодиодам. Вывод 4 может быть установлен только в качестве входного вывода. Мы не будем подключать светодиод к контакту 4. На рисунке ниже можно увидеть 5 светодиодов, подключенных к соответствующим контактам.

Построение программиста
После настройки “проекта мигающих огней” на макетной плате мы программируем чип. Чтобы запрограммировать микроконтроллер, нам нужно будет сконструировать схему программатора на макетной плате. Каждая группа из трех студентов будет использовать одного и того же программиста, pickit2. Схема программатора показана ниже

Программатор имеет 6 контактов в ряд. Заземление на программаторе, вывод 3, соединено с заземлением микросхемы (вывод 8). Напряжение (5 В) программатора, вывод 2, подключается к выводу 1 микросхемы. Остальные контакты программатора подключены к микросхеме, как показано на двух рисунках ниже:

Pickit2 подключается к персональному компьютеру через USB-порт. На рисунке ниже видно, где микросхема микроконтроллера подключена к программатору:

Наконец, мы программируем микроконтроллер с помощью программного обеспечения MPlab от microchip.

Программирование микроконтроллера

Ассемблерный код, с которого мы начнем, – это код: test12.asm. Единственными строками кода, которые учащимся необходимо изменить для желаемого шаблона мигания, являются:


loop
movlw b'00100101'
movwf GPIO
call delay1
movlw b'00010010'
movwf GPIO
call delay1
goto loop

Сначала в рабочий регистр помещается двоичное число “00100101”. Затем этот номер в рабочем регистре переносится в регистр GPIO. Регистр GPIO напрямую подключен к выводам микросхемы. “1” подаст 3 вольта на вывод, а “0” подаст ноль вольт на вывод. Последние 6 битов подключены к выводам 2, 3, 4, 5, 6, и 7 соответственно. Число “00100101” в регистре GPIO приведет к 3 вольтам для выводов 2, 5 и 7 и нулю вольт для выводов 3 и 6. Контакт 4 не затронут, это только входной контакт. Подпрограмма delay1 вызывает задержку примерно на 1/4 секунды.

Затем двоичное число “00010010” помещается в рабочий регистр, а затем передается в регистр GPIO. Число “00010010” выдает 3 вольта на выводах 3 и 6 и ноль вольт на выводах 2, 5 и 7. После задержки в 1/4 секунды микросхема возвращается в “петлю” и повторяет шаблон.

Учащиеся могут запрограммировать любой рисунок из пяти светодиодных ламп, изменив линии в цикле.

11 Проект мигающих огней

После экспериментов и программирования различных схем светодиодов на 8-контактном микроконтроллере PIC12F629 студенты готовы работать с более крупным чипом PIC16F630. Этот микроконтроллер может быть запрограммирован с помощью той же схемы программатора, которую они уже создали. Инструкции по сборке по существу те же, что и в случае с меньшим чипом PIC12F629. PIC16F630 имеет 14 контактов и может загораться до 11 светодиодов.

Asm файлы можно редактировать обычным блокнотом. А чтобы создать из asm файла hex – воспользуйтесь программой MPASMWIN, также вам понадобиться файл с расширением inc – все это для PIC12F630 находиться – здесь. Перед конвертацией в hex – создайте папку и закиньте в нее asm и inc файл.

14 контактов PIC16F630 настроены следующим образом: контакт № 14 (VSS) заземлен, а контакт № 1 (VDD) подключен к 3-вольтовой батарее. Остальные 12 контактов можно использовать в качестве контактов цифрового ввода / вывода. Как и прежде, pin-код 4 (RA3 / MCLR) может быть сконфигурирован только как входной PIN-код. Таким образом, одиннадцать булавок (2, 3, 5, 6, 7, 8, 9, 10, 11, 12, и 13) могут использоваться в качестве выводов цифрового выхода. Эти одиннадцать контактов могут быть подключены к светодиодам. Существует два адреса памяти, которые управляют 12 свободными выводами: один называется PORTC, а другой – PORTA.

Биты адреса памяти порта помечены: (RC7, RC6, RC5, RC4, RC3, RC2, RC1, RC0), а биты адреса памяти PORTA помечены: (RA7, RA6, RA5, RA4, RA3, RA2, RA1, RA0). На рисунке ниже видно, какие биты в PORTC и PORTA подключены к выводам на чипе.

Например, биты в регистре PORTC подключаются к следующим выводам:
(X, X, pin5, pin6, pin7, pin8, pin9, pin10)
Первые два бита не подключены ни к каким выводам, а следующие 6 битов подключены к выводам с 5 по 10. Если двоичное число b’00101010′ помещено в PORTC, то на выводах 5, 7 и 9 будет установлено напряжение 3 вольта.

Для PORTA биты подключаются к следующим выводам:

(X, X, pin2, pin3, pin4, pin11, pin12, pin13)
Как и в случае с чипом меньшего размера, pin4 можно использовать только в качестве входного PIN-кода. Двоичное число b ‘00110010’ приведет к 3 вольтам, установленным на выводах 2, 3 и 12.

Учащиеся начнут с включения и выключения 6 выходных контактов, которые управляются адресом PORTC. Они установят 6 светодиодов в ряд, которые подключаются к контактам 5, 6, 7, 8, 9, и 10, как показано на диаграмме ниже:

Как только светодиоды установлены на макетной плате, код сборки led11.asm может быть запрограммирован в PIC16F630, используя ту же схему программирования, что и для микросхемы меньшегоразмера. Важными строками кода являются


loop
incf PORTC
call delay1
goto loop

Команда “incf” увеличивает PORTC на единицу. То есть значение в PORTC увеличивается на единицу. Теперь учащиеся запустят программу и заметят, как загораются светодиоды. Теперь мы обсудим двоичную систему счисления.

Возьмите домашние проекты
Существует ряд “Домашних проектов”, которые могут выполнить студенты. Они могут использовать либо маленькую микросхему (PIC12F629) и программировать в любой световой схеме по вашему выбору до 5 светодиодов. Либо они могут использовать более крупную микросхему (PIC16F630) и программировать в любой световой схеме до 11 светодиодов. Световые узоры могут быть декоративными. Учащиеся также могут сделать счетчик или таймер. Проект таймера описан ниже. Учащиеся должны сначала настроить свой “Домашний проект” на макетной плате и запрограммировать чип Как только они будут уверены, что это сработает, тогда (если будет достаточно времени) они могут построить еще один на печатной плате, где провода могут быть спаяны вместе.

Проект таймера

Проект timer – это таймер, который можно настроить на 63 минуты. Кнопка используется для установки минут. По истечении указанного времени светодиоды начнут мигать. Ниже приведено изображение таймера, установленного на макетной плате:

Код сборки для таймера – timer1.asm.

“https://www.cpp.edu/~pbsiegel/picprogs/mmt/mmt.html”

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