Главная > LCD, PIC > Сегментный жидкокристаллический дисплей

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

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

Достоинства: низкая стоимость, хорошая информативность, очень низкое потребление тока, менее 1 мкА.

Недостатки: плохой контраст и угол обзора по сравнению с LED и OLED, тормозит переключение сегментов на низких температурах.

Попался мне в руки брелок от шерифа, на борту у него pic16 с аппаратным драйвером ЖКИ. Решил попробовать зажечь этот дисплей, хоть я и не любитель пиков :)

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

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

Проходя через поляризаторы (в нашем случае плёнка на дисплее — два одинаковых поляризатора) свет беспрепятственно проходит, мы видим прозрачный дисплей. Чтобы «зажечь» сегмент,  свет нужно повернуть на 90 градусов, и мы увидим чёрное пятно сегмента. Тут как раз и применяют кристаллы, между двумя поляризаторами. Подаём ток, кристаллы ориентируются так, что поляризованный свет проходя через них, меняет угол, и задерживается вторым поляризатором.

Теперь как этим добром управлять. Сегмент — это по сути конденсатор, на него нужно подать ток, ток создаст электромагнитное поле ориентирующее кристаллы. Но просто к ноге контроллера его подключить нельзя, так как это конденсатор, то зарядившись сопротивление станет бесконечным и ток перестанет течь, а значит электромагнитное поле исчезнет и сегмент потухнет. Значит ток нужен переменный. Частотой можно контролировать контраст. Вроде без проблем можно сделать, если сегментов мало. А если их 20-30-60, ног контроллера не хватит. Для этого сегменты SEG стали объединять группами,  с общим проводом COM.

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

четыре общих входа: com0-com3, восемь сегментных входов: seg1-seg5, seg21-seg23.

Для работы с аппаратным драйвером есть в CCS подпрограмма

lcd_symbol (symbol, bx_addr[, by_addr]);

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

lcd_symbol(0xFF,COM1+1,COM1+2,COM1+3,COM1+4,COM1+5,COM1+21,COM1+22, COM1+23);

symbol — это по сути флаги сегментов: 1 — зажечь, 0 — потушить. Младший бит слева!

bx_addr — это указатель на физический порт к которому подключен сегмент. Все сегменты отсчитываются от общего провода COM.

Берём провод скажем COM0,  и чтобы зажечь первый сегмент:

lcd_symbol(0x80,COM0+1);

Видим что первый сегмент на COM0 -это волны антенны, второй — будет сама антенна. И так далее.

Обсуждение на форуме: http://forum.phreakerclub.com/showthread.php?p=5

Там же выложен CCS проект под pic16f914 зажигающий весь дисплей. Может сделаю демку кодграббера на этом брелоке :)

(C) exchange
www.phreakerclub.com

Categories: LCD, PIC Tags:
  1. Пока что нет комментариев.
Необходимо войти на сайт, чтобы написать комментарий.
Яндекс.Метрика