Хабрахабр

Декодирование сигналов мультиплексированного ЖКИ

Например, потек экран устройства, а заменить не на что: В этой статье я расскажу о том, как работает жидкокристаллический индикатор (ЖКИ) с точки зрения сигналов, как эти сигналы декодировать и использовать для своих целей.
Иногда возникают вопросы, связанные с эксплуатацией ЖКИ.

Или экран ЖКИ очень маленький, в темноте его не видно, и стоит задача преобразовать вывод вместо ЖКИ на светодиодный или другой дисплей.

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

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

Жидкокристаллические индикаторы ввиду своих физических особенностей требуют выполнения двух главных требований:

  1. Напряжение между электродами должно быть не менее трех вольт.
  2. На электроды необходимо подавать переменное напряжение без какой-либо постоянной составляющей.

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

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

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

Вот фотография индикатора калькулятора, где видны электроды.

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

Количество выводов в индикаторе равно количеству сегментов плюс общий вывод. Самые простые ЖКИ имеют один общий электрод.

А на сегментные — тоже меандр. На общий вывод подается меандр. Если сегмент не должен отображаться, то фазы совпадают. Отличие состоит в том, что если сегмент должен отображаться, то меняются местами импульс и интервал (фаза, относительно сигнала общего электрода).

А если фазы не совпадают, то между электродами напряжение всегда переменное и равно 3 вольтам. С точки зрения индикатора, когда совпадают фазы, то между электродами напряжение всегда 0 вольт.

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

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

То есть сначала управляются (отображаются или гасятся) сегменты с общим сигналом COM1, в следующий интервал времени управляются сегменты, связанные с общим сигналом COM2 и т. Если в индикаторе с одним общим сигналом один сегмент управляется постоянно, то при мультиплексировании количество интервалов времени, когда управляется один сегмент, делится на количество общих сигналов. по количеству общих сигналов. д.

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

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

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

В индикаторе используются три общих электрода. Это часть схемы микрокалькулятора «Электроника МК-62». На схеме видна разводка общих и сегментных электродов.

Полная схема доступна по ссылке.

На схеме общие электроды обозначены как О1, О2 и О3. Для удобства я расцветил область ответственности общих электродов.

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

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

Я их расцветил соответственно рисунку индикатора на схеме. Первые три эпюры соответствуют общим электродам.

Это те моменты, когда управляются (отображаются или гаснут) сегментные выводы. Нас будут интересовать только раскрашенные «полочки» сигналов, уровни которых находятся на вершинах осциллограмм.

После этого полочки так же (только наверху) сначала у О2, затем у О1 и дальше — О3. В этих эпюрах видно, что сначала внизу «работает» общий О2, затем полочка у О1, потом у О3. Так они и чередуются, соблюдая условие переменного напряжения.

Эти эпюры от реального отображения на индикаторе цифры 0. Теперь, когда «расшифрованы» эпюры общих сигналов, можно посмотреть на эпюры сегментных сигналов, которые я тоже раскрасил. (с точкой) в первом знакоместе.

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

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

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

Воспользуемся открытием великого Эйнштейна, которое гласит: «все относительно», и привяжемся к одному из полюсу сигналов (отрицательному). Когда я писал, что между электродами необходимо подавать переменное напряжение, это верно и правильно, но только с точки зрения электродов. Все остальные уровни автоматически станут положительными.

На показанной выше схеме разработчики уже ушли от разнополярного напряжения и сделали сигналы с уровнями 0 и -3 вольта.

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

Когда приходит верхняя полочка — это +3 вольта. В нашей схеме, когда приходит нижняя полочка, то это будет 0 вольт (сигнал GND — земля). А остальные напряжения сделаны для формирования синусоиды, и мы будем их игнорировать.

Компаратор работает просто: у него есть два входа (положительный и отрицательный) и один выход. Нам необходимо применить два компаратора. Когда напряжение на положительном входе больше, чем на отрицательном, на выходе появляется единица, и наоборот — когда на положительном выходе напряжение меньше, чем на отрицательном, то на выходе — ноль.

Второй компаратор (красная линия) будет отслеживать приход сегментного сигнала. Первый компаратор (зеленая линия) будет отслеживать приход верхней полочки общего сигнала. На положительные же входы компараторов подаются соответственно общий сигнал и сегментный сигнал. Уровень зеленой линии подается на отрицательный вход первого компаратора, а уровень красной линии — на отрицательный вход второго компаратора. В других случаях он не отображается. Уровень общего сигнала выбран наверху, а сегментного — в нижней части — для того, чтобы «поймать» момент, когда сегмент отображается (те самые 3 вольта). Обратите внимание на самую нижнюю эпюру в схеме калькулятора — те моменты, когда остальные сегменты не горят — там сигналы не доходят ни до верхнего, ни до нижнего уровня.

В результате в момент желтой вертикальной линии на выходах компараторов мы поймаем три вольта разницы между сигналами, когда сегмент горит, и 0 вольт, когда не горит.

Теперь этот момент надо зафиксировать. Итак, мы поймали момент, когда нужный сегмент отображается (или гасится). На вход регистра подадим сигнал от компаратора № 2, где отследили сегментный сигнал, а на тактовый вход защелки — выход с компаратора № 1, где начнется логическая единица в момент прихода нужного нам общего сигнала. Для фиксирования этого момента будем использовать регистр с защелкой типа 74HC374.

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

Для отслеживания одного сегмента (пусть это символ снежинки) схема будет выглядеть так:

Второй компаратор отслеживает приход верхней полочки общего сигнала и положительным фронтом защелкивает регистр. Здесь на схеме компаратор U1 отслеживает нижнюю полочку сегментного сигнала, у которого уровень будет ниже, чем установлено на переменном резисторе RP1, и ставит ноль на его выходе.

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

Основная сложность такой схемы — для каждого сегментного и общего сигнала необходим отдельный компаратор, и количество выходов регистров равно количеству сегментов. Такая схема нужна для детектирования каждого сегмента. Но с другой стороны все эти компараторы и регистры сейчас стоят копейки.

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

Схема: habrastorage.org/webt/wk/1i/kg/wk1ikgqdavyjnxcqsqlr2174jke.jpeg

Описание схемы такое же, как и для одного сегмента, только умноженное на 16 сегментных и один-два общих сигнала (количество выбирается перемычкой).

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

Вот еще одно видео, где описывается работа этой платы и показывается, как работает детектирование:

Детектирование калькулятора интересно только в академических целях, а для себя на базе этих плат сделал реальное устройство — светодиодные часы на базе советских часов «Электроника 55».

В часах довольно много сегментов, и пришлось использовать четыре платы.

То есть выходы каждого регистра можно объединить в одну 8-битовую шину. Эти платы также позволяют мультиплексировать выходы регистров. Для отключения на каждый регистр подается логическая единица (например, с микросхемы-мультиплексора типа 74HC137), а на тот регистр, с которого надо снимать данные — логический ноль. В платах предусмотрено отключение выходов (нога 1 у каждого регистра). Причем выборку можно производить асинхронно от схемы декодирования с любой скоростью. Тогда, поочередно выбирая нужный регистр, можно считывать данные с шины ЖКИ, например, другим микроконтроллером, и дальше обрабатывать по своему усмотрению.

Спасибо за внимание. Вот таким образом можно считывать информацию с LCD и использовать в своих целях.

Показать больше

Похожие публикации

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

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

Кнопка «Наверх»