AVR Урок 11. Динамическая индикация. Часть 1



 

Сегодня мы попробуем подключить к микроконтроллеру не один одноразрядный индикатор, а два. То есть подключим ещё один такой индикатор. Только если мы подключим его точно так же, как и первый, то мы на это дело задействуем практически все ножки портов контроллера, что сделает наш проект нежизнеспособный.

Поэтому на помощь нам придет в этом случае другой способ — это динамическая индикация.

При динамической индикации в каждый момент времени мы будем выводить цифру только на одном индикаторе. То есть цифры, предназначенные для обоих индикаторов мы будем выводить по очереди. Но выводить по очереди мы их будем с такой частотой, что наш глаз этого не заметит. И нам будет казаться, что индикаторы работают постоянно, а не по очереди. Это позволяет нам подключить сегменты обоих индикаторов, а в последствии и большего количества индикаторов к одним и тем же ножкам порта, то есть параллельно. При таком способе будут сразу на оба индикатора подаваться по очереди сначала цифра, предназначенная для первого индикатора, а затем цифра, предназначенная для второго. И чтобы нам не виделись одновременно две цифры на каждом индикаторе, во время отображения цифры, предназначенной для определённого индикатора, мы будем на его анод положительное напряжение, а на другой анод не будем, а будем соединять его с общим проводом. Поэтому независимо от состояния его катодов светиться не будет ни один из его сегментов. Если на сегменте будет ноль, то вообще не будет разности потенциалов, а если будет единица, то разность потенциалов будет, но ток будет направлен в другую сторону и светодиод при таком направлении не будет светиться.

Новый проект мы создадим также как и обычно, скопировав код в main.c из одноименного файла прошлого проекта. Назовём проект Test08.

 

 

Давайте сначала соберём схему в протеусе, скопировав, как обычно, файл проекта из предыдущего занятия и подключив в свойствах контроллера путь к новому проекту. Сначала мы переподключим кнопку на другую ножку порта. Зачем это нужно, мы увидим позже

 

image00

 

Отключим пока от питания общий анод и добавим ещё один такой же индикатор, какой у нас уже есть в проекте.

Для этого достаточно его просто выбрать в левой панели, заново из библиотеки его добавлять не нужно. Затем соединим катоды данного индикатора с одноимёнными катодами первого

 

image01

 

Освободившиеся аноды мы подключим к ножкам другого порта. Но подключим мы не напрямую, а через ключевые транзисторы, так как при свечении нескольких сегментов индикатора одновременно через ножку порта, подключенную к аноду индикатора, потечёт слишком большой ток. Порт может выйти из строя. Это нам вовсе не интересно. Поэтому подключим наши аноды к ножкам B0 и B1 через транзисторы. Вот зачем мы перенесли кнопку на другую ножку. Причём перенесли с запасом, так как подключать впоследствии мы будем четыре индикатора.

 

 

Добавим из библиотеки транзистор. Включать мы его будем в инверсном режиме, поэтому выбираем структуру p-n-p

 

image02

 

Подключим таких два транзистора в схему, добавив ещё два резистора по 2 килоома для ограничения тока базы. Эмиттеры подключим к питанию, а коллекторы — к анодам индикаторов (нажмите на картинку для увеличения изображения)

 

image03_0478

 

Также я покажу полную схему нашей сборки (нажмите на картинку для увеличения изображения)

 

image04_0694

 

Здесь мы видим, что транзисторы применены здесь ss8550. Стоят они копейки, но в качестве ключей работают прекрасно.

Со схемой пока всё.

А проектом мы займёмся в следующей части нашего занятия.

 

 

Предыдущий урок Программирование МК AVR Следующая часть

 

Программатор и индикаторы можно приобрести здесь:

Программатор USBASP USBISP с адаптером USBASP USBISP 3.3 с адаптером

Семисегментный чертырехразрядный индикатор красный (с общим анодом или катодом на выбор) 10 шт

 

 

Смотреть ВИДЕОУРОК

 

AVR Динамическая индикация

3 комментария на “AVR Урок 11. Динамическая индикация. Часть 1
  1. Left:

    Здравствуйте. Вы не могли бы сделать видео про независимое подключение семисегментного индикатора. Все используют порт D для подключения сегментов и тем самым лишают себя последовательного канала, двух прерываний с наивысшим приоритетом, двух счетных входов и компаратора. Было бы очень удобно сделать библиотеку с независимым подключением (к примеру часть сегментов с порта В, часть с порта С). Информации о независимом подключении мало, а та что есть очень навороченная для начинающих.

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

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

*