Генератор символов для семисегментного индикатора


Генератор символов для семисегментного индикатора

Онлайн редактор символов семисегментного индикатора для Arduino и других микроконтроллеров

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

В этой статье я опубликовал небольшую онлайн — программу, которая позволяет быстро создать код для любого возможного символа для отображения на семисегментном дисплее. Программа написана на Javascript + HTML5 и для ее работы необходимо чтобы ваш браузер поддерживал этот тип скриптов. Эта поддержка есть во всех современных браузерах.

-Кликая мышкой на сегментах редактора вы можете включать и выключать их.


-Буква которой обозначается сегмент отображается в момент наведения указателя мыши на этот сегмент.


-Дисплеи бывают двух основных типов — с общим катодом и с общим анодом. По умолчанию в редакторе включен режим индикатора с общим катодом (радиокнопка CC). Для дисплея с общим анодом включите радиокнопку CA.

Схема индикатора с общим катодом

Схема индикатора с общим анодом


-В полях BIN, HEX и DEC отображается цифровой код текущего состояния индикатора в двоичном, шестнадцатеричном и десятичном исчислении.

Представим себе, что наш индикатор подключен к одному из портов микроконтроллера в естественном порядке, от младшего пина к старшему. Младший бит кода — это сегмент «A», старший — десятичная точка. При этом чтобы получить на индикаторе нужный знак нужно просто вывести этот числовой код в порт микроконтроллера.

Набор маленьких цифровых кнопок в нижней части редактора — это предустановки. Кликнув на соответствующей кнопке вы сразу засветите нужные сегменты в редакторе. Кнопка [Res] позволяет быстро очистить редактор (погасить все сегменты).

Использование семисегментного индикатора с платой Arduino

Один из недостатков семисегментного индикатора заключается в том, что для его подключения напрямую к контроллеру нужно 8 проводов. При непосредственном подключении и статической индикации вам придется задействовать целый порт контроллера под каждый индикатор. Этот недостаток можно преодолеть, подключая индикатор через специальную микросхему — драйвер семисегментного индикатора. В качестве примера можно привести распространенную микросхему  CD4026, которая представляет собой десятичный счетчик со встроенным дешифратором для дисплея. Кроме того, можно использовать динамическою индикацию, что позволяет увеличить число разрядов индикатора используя всего один пин контроллера на каждый дополнительный разряд индикатора. Описание работы подобных схем выходит за рамки этой статьи.

В качестве примера использования редактора символов рассмотрим непосредственное подключение одноразрядного индикатора к плате Arduino Uno. Ниже приведена схема подключения из симулятора Proteus 8.

Индикатор подключен к пинам IO0 — IO7 платы Arduino (порт D микроконтроллера ATMEGA328). Для ограничения тока используются резисторы сопротивлением 330 Ом. Я использую индикатор с общим катодом.

Далее приведен скетч прошивки для платы Arduino Uno

byte digits[] = {63, 6, 91, 79, 102, 109, 125, 7, 127, 111};
byte i = 0;

void setup() {
  DDRD = B11111111;

}

void loop() {

  PORTD = digits[i];
  delay(200);
  i++;
  if (i > 9) { i = 0; }

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

byte digits[] = {63, 6, 91, 79, 102, 109, 125, 7, 127, 111};

Индекс (номер) ячейки в массиве соответствует цифре, которую я хочу вывести. То есть, чтобы напечатать на индикаторе цифру 2 мне нужно взять из массива содержимое ячейки с номером 2 и отправить его в порт D, к которому подключен индикатор. Для вывода нуля, мне нужно взять первую ячейку (с индексом 0). В массив заносим коды, сгенерированные нашим онлайн редактором. Например цифре ноль соответствует код 63.

В основном цикле я по очереди перебираю все ячейки массива и вывожу их на индикатор. В качестве индекса массива используется переменная i.

Видео работы программы (симуляция в Proteus8)

См. также: Генератор символов для LCD дисплеев для Arduino…

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

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