Семисегментный индикатор. Динамическая индикация

Семисегментный индикатор. Динамическая индикация

Уже давно появились дешёвые графические индикаторы. Обладающие большим разрешением, цветные или монохромные на выбор, с разными интерфейсами, в том числе с весьма популярными и простыми в использовании SPI, I2C. Тогда нужны ли сейчас кому-нибудь индикаторы семисегментные, пришедшие из прошлого века и имеющие предельно ограниченные возможности?

Вероятно, их ещё рано полностью списывать со счетов, пока для семисегментных индикаторов существуют свои области применения, где они являются вполне конкурентоспособными. Например, жидкокристаллические семисегментные индикаторы обладают ультранизким энергопотреблением. Хотя управление ими довольно сложное, им трудно найти замену, сравнимую по экономичности. Если говорить о светодиодных семисегментных индикаторах, то они просты и надёжны, обеспечивают высокую яркость и контрастность отображаемых цифр. Кстати, семисегментные индикаторы способны отображать не только цифры, но и некоторые другие символы ('-', 'A', 'b', 'C', 'd', 'E', 'F', ...). Добавим к списку достоинств невероятную простоту управления этими индикаторами: работать с ними способен самый простой микроконтроллер. Более того, в до-микроконтроллерную эпоху такие индикаторы успешно использовались в составе приборов на довольно примитивной цифровой логике. В то время как на отрисовку символов на "полноценном" графическом индикаторе затрачивается достаточно много ресурсов микроконтроллера.

Кроме того, светодиодные семисегментные индикаторы могут быть сделаны любого размера - от миниатюрных до огромных (в уличном исполнении). При этом крупные индикаторы получаются сравнительно дешёвыми.

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

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

Подробнее о семисегментных индикаторах, динамической индикации, о подключении индикатора к микроконтроллеру (с примерами), смотрите в статье на rotr.info:
"Семисегментный индикатор. Динамическая индикация".

Комментарии

  1. Поясните пожалуйста значение этой строки? const uint32_t DIGS_COUNT=
    sizeof DIGS_CONTROL/sizeof DIGS_CONTROL[0];
    Здесь я так понимаю мы делим размерность массива на первый элемент массива, зачем?

    ОтветитьУдалить
    Ответы
    1. Делим размер массива массива (в байтах) на размер одного элемента этого массива (в байтах), получаем количество элементов в массиве (используется для того, чтобы не задавать длину явно, а вычислять её на основе определения массива).

      sizeof DIGS_CONTROL[0]
      это то же самое, что
      sizeof тип_элемента_массива
      но чуть универсальнее - если впоследствии тип элемента будет изменён, не нужно будет править код для определения длины массива.

      Удалить
  2. Попробовал ваш код переписать под язык СИ, только немного смущает uint32_t t=-123; что присваивается к целочисленному uint32_t (от 0 до 4 294 967 295) типу отрицательное число -123, компилятор об этом предупреждает?

    ОтветитьУдалить
    Ответы
    1. Вы правы, с точки зрения хорошего стиля, лучше будет определить t как переменную типа int или int32_t.
      С другой стороны, с практической точки зрения, особой разницы нет, т.к. далее t всё равно используется как переменная типа int (вызов display(t); аргумент функции display объявлен как int). А битовое представление что у int, что у uint - одинаковое. Поэтому мой код тоже работает без проблем.
      Честно говоря, уже сам не помню, почему когда писал этот пример, предпочёл определить t как uint32_t.

      Удалить

Отправить комментарий

Популярные сообщения из этого блога

Хлебопечка: устройство, схема, ремонт

Сумма гармонических сигналов одной частоты