Показаны сообщения с ярлыком lcd. Показать все сообщения
Показаны сообщения с ярлыком lcd. Показать все сообщения

среда, 15 ноября 2017 г.

МЭЛТ на 10 знакомест

МЭЛТ, конечно же, сволочи. У своего LCD MT-10S1 на 10 знакомест они используют цоколевку, «нестандартную» для знакосинтезирующих LCD-индикаторов. Приходится изобретать porn: либо 2 разъема, либо матричный коммутатор на печатке, либо переходник для ЖК-индикатора.


В программировании индикатора тоже есть важный нюанс. Дело в том, что данный индикатор использует ту же адресацию, что и индикатор 8x2. Т.е. его 10 знакомест не являются непрерывной строкой, а набраны из 8 знакомест полной первой строки и 2-х первых знакомест второй строки. Автоперехода курсора (текущей позиции) нет. Это следует учитывать при выводе, поскольку вывести просто так подряд все 10 символов не получится: будут выведены только первые 8 символов. Последние 2 надо выводить как вторую строку.

Библиотека ULCD работает с данным индикатором нормально.
Цитата из переписки с техподдержкой:
Индикатор 10х1 (как и 8х2) сделан на одном кристалле, индикатор 16х2 на двух. Так что вопрос лишь в цене индикатора, и сами кристаллы не бесплатные, и тем более работа по их установке, да и места на плате индикатора не особо много.
Индикатор 10х1 делался под работу в составе АОНов, потому требования к нему были другие, удобство програмирования стояло не на первом месте. Это Вы ещё не видели индикатора MT-16S2S, вот там для вывода русского текста (особенно в трёхпроводном подключении) надо знатно поизвращаться.

четверг, 9 февраля 2017 г.

И о статическом электричестве

С вечера не включил увлажнитель и к утру влажность упала аж до 16%, со статическим электричеством в полный рост. Пока включил увлажнитель, пока поднялась влажность... Попутно выяснил, что по устойчивости к статике дисплей LCD лучше всех. Ну да, на необновляемых знакоместах появляется всякий мусор, но дисплей при этом продолжает нормально работать и им можно пользоваться. А вот дисплей OLED глючит от статики так, что спасает только переинициализация. Дисплей VFD на этот раз не проверял, но ранее и там тоже сталкивался с некоторыми проблемами, вызываемыми статическим электричеством и требующими переинициализации.

пятница, 27 января 2017 г.

Прототип tSol WT Combo - 13

Вернулся к дисплею LCD. Дисплей OLED красив и наряден, но гадит, сволочь, по питанию. Амплитуда шумов доходит приблизительно до 75 мВ (смотрел скопметром, полноценный цифровой осциллограф ради этого доставать не стал). И это всё при том, что по питанию дисплей зашунтирован электролитом и керамикой. Т.е. амплитуда помехи, создаваемой дисплеем, еще больше!


Так что, если вы собираетесь поставить в поделку дисплей OLED от Winstar (а может и не только от них), предусматривайте фильтрацию цепи питания дисплея, предотвращающую распространение помех ОТ дисплея (т.е. обратный фильтр). В идеале, конечно, необходимо использовать полностью отдельную цепь питания для дисплея и помехоподавляющие цепи в информационных и управляющих линиях дисплея.

пятница, 25 декабря 2015 г.

Разоблачаем «городские легенды»

Оптимизировал работу с дисплеем. Прицепил вместо LCD-дисплея LCD-эмулятор на VFD от Futaba: не верьте тем, кто говорит и пишет о низком быстродействии дисплеев на HD44780U. На VFD видно, что на самом деле оно достаточно высокое для того, чтобы картинка даже сделалась некомфортной и понадобилось как-то притормаживать вывод информации на дисплей. На LCD всё, конечно же, выглядит более вальяжно. Но это низкое быстродействие ЖК-матрицы дисплея, а не его контроллера.


среда, 9 декабря 2015 г.

Winstar OLED 1602 на WS0010 (WEH001602ALPP5N00001)

Нашел кое что полезное по глючным OLED от Winstar.

Фактически, используется несколько иная процедура загрузки пользовательских символов, вместо используемой генератором символов mikroPascal. Вариант совместим и с обычными LCD тоже:
ScaleChar_00: array[0..7] of byte = (0,1,1,21,0,0,0,0);
// Char 0x00 (64)
for i := 0 to 7 do
begin
   Lcd_Cmd(64+i);
   Lcd_Chr_CP(ScaleChar_00[i]);
end;
mikroPascal предлагает другой вариант, не работающий с этими OLED:
Lcd_Cmd(64); for i := 0 to 7 do Lcd_Chr_CP(ScaleChar_00[i]);
Из библиотеки LCD с такими OLED полностью совместима только функция LCD_Chr. Функция LCD_Init работает только в момент включения устройства, при обычном сбросе не работает. Функция LCD_Out выводит строку с обратным отсчетом знакомест, т.е. вместо вывода, например, в позиции строки 10, 11, 12, будет вывод в позиции 10, 9, 8. Есть проблема и с функцией Lcd_Init – она нормально отрабатывает только при холодном рестарте. Т.е. при включении из выключенного состояния. При теплом рестарте такой OLED-дисплей инициализируется с ошибками (на экране появляется мешанина из произвольных символов). Выходов тут ровно два (как в одном старом анекдоте):
  1. Написать свою LCD-библиотеку;
  2. Установить ключ по питанию OLED-дисплея и принудительно отключать дисплей на секунду-две перед + давать задержку после включения перед вызовом функции LCD_Init. 
Кому как проще, да.

Кстати, весьма положительное качество библиотеки LCD в mikroPascal – это возможность практически произвольного назначения выводов контроллера, к которым будет подключаться дисплей. Пока что аналогичного решения я не видел ни в одной другой библиотеке – везде выполняется привязка к одному порту (поскольку так – проще всего).

Библиотека для работы с такими индикаторами.



понедельник, 23 ноября 2015 г.

Библиотека LCD 4/8 бит с контролем готовности

После тщетных поисков библиотеки LCD 4/8 бит с контролем готовности под AVR (причем, если применительно к mikroPascal ее отсутствие можно понять и объяснить, то применительно к C таковое явление простому объяснению не поддается), понял, что писать эту библиотеку придется самому. Причина проста: общеизвестная глючность (при выводе строковых переменных и констант) и заторможенность библиотеки LCD, входящей в состав mikroPascal (сигнальная линия R/W должна посажена на землю/ноль, да-да – всё реализовано по тайм-аутам). А мне необходимо выжать из LCD-дисплеев их максимально возможное быстродействие. Для чего требуется отрабатывать команды управления, вывода и адресации не по задержкам, а по флагу занятости контроллера дисплея (BF/D7).

ps. Кстати, если вдруг у кого есть таковая на «сях» (C) – буду рад ее получить. Портировать библиотеку с C на mikroPascal – это далеко не такая геморройная задача, как разработка всей библиотеки с нуля.