Превращаем обычные семисегментные дисплеи в адресные

ИС декодера

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

  • Для «1» MC14558B отображает число в левой части дисплея, используя сегменты «e» и «f» вместо обычных «b» и «c».
  • Для «7» TC5022 отображает его с дополнительным сегментом «f».
  • Для «6» и «9» CD4511B, MC14558B, TC5002, SN74x46 / SN74x47 / SN74x48 / SN74x49 отображают оба числа без «хвоста», где «x» — это .
  • Для «A» — «F»:
  • ИС декодера BCD поддерживают различные семисегментные шрифты для декодированного вывода входов от «A» (10) до «F» (15).
  • В микросхемах 7446/7447/7448/7449 и Siemens FLH551-7448 / 555-8448 для цифр A – E использовались усеченные версии «2», «3», «4», «5» и «6». Цифра F (1111 двоичный) была пустой.
  • TC5002 и TC5022 повторяют цифры от 0 до 5 для цифр A – F.
  • MM74C912 отображал «o» для A и B, «-» для C, D и E и пробел для F. CD4511B просто отображал пробелы.
  • Советские программируемые калькуляторы, такие как Б3–34, использовали символы «-», «L», «C», «Г», «E» и «» (пробел), что отображать сообщение об ошибке .
Производитель номер части Производство Описание 1 2 3 4 5 6 7 8 А B C D E F Выход Техническая спецификация
RCA CD4026B Счетчик BCD , вверх
Активный-высокий
RCA CD4033B Счетчик BCD, вверх Активный-высокий
RCA CD40110B Счетчик BCD, вверх / вниз Активный-высокий
RCA CD4511B BCD декодер, защелка Активный-высокий
RCA CD4543B BCD декодер, защелка Активный-высокий или низкий
Motorola MC14495-1 Снято с производства Шестнадцатеричный декодер, защелка Активный-высокий, 290 Ом
Motorola MC14558B Снято с производства BCD декодер Активный-высокий
TI SN74LS47 BCD декодер Активный-низкий
TI SN74LS247 BCD декодер Активный-низкий
Toshiba TC5002 Снято с производства BCD декодер Активный-высокий
Toshiba TC5022 Снято с производства BCD декодер Активный-высокий
Национальный MM74C912 Снято с производства 6-значный контроллер BCD Активный-высокий
Национальный MM74C917 Снято с производства 6-значный шестнадцатеричный контроллер Активный-высокий
Национальный DM9368 Снято с производства Шестнадцатеричный декодер, защелка Активный высокий, 25 мА CC
Национальный DM9370 Снято с производства Шестнадцатеричный декодер, защелка Активный Низкий, OC
Национальный DM9374 Снято с производства BCD декодер, защелка Активный низкий, 15 мА CC

Семисегментные индикаторы

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

Превращаем обычные семисегментные дисплеи в адресныеПревращаем обычные семисегментные дисплеи в адресные

Почти ко всем таким семисегментным индикаторам добавляют также и восьмой сегмент — точку, для того, чтобы можно было  показать целое и дробное значение какого-либо параметра

Превращаем обычные семисегментные дисплеи в адресные

По идее у нас получается восьми сегментный индикатор, но по-старинке его также называют семисегментным.

Что получается в итоге? Каждая полоска на семисегментном индикаторе засвечивается светодиодом или группой светодиодов. В результате, засветив определенные сегменты, мы можем вывести цифру от 0 и до 9, а также буквы и символы.

Принцип работы

Семисегментный индикатор — это просто набор обычных светодиодов в одном корпусе. Просто они выложены восьмёркой и имеют форму палочки-сегмента. Можно подключить его напрямую к Arduino, но тогда будет занято 7 контактов, а в программе будет необходимо реализовать алгоритм преобразования числа из двоичного представления в соответствующие «калькуляторному шрифту» сигналы.

Для упрощения этой задачи существует 7-сегментный драйвер. Это простая микросхема с внутренним счётчиком. У неё есть 7 выходов для подключения всех сегментов (a, b, c, d, e, f, g pins), контакт для сбрасывания счётчика в 0 (reset pin) и контакт для увеличения значения на единицу (clock pin). Значение внутреннего счётчика преобразуется в сигналы (включен / выключен) на контакты a-g так, что мы видим соответствующую арабскую цифру.

На микросхеме есть ещё один выход, обозначенный как «÷10». Его значение всё время LOW за исключением момента переполнения, когда значение счётчика равно 9, а его увеличивают на единицу. В этом случае значением счётчика снова становится 0, но выход «÷10» становится HIGH до момента следующего инкремента. Его можно соединить с clock pin другого драйвера и таким образом получить счётчик для двузначных чисел. Продолжая эту цепочку, можно выводить сколь угодно длинные числа.

Микросхема может работать на частоте до 16 МГц, т.е. она будет фиксировать изменения на clock pin даже если они будут происходить 16 миллионов раз в секунду. На той же частоте работает Arduino, и это удобно: для вывода определённого числа достаточно сбросить счётчик в 0 и быстро инкрементировать значение по единице до заданного. Глазу это не заметно.

Семисегментный дисплей

Сверху видно 8 сегментов: 7 сегментов дисплея в виде цифры «8» и одна десятичная точка.

7 светодиодов, называемых сегментами, могут показывать буквы алфавита от A до G. Прямое смещение конкретного сегмента или светодиода излучает световую энергию, таким образом освещая часть числа. Есть еще один сегмент, обозначенный как H, используемый для отображения точки.

Десятичная точка или просто точка используются для представления десятичной точки в числах. Например, для отображения числа 2.5 , точка используется для обозначения десятичной точки в этой цифре.

Превращаем обычные семисегментные дисплеи в адресные

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

Вид снизу семисегментного дисплея показан ниже. Вид снизу сегмента показывает 10 контактов сегмента. Это катодные или анодные выводы светодиодов. С помощью этих выводов подсвечиваются семь сегментов.

Пример

Остальные примеры смотри в examples!

/*
   Демонстрация всего функционала, вывод разных данных на дисплей TM74HC595
   Обслуживание динамической индикации берет на себя аппаратный Timer 2
   
Прерывания по таймеру
*/ #define DATA_PIN 11 #define SCLK_PIN 10 #define RCLK_PIN 12 #define DISP_PERIOD 3000 // Период динамической индикации в мкс (500-6000) // #define DISP_PERIOD 500 // Если используется регулировка яркости, дергать tick() надо чаще! // #define DISP595_BRIGHTNESS // Использовать регулировку яркости // #define DISP595_BRIGHTNESS_DEPTH 10 // Глубину яркости можно изменить (по умолч. 8), больше - плавнее яркость, но сильнее мерцание дисплея #include <GyverTimers.h> #include <SevenSegmentsDisp.h> Disp595 disp(DATA_PIN, SCLK_PIN, RCLK_PIN); void setup() { Timer2.setPeriod(DISP_PERIOD); // Заводим Timer 2 на прерывания с нужным периодом Timer2.enableISR(); // Включаем прерывания Timer 2 } void loop() { /* Вывод встроенных и кастомных символов, сырых данных на элеменыт дисплея */ disp.displayBytes(_H, _E, _L, _P); // Прямой вывод данных (символов) на дисплей disp.point(, true); // ПОСЛЕ вывода данных можно добавить / удалить точки disp.point(3, true); // Указываем позицию точки слева (0 - 3) и включаем / выключаем ее (true / false) delay(1000); /* Программное управление яркостью дисплея Чем больше глубина яркости - тем чаще нужно дергать tick()! (если DISP595_BRIGHTNESS обьявлен перед подключением) */ /* disp.brightnessDepth(8); // Установка "глубины" яркости - количества градаций, по умолчанию 8 градаций for (uint8_t i = 7; i > 0; i--) { disp.brightness(i); // Яркость в диапазоне 0-7 delay(500); } delay(1000); for (uint8_t i = 0; i < 8; i++) { disp.brightness(i); // Яркость в диапазоне 0-7 delay(500); } */ /* Вывод одиночных символов на нужную позицию СЛЕВА */ disp.displayByte(_L, 3); // Заменяем 3й символ с 'P' на 'L' delay(1000); /* Вывод массива символов на дисплей с выравниванием по левому / правому краю */ uint8_t data[] = {_D, _A}; disp.clear(); disp.displayBytes(data, sizeof(data)); // Вывод массива символов с выравниванием по левому краю delay(1000); disp.clear(); disp.displayBytes(data, sizeof(data), ALIGN_RIGHT); // Вывод массива символов с выравниванием по правому краю delay(1000); disp.clear(); disp.displayBytes(data, sizeof(data), ALIGN_LEFT); // Вывод массива символов с выравниванием по левому краю delay(1000); /* Вывод бегущих строк */ uint8_t str[] = {_1, _2, _3, _4, _5, _empty, _t, _E, _S, _t}; disp.runningString(str, sizeof(str), 300); // Вывод бегущей строки, указываем массив символов, размер, задержку в мс /* Вывод целых чисел без нулей слева */ for (int8_t i = -50; i < 50; i++) { disp.displayInt(i); delay(100); } /* Вывод целых чисел c нулями слева */ for (int8_t i = 50; i > -50; i--) { disp.displayIntNulls(i); delay(100); } /* Вывод чисел с плавающей точкой без нулей слева */ disp.displayFloat(-12.34); // Без указания точности, дробных знаков - 1 delay(1000); disp.displayFloat(-12.34, 1); // Или же кол-во знаков можно ввести вручную, от 1 до 3 delay(1000); disp.displayFloat(12.34, 2); // Выводить можно как положительные, так и отрицательные числа delay(1000); disp.displayFloat(1.234, 3); // Но при выводе 3х десятичных знаков, места под знак минуса не достаточно delay(1000); /* Вывод чисел с плавающей точкой с нулями слева */ disp.displayFloat(-3.14); // Тут все аналоично, но с нулями слева delay(1000); disp.displayFloat(-1.34, 1); delay(1000); disp.displayFloat(3.1415, 2); delay(1000); disp.displayFloat(3.1415, 3); delay(1000); /* Вывод числа + символов */ for (uint8_t i = ; i < 30; i++) { int value = random(, 99); disp.displayInt(value); // СНАЧАЛА выводим число int disp.displayByte(_t, ); // Пустые символы можем вручную заполнить символами disp.displayByte(_equal, 1); delay(200); } /* Вывод числа + массива символов */ uint8_t strData[] = {_P, _H}; disp.displayFloat(1.2, 1); // СНАЧАЛА выводим число float (заняли всего 2 символа) disp.displayBytes(strData, sizeof(strData)); // Пустые символы можем заполнить массивом символов delay(1000); /* Очистка дисплея */ disp.clear(); // Буфер дисплея очищается delay(3000); } ISR(TIMER2_A) { // Прерывание Timer 2 disp.tickManual(); // Обслуживание динамической индикации дисплея }

Популярные статьи  Заточка и закалка лезвия точилки для карандашей

Управление семисегментным дисплеем

Для управления семисегментным дисплеем используются резисторы, транзисторы и микросхемы. Но в основном управление осуществляется интегральными схемами из-за простоты их взаимодействия.

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

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

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

Превращаем обычные семисегментные дисплеи в адресные

Выводы семи сегментов соединены с помощью резистора и переключателя, 8 переключателей подключены к 8 токоограничивающим резисторам, и они подключены к сегментам дисплея от a до g. Давайте посмотрим, как эта схема управляет цифровым дисплеем.

Чтобы включить сегмент «а», замкните переключатель «а». Ток проходит через резистор, и на токоограничивающем резисторе происходит некоторое падение. Таким образом, на светодиод проходит достаточный ток. Предположим, для отображения цифры 7 переключатели a, b, c замкнуты. Но недостатком здесь является то, что одновременное включение всех светодиодов снижает ток.

Управление семисегментным дисплеем с помощью транзистора

Другой способ управления семью сегментами — через транзистор. В этом случае транзистор используется для усиления входного тока. Коллектор транзистора подключен к общему выводу седьмого сегмента, эмиттер подключен к земле, а база подключена к Vcc. Транзистор, подключенный к общему выводу, усиливает ток в седьмом сегменте.

Превращаем обычные семисегментные дисплеи в адресные

Управление семисегментным дисплеем с помощью интегральной схемы

Еще один способ управления семью сегментами — это интегральные схемы. Обычно это называется семисегментным драйвером или декодером. Чаще всего используется декодер 4511. Это КМОП-микросхема, которая преобразует 4-битное двоично-десятичное число в 8-битные семисегментные данные. Семисегментный CMOS-декодер, подключенный к семи сегментам, показан ниже.

Превращаем обычные семисегментные дисплеи в адресные

На приведенной выше картинке показано управление семисегментным дисплеем с использованием декодера BCD. Здесь мы должны ввести данные BCD в качестве входных данных для отображения цифр от 0 до 9. Например, для отображения цифры 7 будет применяться ввод 0111.

Декодер декодирует примененный вход BCD и отправляет соответствующий выход сегментам. Выходы декодера подключены к семи входам сегмента через резисторы. Эти резисторы используются для ограничения тока.

Работа семисегментного дисплея

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

Например, для отображения цифры «1» необходимо включить сегменты b и c, а остальные сегменты — выключить. Для отображения двух цифр используются два сегмента.

Превращаем обычные семисегментные дисплеи в адресные

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

История [ править ]

представление фигур можно найти в патентах еще в 1903 году (в ), когда Карл Кинсли изобрел метод телеграфной передачи букв и цифр и их печати на ленте в сегментированном формате. В 1908 году Ф. В. Вуд изобрел 8-сегментный дисплей, на котором число 4 отображалось на диагональной полосе ( ). В 1910 году на сигнальном табло котельной электростанции был установлен семисегментный индикатор, освещенный лампами накаливания. Они также использовались, чтобы показать набранный телефонный номер операторам при переходе от ручного набора номера к автоматическому. Они не получили широкого распространения до появления светодиодов в 1970-х годах.

Популярные статьи  Как из футболки сделать платье своими руками. Выкройка и фото

Семисегментный дисплей с нитью

Некоторые ранние семисегментные дисплеи использовали нити накаливания в вакуумированной лампочке; они также известны как нумитроны. Вариант (минитроны) использовал вакуумированный горшок . Минитроны — это сегментные дисплеи с нитью накала, которые размещены в DIP-корпусах, как современные сегментные светодиодные дисплеи. В них может быть до 16 сегментов . Были также сегментные дисплеи, в которых использовались небольшие лампы накаливания вместо светодиодов или нити накаливания. Они работали так же, как современные сегментные светодиодные дисплеи.

Версии с вакуумными люминесцентными дисплеями также использовались в 1970-х годах.

Многие ранние (около 1970-х годов) светодиодные семисегментные дисплеи имели каждую цифру на одном кристалле . Это сделало цифры очень маленькими. Некоторые добавили в дизайн увеличительные линзы, чтобы цифры были более разборчивыми.

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

Для многих приложений точечно-матричные ЖК-дисплеи в значительной степени вытеснили светодиодные дисплеи в целом, хотя даже в ЖК-дисплеях широко распространены семисегментные дисплеи. В отличие от светодиодов, формы элементов ЖК-панели являются произвольными, поскольку они формируются на дисплее с помощью фотолитографии . Напротив, формы светодиодных сегментов имеют тенденцию быть простыми прямоугольниками , что отражает тот факт, что им необходимо физически придавать форму, что затрудняет формирование более сложных форм, чем сегменты 7-сегментных дисплеев. Однако высокий коэффициент распознавания семисегментных дисплеев и сравнительно высокий визуальный контраст, достигаемый такими дисплеями по сравнению с точечно-матричными цифрами, делают семисегментные многозначные ЖК-экраны очень распространенными на простых калькуляторах..

Семисегментный дисплей вдохновил дизайнеров шрифтов на создание шрифтов, напоминающих этот дисплей (но более разборчивых), таких как New Alphabet , «DB LCD Temp», «ION B» и т. Д.

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

3Драйвер для управления 7-сегментным индикатором

Чтобы сократить число задействованных выводов микроконтроллера обычно на практике используются различные решения. Например, популярным способом управления 7-сегментным индикатором является применение микросхемы CD4511 – двоично-десятичного преобразователя. Он переводит двоичный код числа в напряжение на соответствующих цифре сегментах индикатора. Такой преобразователь будет использовать всего 4 ножки Arduino. То есть, например, если необходимо отобразить на индикаторе десятичное число 7, необходимо выставить на входе преобразователя двоичное 0111 («LOW HIGH HIGH HIGH»). Микросхема CD4511 выполняется в разных типах корпусов. Назначение выводов в исполнении с 16-тью ножками, такое:

Выводы двоично-десятичного преобразователя CD4511

Отечественными аналогами данного преобразователя являются микросхемы серий ИД1…ИД7. Кстати, отечественные преобразователи изображают цифры «6» и «9», используя 6 сегментов, а зарубежные CD4511 – только 5 сегментов.

Разница в выводе цифр CD4511 и ИД7

Семисегментный индикатор распиновка

Превращаем обычные семисегментные дисплеи в адресные
Распиновка 1-разрядного семисегментного индикатора hdsp 7503 / 5161as

На картинке выше представлена распиновка одноразрядного семисегментного индикатора с общим катодом (минусом). Модуль представляет из себя небольшой led индикатор в котором находится семь светодиодов (благодаря этому индикатор и получил свое название) и восьмой светодиод в виде точки. Включая светодиоды в разной последовательности от Ардуино Уно, можно выводить различные цифры.

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

При неправильном включении ничего страшного не произойдет, а вот без резистора светодиоды могут сгореть.

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

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

  • катод диодов – 1 штука
  • сегменты для отображения цифры/символа – 7 штук
  • сегмент десятичной точки – 1 штука

Нехитрые манипуляции в виде суммирования дают именно девять сигналов для полноценного управления. И это только для одного разряда. Если разрядов будет 4, то это уже 36 выводов микроконтроллера, что, мягко говоря, чуть больше, чем очень много.

Решение же данной проблемы заключается в использовании динамической индикации. Принцип заключается в том, что в каждый момент времени светится только одна цифра. Допустим, нам нужно вывести на индикатор число «1971», действуем так:

  • Зажигаем «1» на месте первого разряда.
  • Ожидаем некоторое время, пусть 1 миллисекунду. В этом временном интервале у нас горит «1», остальные же три разряда выключены полностью.
  • Гасим «1» в первом разряде и зажигаем «9» на второй позиции.
  • Снова ожидаем в таком состоянии миллисекунду.
  • Повторяем аналогичные действия для оставшихся цифр «7» и «1».

И в итоге за счет того, что смена активных разрядов осуществляется быстро, это изменение остается невидимым для глаза, и поэтому визуально выглядит так, будто цифры горят одновременно. Что и дает нам отображение четырехзначного числа. Графическая иллюстрация динамической индикации:

И теперь нам требуется не 36, а только 12 выводов для управления 4-х разрядным индикатором. Рассмотрим более подробно на конкретном примере такого индикатора:

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

Здесь у нас вариант с общим анодом. Суммарно этот семисегментный индикатор содержит в себе 4 разряда, по 8 сегментов каждый (7 + 1 для точки) и 12 выводов для управления всем хозяйством. Восемь сегментов каждого из разрядов соединены анодами и каждый из них, в свою очередь, выведен на выходной разъем. В данном случае это пины с номерами 12, 9, 8 и 6. Сегменты же разных разрядов соединены катодами между собой. Так точка 1-го разряда, соединена с точками 2-го, 3-го и 4-го разрядов, и этот сигнал выходит на 3-й контакт разъема:

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

  • Подаем на 12-й вывод положительное напряжение, 9-й, 8-й, 6-й заземляем. Таким образом, мы «активируем» только первый разряд.
  • Для того, чтобы зажечь единицу нужно подать на катоды диодов b и c 0 В (выводы 7 и 4). На остальные же катоды подаем то же напряжение, что и на анод. В итоге гореть будут только светодиоды b и c первого разряда.
  • Ожидаем некоторое непродолжительное время.
  • Далее наша задача вывести «9» на второй позиции, потушив все остальные разряды. Для этого по той же схеме – подаем на 9-й вывод положительное напряжение, 12-й, 8-й, 6-й заземляем.
  • Теперь у нас «активирован» второй разряд и только он.
  • Для отображения «9» подаем на катоды диодов a, b, c, d, f, g — 0 В, на катод диода e – то же напряжение, что и на его анод, дабы он оставался в покое.
  • Все, в дальнейшем те же действия для 3-го и 4-го разрядов и все это повторяем циклично. Результатом будет отображение нужного числа.
Популярные статьи  Шапки с аранами. Схемы и описание вязания спицами, женские модели, фото

В итоге, управление осуществляется 12-ю выводами микроконтроллера, что тоже немало, но, как минимум, меньше 36-ти. Есть, конечно же, в продаже и 7-сегментные индикаторы, в которых на разъем выведены все 36 сигналов, соответственно, они не закорочены между собой внутри. Вот, например:

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

Обзор семисегментного индикатора на MT1637

MT1637 это небольшой семи сегментным дисплей с двоеточием в центре, идеальное решения для создания часов реального времени. Часто в различных проектах, необходимо визуально отобразить полученных данные с различных датчиков. Самое простое, это отправить в Serial Monitor или более интересным способом, например через LCD, OLED-, TFT. В статье расскажу, как можно вывести данные на 7-сегментный светодиодный дисплей на микросхеме MT1637.

Технические параметры модуля MT1637

► Модель индикатора: 3642BH; ► Диагональ одного индикатора: 0,36 дюйма;► Тип индикатора: с общим анодом; ► Интерфейс: I2C;► Драйвер: M1637;► Цвет подсветки: красный;► Напряжение питания: 3,3 – 5 В;► Габариты: 43 х 23 х 11 мм;

Общие сведения

На передней части модуля MT1637 установлен четырехзначный 7-сегментным дисплее с двоеточием в центре, на обратной стороне установлена микросхема TM1637 производства Titan Micro Electronics. Сам 7-сегментный дисплей состоит из семи светодиодов, обозначенных буквами: от «a» до «g», которые загораются независимо от друг друга и могут отобразить числа и буквы. Так же, плата совместима с 3,3 — 5 В, никаких дополнительных резисторов или конденсаторов не требуется.

Назначение контактов:► CLK — вход тактовых импульсов.► DIO — вывод данных.► VCC — вывод для подключения источника питания. ► GND— вывод для подключения источника питания.

Подключение Обзор 7-пигментного дисплей TM1637 к Arduino UNO

Необходимые детали:► Arduino UNO R3 x 1 шт.► 4-разрядный 7-сегментный индикатор часов на драйвере TM1637 x 1 шт. ► Провода DuPont, 2,54 мм, 20 см x 1 шт.

ПодключениеВ примере используем Arduino UNO R3 и дисплей на драйвере TM1637 на последним будем отображать показания. Подключение не сложное, необходимо всего четыре провода, первым делом подключаем вывод CLK (TM1637) к выводу 3 (Arduino) и вывод DIO подключаем к выводу 2 (Arduino), затем подключаем питание VCC к +5В и GND к GND. Так же, приведу схему подключения.

Программа №1:Для работы скетча необходимо библиотека «TM1637.h», которая не входят в в среду разработки IDE Arduino, нужно дополнительно установить ее, скачать можно в конце статьи.

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

Превращаем обычные семисегментные дисплеи в адресные
Схема подключения семисегментного индикатора с кнопкой

В следующем примере переключение чисел на индикаторе будет происходить только при нажатии тактовой кнопки. Дойдя до числа 3, таймер вновь обнулится и будет ожидать повторного нажатия на кнопку. Это довольно простые программы для Ардуино и семисегментного индикатора, для более сложных и интересных программ необходимо уже использовать сдвиговый регистр 74hc595 для Ардуино.

Скетч. Одноразрядный семисегментный индикатор и кнопка

#define A  8
#define B  7
#define C  6
#define D  5
#define E  4
#define F  3
#define G  2
#define BUTTON  12

byte v = 0;

void setup() {
   pinMode(A, OUTPUT);
   pinMode(B, OUTPUT);
   pinMode(C, OUTPUT);
   pinMode(D, OUTPUT);
   pinMode(E, OUTPUT);
   pinMode(F, OUTPUT);
   pinMode(G, OUTPUT);
   pinMode(BUTTON, INPUT);
}

void loop() {
   digitalWrite(A, HIGH); //цифра нуль
   digitalWrite(B, HIGH);
   digitalWrite(C, HIGH);
   digitalWrite(D, HIGH);
   digitalWrite(E, HIGH);
   digitalWrite(F, HIGH);
   digitalWrite(G, LOW);
   if (digitalRead(BUTTON) == HIGH) { delay(500); v = 1; }

   while (v == 1) {
      digitalWrite(A, LOW); //цифра один
      digitalWrite(B, HIGH);
      digitalWrite(C, HIGH);
      digitalWrite(D, LOW);
      digitalWrite(E, LOW);
      digitalWrite(F, LOW);
      digitalWrite(G, LOW);
      if (digitalRead(BUTTON) == HIGH) { delay(500); v = 2; }
   }
   while (v == 2) {
      digitalWrite(A, HIGH); //цифра два
      digitalWrite(B, HIGH);
      digitalWrite(C, LOW);
      digitalWrite(D, HIGH);
      digitalWrite(E, HIGH);
      digitalWrite(F, LOW);
      digitalWrite(G, HIGH);
      if (digitalRead(BUTTON) == HIGH) { delay(500); v = 3; }
   }
   while (v == 3) {
      digitalWrite(A, HIGH); //цифра три
      digitalWrite(B, HIGH);
      digitalWrite(C, HIGH);
      digitalWrite(D, HIGH);
      digitalWrite(E, LOW);
      digitalWrite(F, LOW);
      digitalWrite(G, HIGH);
      if (digitalRead(BUTTON) == HIGH) { delay(500); v = 0; }
   }
}

Пояснения к коду:

  1. переменная используется в программе для перехода одного цикла while к другому. При нажатии на кнопку значение переменной v меняется;
  2. в программе поставлена небольшая задержка в каждом условии для защиты от быстрого перехода от одного цикла while в другой.

Заключение. Мы ограничились лишь знакомством с данным модулем и его применением с платой Ардуино. Используя несколько панелек или четырехразрядный семисегментный индикатор можно уже сделать полноценный таймер на Ардуино или часы реального времени. Эти схемы мы разместили в разделе Проекты на Ардуино для начинающих, где любой может найти по своему вкусу проект на микроконтроллере.

Модуль i2c для LCD 1602 Arduino

Превращаем обычные семисегментные дисплеи в адресныеСамый быстрый и удобный способ использования i2c дисплея в ардуино – это покупка готового экрана со встроенной поддержкой протокола. Но таких экранов не очень много истоят они не дешево. А вот разнообразных стандартных экранов выпущено уже огромное количество. Поэтому самым доступным и популярным сегодня вариантом является покупка и использование отдельного I2C модуля – переходника, который выглядит вот так:

С одной стороны модуля мы видим выводы i2c – земля, питание и 2 для передачи данных. С другой переходника видим разъемы внешнего питания. И, естественно, на плате есть множество ножек, с помощью которых модуль припаивается к стандартным выводам экрана.

Превращаем обычные семисегментные дисплеи в адресныеПревращаем обычные семисегментные дисплеи в адресные

Для подключения к плате ардуино используются i2c выходы. Если нужно, подключаем внешнее питание для подстветки. С помощью встроенного подстроечного резистора мы можем настроить настраиваемые значения контрастности J

На рынке можно встретить LCD 1602 модули с уже припаянными переходниками, их использование максимально упощено. Если вы купили отдельный переходник, нужно будет предварительно припаять его к модулю.

Оцените статью
Денис Серебряков
Добавить комментарии

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Превращаем обычные семисегментные дисплеи в адресные
Лампа ценою 1100 евро из эпоксидной смолы