Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Подключение 7 сегментного индикатора
Автор Белов А. В. 01.05.2008 г.
В данной статье рассматриваются различные способы подключения к микроконтроллеру семисегментных светодиодных индикаторов.
Для того, что бы микропроцессорное устройство было способно выводить информацию в виде цифр и знаков удобно использовать семи сегментные светодиодные индикаторы. Существует огромное множество различных моделей светодиодных индикаторов, разных размеров, цвета свечения. Существуют как индикаторы представляющие собой отдельный один разряд, для индикации всего одной цифры, так и многоразрядные индикаторные панели. В зависимости от модели и схема подключения может быть разной. Кроме того, все индикаторы делятся на две большие группы. Это индикаторы с общим анодом и индикаторы с общим катодом. Схема подключения одиночного индикатора с общим анодом изображена на рисунке 1.
Рис. 1. Подключение одного индикатора
Сегменты индикатора подключены непосредственно каждый к своему выходу порта PB микроконтроллера. Общий анод всех сегментов подключается к источнику питания. На схеме показан вариант питания индикатора от того же источника +5В, от которого питается сам микроконтроллер. Для уменьшения нагрузки на стабилизатор напряжения можно запитать индикатор до стабилизатора. Для того, что бы высветить на индикаторе ту либо иную цифру микроконтроллер просто программирует все выводы порта PB на выход а затем по мере необходимости выводит в порт код, соответствующий выбранному символу. При этом каждый разряд порта отвечает за свой сегмент индикатора. Если в соответствующий разряд выводится логическая единица, то сегмент остается погашенным. Если в разряд выводится логический ноль, то соответствующий сегмент зажигается. Остается подобрать коды таким образом, что бы засветившиеся разряды высветили нужный нам символ.
Для большинства случаев одного разряда индикатора явно не хватает. Подключать же несколько разрядов, каждый к своим выводам явно не получится. Даже самый большой микроконтроллер AVR имеет всего четыре полных порта ввода вывода. Поэтому единственным способом подключения многоразрядных семи сегментных индикаторов к микроконтроллеру является матричный способ. Этот способ очень похож на матричное подключение кнопок клавиатуры, о котором подробно написано в статье " Подключение кнопок". На рисунке 2 показан один из вариантов подключения дисплея из двух семисегментных индикаторов.
Рис. 2. Подключение дисплея
Приведенная схема рассчитана на световые семи сегментные индикаторы небольшой мощности с током потребления не больше 40 мА. Для более мощных индикаторов нужно применять транзисторные ключи. Обратите внимание, что каждый из выходов порта PB микроконтроллера подключен к одноименным сегментам обоих индикаторов. Так вывод PB0 через резистор R1 подключен к выводу сегмента A индикатора HL1 и индикатора HL2. Выход PB1 через резистор R2 подключен к сегментам B обоих индикаторов и так далее. Выбор одного из индикаторов осуществляется посредством двух старших разрядов порта PD. Общий анод индикатора HL1 подключен к выводу PD6, а общий анод индикатора HL2 к выводу PD5. Такая схема включения называется матрицей. Выводы порта PB можно рассматривать, как восемь горизонтальных линий, а два выхода порта PD, как вертикальные линии матрицы. В точках пересечения каждой линии включен один светодиодный сегмент.
Подобная схема включения индикатора всегда работает в режиме динамической индикации. Динамическая индикация состоит в том, что микропроцессор постоянно с достаточно высокой частотой высвечивает символ сначала в первом, а затем во втором разряде индикатора. При частоте переключения выше 24 герц глаз не замечает мерцания и воспринимает изображение на обоих индикаторах как одно статическое изображение. По такому принципу давно уже работают большинство семи сегментных дисплеев в самых различных электронных устройствах.
Для реализации режима динамической индикации процессор должен организовать постоянный цикл. Обычно для этого используют встроенный таймер. Таймер настраивается таким образом, что бы выдавать прерывание с определенной частотой, выбранной для динамической индикации. Каждый раз, при вызове прерывания контроллер выдает изображение символа в новый разряд индикатора. Для этого в порт PB контроллер выставляет код, соответствующий нужному символу, а в соответствующий разряд порта PD (PD5 или PD6) выставляет логическую единицу. В тот разряд, который должен быть потушен, подается логический ноль. На этом обработка прерывания заканчивается, контроллер переходит к выполнению основной программы, а выставленные на выводы порта сигналы так и остаются до следующего прерывания. И все это время в соответствующем разряде индицируется нужный символ. Когда возникает следующее прерывание, в порты выводятся сигналы, которые выводят на индикацию изображение другого разряда индикатора.
На рисунке 2 приведена схема, содержащая всего два разряда индикации. Точно так же можно подключить три, четыре и более разрядов. В случае применения микроконтроллера ATtiny2313 максимальное количество разрядов - 7. Так как порт PD этого контроллера имеет всего семь выводов. В этом случае в процессе индикации только на один из разрядов порта PD подается логическая единица, а на все остальные логический ноль.
Нужно заметить, что в данной схеме выводы PD5 и PD6, к которым подключены общие аноды индикаторов находится под самой большой нагрузкой. Ток протекающий через каждый из них зависит от индицируемого символа и в том случае, когда зажигаются сразу все сегменты в восемь раз больше, чем ток одного сегмента. Такой ток легко может превысить максимально допустимый ток для одного выхода. Однако, во-первых, этот ток носит импульсный характер и среднее значение тока гораздо меньше. А во-вторых, практика показывает, что микроконтроллеры AVR имеют значительный запас по мощности и свободно выдерживают такие нагрузки.
Все вышесказанное относится к индикатором с общим анодом. Что бы зажечь такие индикаторы на общий провод следует подавать плюс источника питания, а на выводы сегментов – минус (соединять с общим проводом). Но бывают другие индикаторы, построенные по схеме с общим катодом. Рассмотрим, как использовать этот тип индикаторов. Схему на рис 1 придется немного переделать. Переделка сведется лишь к тому, что общий анод индикатора нужно отключить от источника +5В и подключить на общий провод. Немного изменится и алгоритм работы. Теперь для того, что бы зажечь сегмент на него нужно подать логическую единицу, а что бы потушить - логический ноль. Схему на рис. 2 переделывать не нужно. Изменится лишь алгоритм. Просто фаза всех сигналов должна поменяться. Там, где раньше мы подавали ноль, теперь нужно подать единицу и наоборот. Последнее обновление (01.05.2008 г.)
Управление ЖКИ (LCD) индикаторами Автор Белов А. В. 02.05.2008 г. В данной статье рассматривается пример подключения жидкокристаллического индикатора (сокращенно ЖКИ или LCD) к микроконтроллеру.
Сегодня на рынке электронных компонентов можно найти огромное количество индикаторов разных фирм и модификаций. Каждый индикатор имеет свои особенности, свою внутреннюю архитектуру и свой интерфейс для подключения к микроконтроллеру. Однако общие принципы подключения примерно одинаковы. Сразу отметим, что все ЖКИ можно разделить на индикаторы со встроенным контроллером и простые индикаторы без микроконтроллера. Индикаторы с микроконтроллером более предпочтительны для самостоятельного применения. Встроенный микроконтроллер уже содержит в себе сложные программы, выполняющие большинство операций по выводу изображения на индикатор и учитывающий все специфические особенности именно этой индикаторной панели. А интерфейс связи встроенного контроллера обычно совсем не сложный и позволяет легко подключить его к любому универсальному контроллеру. Возмем для примера микроконтроллер Российского производства МТ-10Т7-7. Это простой индикатор, дисплей которого представляет собой строку из десяти семисегментных знакомест. Напряжение питания такого индикатора от 3 до 5 вольт. Ток потребления 30 мкА. Габаритные размеры 66 X 31, 5 X 9, 5 мм. Схема подключения такого индикатора к микроконтроллеру приведена на рисунке 1.
Рис. 1. Подключение ЖКИ к микроконтроллеру Для управления индикатором используется порт PB. Линии PB0...PB3 образуют шину данных/адреса. А линия PB4 используется для передачи на индикатор сигнала записи. Выход PB6 используется для выбора адрес/данные. Команды управления передаются на индикатор следующим образом. Сначала необходимо передать адрес разряда, куда мы хотим записать код очередного выводимого символа. Адрес состоит из одного четырехбитного двоичного числа. Нумерация разрядов ведется слева на право. Самый левый (старший) разряд имеет адрес 0 (00002). Следующий разряд имеет адрес 1 (00012). Последний, самый правый, десятый разряд имеет адрес 9 (10012). Для того, что бы записать адрес в контроллер индикатора необходимо, что бы на его A0 присутствовал сигнал логического нуля. Значение адреса выставляется на выходах PB0...PB3. А затем на выход PB4 кратковременно подается единичный сигнал, который поступает на вход WR1 индикатора. По фронту этого импульса адрес записывается в индикатор и запоминается в его внутренней памяти. Теперь, если в индикатор будет записан байт данных, он поступит именно по этому адресу.
Байт данных определяет изображение знака, которое высветится в соответствующем разряде индикатора. Каждый бит этого байта отвечает за свой сегмент в семисегментном поле. Восьмой бит отвечает за высвечивание десятичной точки. Для передачи байта данных на входе A0, а значит и на выходе PB6 должен присутствовать сигнал логической единицы. Байт данных передается в индикатор за два приема. Сначала на выводах PB0...PB3 выставляется младший полубайт. По сигналу на WR1 он записывается в память индикатора. Затем, на тех же выходах (PB0...PB3) выставляется старший полубайт и тоже записывается по сигналу на WR1. После записи второго (старшего) полубайта изображение появляется в соответствующем разряде индикатора, а адрес во внутренней памяти индикатора автоматически увеличивается на единицу. Таким образом, для записи данных в следующий разряд индикатора уже не надо передавать в него адрес. Весь процесс записи адреса и данных в индикатор изображен на рисунке 2.
Рис. 2. Диаграмма работы интерфейса индикатора
На этом рисунке представлены два варианта работы с индикатором. Запись одного знакоместа и запись нескольких знакомест подряд. Переменный резистор R1 (см. схему на рис. 1) предназначен для регулировки контрастности дисплея. Для того, что бы изображение на индикаторе было хорошо видно, нужно выставить самую подходящую контрастность наблюдая изображение на экране индикатора. Для разной освещенности и разного угла зрения ручку регулятора придется выставлять в разные положения. Хорошо видное изображение в других при изменившихся условиях наблюдения может стать абсолютно не видимым. Что бы увидеть его нужно покрутить ручку регулятора в разные стороны.
В заключении хочу отметить, что именно эти выводы порта для управления индикатором выбраны абсолютно произвольно. В данном случае автор руководствовался удобством разводки печатной платы. Вы же можете выбрать любые другие выводы и даже другой порт ввода вывода микроконтроллера. Последнее обновление ( 01.05.2008 г. )
Подключение энкодера Автор Белов А. В. 04.05.2008 г.
Из этой статьи вы узнаете, что такое энкодер, чем он отличается от переменного резистора и как он помогает при помощи простого поворота ручки вводить информацию в микроконтроллер.
В связи с тотальным переходом к микропроцессорному управлению бытовыми и другими электронными приборами изменились и органы регулировки, применяемые в этих приборах. Если раньше для того, что бы отрегулировать громкость радиоприемника или телевизора вы должны были просто покрутить соответствующую ручку, то теперь вы зачастую вынуждены пользоваться двумя кнопками: " Громкость +" и " Громкость -". А если нужно регулировать не только громкость? Для многих пользователей это просто не удобно. К тому же страдает оперативность регулировки. Нажав кнопку уменьшения громкости нужно еще подождать какое то время, пока громкость доползет до нужного уровня. И все это время приходится страдать от громкого звука. Совместить преимущества традиционных регуляторов и при этом не потерять новые возможности, которые нам дают микроконтроллеры призвано новое устройство ввода информации, которое получило название энкодер. По внешнему виду и установочным размерам энкодер очень похож на обычный переменный резистор, который использовался в традиционных аналоговых устройствах. Но по внутреннему устройству он кардинально отличается. Энкодер так же, как и резистор имеет выступающую вперед ось, на которую можно надеть такую же самую ручку, какую обычно одевают на резистор. Вращение рукоятки энкодера приводит к вырабатыванию им последовательности импульсов, которые затем поступают на микроконтроллер и дают ему информацию о том, на сколько нужно уменьшить либо увеличить то либо иное значение. Например, насколько нужно увеличить или уменьшить громкость сигнала и т.п. Причем устройство энкодера таково, что микроконтроллер может различать не только величину, на которую нужно изменить параметр, но и направление этого изменения. Это позволяет, например, при вращении оси энкодера в одну сторону увеличивать громкость, а при вращении в другую - уменьшать.
Рис. 1. Принцип работы энкодера
Рассмотрим, как же устроен энкодер. На рисунке 1 показано устройство простого механического энкодера. Как видно из рисунка, основой энкодера является диск из изоляционного материалла закрепленный на оси, на которую и насаживается рукоятка для ее вращения. По периметру диска равномерно расположены специальные прорези. Прорези делят всю окружность на несколько (обысно 6-8) равных секторов. Причем ширина прорезей равна ширине промежутков между ними. Кроме того, имеется две группы контактов, которые установлены таким образом, что при вращении диска они то замыкаются попав в прорезь, то размыкаются в промежутке между прорезями. Очень важно расположение этих пар контактов относительно прорезей. Контакты расположены таким образом, что в тот момент, когда одна пара находится на краю какой либо прорези, вторая пара контактов находится ровно посредине между двумя соседними прорезями. Именно такое расположение и показано на рисунке. В результате реализуется следующий порядок замыкания/размыкания контактов: Замыкается первая группа контактов Замыкается вторая группа контактов Размыкается первая группа контактов Размыкается вторая группа контактов 5. Все повторяется сначала.
Рис. 2. Схема энкодера Рис. 3. Диаграмма работы
На рисунке 2 приведена внутренняя электрическая схема простого механического энкодера. Энкодер имеет всего три вывода (что делает его еще больше похожим на переменный резистор). Нижний по схеме вывод - общий для обеих пар контактов. В результате, при вращении рукоятки энкодера на выходе мы получим две последовательности импульсов. При равномерном вращении в одну сторону это будут два меандра, сдвинутых по фазе на 90 градусов. Для наглядности этот процесс показан на рисунке 3. Как микроконтроллер определяет угол поворота оси энкодера надеюсь понятно. Он просто подсчитывает число импульсов. Причем можно считать импульсы приходящие от любой из группы контактов. Основной фокус - как определить направления вращения. Как раз тут и помогает последовательность замыкания и размыкания контактов. При вращении оси энкодера в одну из сторон каждый раз, когда первая группа контактов переходит из замкнутого состояния в разомкнутое, вторая группа контактов оказывается замкнута. Причем момент перехода первой группы приходится как раз на середину отрезка времени, когда вторая группа замкнута. То есть, дребезг уже закончился и все переходные процессы улеглись. При вращении в другую сторону порядок размыканий и замыканий сменяется на обратный. Поэтому в момент, когда первая группа контактов переходит из замкнутого состояния в разомкнутое, вторая группа всегда оказывается разомкнута. Именно по этому факту микроконтроллер и определяет направление вращения.
Рис. 4. Схема подключения энкодера к микроконтроллеру
На рисунке 4 показана схема подключения энкодера к микроконтроллеру. Контакты энкодера подключаются таким же образом, как подключается простая отдельная кнопка (см. статью " Подключение кнопок" ). Линии порта PD2 и PD3 должны быть настроены как входы и внутренний нагрузочный резистор на обоих входах должен быть включен. Подробнее о настройке линий порта и внутренних нагрузочных резисторах читайте в упомянутой выше статье " Подключение кнопок". Общий вывод энкодера, как видно из схемы, подключается к общему проводу всего устройства.
Программа обработки сигнала от энкодера предельно проста. Обратите внимание, что на схеме (рис. 4) для подключения энкодера выбраны линии PD2 и PD3. И это не случайно. В микроконтроллере ATtiny2313 альтернативной функцией этих выводов является функция входов внешнего прерывания INT0 и INT1. Для работы с энкодером как раз и используется одно из этиз прерываний. Например, можно использовать прерывание по внешнему входу INT0. То есть по входу PD2 (вывод 6). Из чего же состоит программа? Ну, во первых, сначала нужно разрешить прерывание по INT0. Причем необходимо выбрать такой режим, когда прерывание происходит по фрону (или спаду) импульса на этом входе. Ну а затем еще нужна простейшая подпрограммка обработки этого прерывания. Эта подпрограммка должна просто проверять значение линии порта PD3 и в зависимости от того, равно оно нули либо единице уменьшать либо увеличивать регулируемое значение.
Рассмотрим это подробнее. Допустим, что мы выбрали режим прерывания по фронту импульса. Представим, что контроллер выполняет основную программу, не связанную с энкодером. В какой то момент пользователь вращает рукоятку энкодера, например, влево. Контакты начинают замыкаться и размыкаться. По фронту импульса на входе INT0 в микроконтроллере происходит вызов прерывания. Это значит, что работа основной программы временно прерывается и контроллер переходит к подпрограмме обработки прерывания. Эта подпрограмма читает информацию из порта PD и оценивает содержимое разряда PD3. Так как рукоятка энкодера была повернута (мы договорились) вправо, то в этом разряде микроконтроллер обнаружит логическую единицу. Обнаружив единицу подпрограмма обработки прерывания увеличивает значение специальной ячейки, где хранится код, соответствующий текущей громкости. Код увеличивается на единицу. После этого подпрограмма заканчивает свою работу. Микроконтроллер снова переходит к выполнению своей основной программы. Если вращение в ту же сторону продолжается, то по фронту следующего импульса на INT0 опять будет вызвано прерывание и значение громкости снова увеличится на единицу. И так до тех пор, пока не прикратится вращение рукоятки энкодера либо не переполнится значение громкости. Подпрограмма должна проверять это значение и не увеличивать громкость, если она достигла максимума.
Если же ротор энкодера вращать в другую сторону, то та же процедура обработки прерывания, вызванная по фронту сигнала на входе NT0 обнаружит на входе PD3 значение логического нуля. Обнаружив этот ноль, подпрограмма должна уменьшить значение кода в ячейке громкости на единицу. Если вращение продолжается, то по фронту каждого импульса на входе INT0 будет вызываться это прерывание и каждый раз значение громкости будет уменьшаться. И в этом случае, программа должна контроллировать теперь уже минимальное значение громкости. И по достижении нуля, программа больше не должна производить процедуру вычитания.
До сих пор мы говорили о простом механическом энкодере. Но наличие механических контактов всегда связано с такими явлениями, как дребезг, а так же помехи, вызванные плохим контактом в связи с засорением или износом. Все это приводит к низкой надежности работы механического энкодера. Поэтому в последнее время получают все болшее распространение оптоэлектрические энкодеры. В оптоэлектрическом энкодере вместо механических контактов используются оптопары: светодиод-фотодиод. Такой энкодер требует дополнительного внешнего питания, поэтому он имеет еще один вывод - вывод питания. Питаются такие энкодеры обычно от стабилизированного источника +5В и выдают на выходе сигналы, близкие к стандартным логическим уровням. В связи с этим, отпадает необходимость включать внутренние резисторы нагрузки для тех входов микроконтроллера, к которым подключен такой энкодер. В остальном, работа с оптоэлектронными энкодерами аналогична работе с простыми механическими моделями. К сожалению, использование оптоэлектронных энкодеров ограничено их высокой стоимостью.
Последнее обновление (04.05.2008 г.)
Практические примеры применения USB-AVR
Проект USB-AVR пришелся по вкусу многим самодеятельным конструкторам из самых разных стран мира. Компания Objective development на своем сайте призывает всех, кто разработал свою собственную конструкция с использованием их технологии, присылать ее описание или ссылку на сайт с таким описанием и охотно размещает все эти ссылки на своем сайте.
ТО. что проекте участвуют представители разных стран, привело к тому, что разные описания приводятся на разных языках. В основном на английском, немецком, итальянском. К сожалению, пока ни одного проекта на русском. Однако наш сайт планирует перевести описания самых интересных проектов.
Список проектов, выполненных с применением USB-AVR находится по адресу http: //www.obdev.at/products/avrusb/projects.html Список разделен на категории:
Популярное: |
Последнее изменение этой страницы: 2016-06-05; Просмотров: 2607; Нарушение авторского права страницы