Показать сообщение отдельно
Непрочитано 21.05.2011, 09:43   #103
Halex07
Супер-модератор
 
Аватар для Halex07
 
Регистрация: 03.05.2007
Сообщений: 2,695
Сказал спасибо: 28
Сказали Спасибо 4,509 раз(а) в 956 сообщении(ях)
Halex07 на пути к лучшему
По умолчанию Re: FAQ (ЧаВО) по PROTEUS для начинающих и не только

8.10. Знакомимся с моделями на основе LCDMPX.DLL – еще одним вариантом библиотеки для построения цифровых индикаторов в ISIS. Общие принципы построения моделей ЖК индикаторов.

Из названия библиотеки по аналогии с описанной выше напрашивается элементарный вывод, что служит она для создания моделей жидкокристаллических индикаторов (LCD от английского Liquid Crystal Display), и так же как предыдущая мультиплексирована (MPX от multiplexing). Ну, если второй термин себя полностью оправдывает, то LCD в общем то только потому, что она изначально разрабатывалась для имитации ЖК цифровых индикаторов. Но, как мы уже убедились на примере LEDMPX, в которой диодными свойствами и близко не пахнет, аналогично обстоит дело и здесь. LCDMPX тоже обладает только цифровыми свойствами, т.е. тока не «кушает» и имеет только два состояния: активный элемент «горит», активный элемент потушен. Я не стану расписывать здесь теорию управления реальными ЖК индикаторами, для этого есть соответствующая литература. Про особенности конструкций ЖК индикаторов и принципы частотного и фазового управления ими вы можете прочесть в старых справочниках, например:
· МРБ вып. 1122. Пароль Н.В., Кайдаров С.А. Знакосинтезирующие индикаторы и их применение. М., Радио и связь, 1988 г.;
· Вуколов Н.И., Михайлов А.Н.. Знакосинтезирующие индикаторы. Справочник. Под ред. В.П. Балашова. М., Радио и связь, 1987 г.
Особенности управления конкретными реальными ЖК индикаторами необходимо учитывать при разработке своих конструкций, поскольку от этого зависит «продолжительность жизни» вашего индикатора, а модель ISIS построена так, что допускает статическое управление и легко пропустит ошибки, допущенные в динамике. Еще раз хочу подчеркнуть, что пока мы ведем речь о простых индикаторах, у которых имеется один общий вывод для каждой группы сегментов индикатора, просьба «чайников» от электроники не путать с COG-индикаторами, их мы коснемся особо.
В библиотеках ISIS цифровые ЖК индикаторы представлены весьма скромно всего пятью моделями, расположенными в Optoelextronics =› LCD Panels Displays. Объясняется этот факт по-видимому отсутствием спроса на данный тип моделей у легальных «забугорных» пользователей. Нам же, сирым и убогим, выковыривающим ЖК индикаторы из отслуживших свой срок калькуляторов, телефонов и прочей оргтехники отсутствие этих моделей доставляет массу неудобств. Да и китайско-белорусская промышленность до сих пор исправно снабжает Российский рынок сегментными ЖК-индикаторами. Это и широко распространенные индикаторы Минского ОАО "ИНТЕГРАЛ" http://www.integral.by и цифровые ЖК индикаторы китайской фирмы Intech LCD Group http://www.intech-lcd.com/standardpanel.htm. Подчас применение этих сравнительно дешевых индикаторов позволяет весьма существенно сэкономить деньги в простых приложениях типа электронных часов, таймеров, термометров и пр. «бытовухи». Ну и конечно, многим хочется иметь такие модели для предварительной отладки в ISIS. Вот этим мы сейчас и займемся.
Итак, для того чтобы активировать («зажечь») сегменты ЖК индикаторов на базе LCDMPX достаточно подать на них питание (пример индикатора VI-402-DP слева) или логические уровни (пример индикатора VI-332-DP справа) в правильной полярности (Рис. 106).
По сути, этими двумя индикаторами: для часов и для мультиметра и ограничен наш выбор в ISIS. Оставшиеся три в библиотеке – заказные индикаторы для отладочных микроконтроллерных комплектов и практической ценности для рядового пользователя не представляют.
Чуть ниже индикаторов на рисунке я расположил их выводы с подсвеченными именами. Мы можем заметить, что часовой индикатор имеет один общий вывод с именем COM1 и 32 сегментных вывода с именами SEG1…SEG32. Индикатор справа в отличие от первого имеет четыре общих вывода – COM1…COM4 и меньшее количество сегментных. Наталкивает на мысль об аналогии с моделями на основе LEDMPX, рассмотренными ранее, но это не совсем корректно. Дело в том, что в модели LEDMPX, как вы вероятно помните, развертывание знакомест (нумерация) идет слева направо по горизонтали, т.е. общему выводу 1 соответствует левая цифра, выводу 2 вторая слева и далее с шагом шириной в одно знакоместо (цифру из N-сегментов с подложкой-фоном). В модели LCDMPX имеет место относительная двумерная пространственная ориентация по осям Х-Y для сегментов, соответствующих определенному общему выводу с именем COM. На примере VI-332-DP для COM1 и COM4 расположение соответствующих сегментов представлено на рисунке 107. Не очень привычно, но дает более широкие возможности при создании собственных моделей.
Чтобы нам в дальнейшем не путаться выводы «знакомест» (конструктивно это выводы задней пластины ЖК индикатора) COM nот английского «common» – общий, я так и буду называть – общие выводы, потому что термин «знакоместо» здесь весьма условен, ну а выводы сегментов – SEGn так и останутся выводами сегментов. Итак, максимальное количество и тех и других для моделей на основе LCDMPX – 64. Нумерацию можно вести кому как привычнее, т.е. могут существовать SEG1…SEG64 или SEG0…SEG63. Чем ограничение в 64 сегмента чревато в действительности? Среди реально существующих цифровых ЖК индикаторов немного найдется с раздельными общими выводами. Как правило, он один на всю заднюю пластину-подложку. А вот выводов сегментов может оказаться больше, чем допустимый предел. Типичные примеры: таксофонный ИЖЦ13-8/7 (8 цифр с точками и 8 символов надчеркивания над ними) или Intech ITS-E0806 (8 цифр с точками плюс два разделительных двоеточия).
Дальнейшее рассмотрение продолжим на примере VI-332-DP, поскольку он наиболее показателен с точки зрения построения моделей на базе LCDMPX.DLL. Для начала «поколотим его молотком» (Decompose) и посмотрим на состав входящих в него символов, переключив селектор в соответствующее положение кнопкой S слева в меню (Рис. 108 ).
Всего в составе индикатора 23 символа. Символы LCDSEG_0LCDSEG_7 нам уже знакомы по предыдущим семисегментным индикаторам. Это образующие цифру сегменты и десятичная точка. Для примера на рисунке 109 в верхнем ряду приведены первые четыре символа сегментов дополнительно «разобранные на запчасти», чтобы был виден маркер ORIGIN. Здесь тоже никаких новшеств по отношению к остальным сегментным индикаторам за исключением цвета погашенного (с индексом _0) и горящего (с индексом _1) символа.
В нижнем ряду также «разобранные на запчасти» первые четыре дополнительных символа. Здесь я хотел бы заострить ваше внимание на положении маркера ORIGIN, потому что именно с ним будет связано все, что будет изложено ниже, а именно принцип позиционирования символов в моделях на основе LCDMPX.DLL.
Снова вернемся к полноценной модели VI-332-DP и заглянем в ее свойства. В окне Edit Properties установим флажок Edit all properties as text, чтобы увидеть то, что изначально скрыто от посторонних глаз (Рис. 110).
Ниже я полностью привожу те десять строчек (по числу сегментных выводов SEG1…SEG10), которые нас интересуют:
Цитата:
{SEG1=(11,400,50),(9,0,200),(8,0,500),(10,0,800)}
{SEG2=[13,1700,50],[12,1000,50],[22,200,200],[7,250,200]}
{SEG3=[0,900,200],[5,900,200],[4,900,200],[3,900,200]}
{SEG4=(1,900,200),(6,900,200),(2,900,200),(7,950,2 00}
{SEG5=(0,1600,200),(5,1600,200),(4,1600,200),(3,16 00,200)}
{SEG6=(1,1600,200),(6,1600,200),(2,1600,200),(7,16 50,200)}
{SEG7=(0,2300,200),(5,2300,200),(4,2300,200),(3,23 00,200)}
{SEG8=(1,2300,200),(6,2300,200),(2,2300,200),(-1, 0,0)}
{SEG9=(14,2000, 0),(15,2500,0),(16,2700,450),(19, 2700,750)}
{SEG10=(18,2700, 450),(17,2700,450),(20,2700,750),(21, 2700,750)}
Вот это и есть основа позиционирования сегментов и с ней нам сейчас предстоит разобраться. Итак, для начала вспомним, что фигурные скобки в начале и конце каждой строки означают сокрытие текста (HiddenText) и поэтому нас в данный момент мало интересуют. Как вы наверное уже догадались, каждая строка соответствует выводу сегментов, с имени которого она начинается, т.е. SEG1 соответствует одноименному выводу с номером 5, ну а SEG10 – выводу с номером 14. После знака равенства имеются четыре секции по три числа, заключенные в круглые скобки и разделенные запятыми. Именно четыре общих вывода COM имеет данная модель, если кто подзабыл – вернитесь к рисунку 106. Нетрудно догадаться, что левая секция в круглых скобках соответствует выводу с именем COM1, следующая COM2 и т.д. Нам осталось разобраться с тем, что находится внутри круглых скобок. Тут тоже ничего сверхъестественного: первое число – номер n символа LCDSEG_n, второе и третье соответственно положение по осям X и Y в координатах сетки маркера ORIGIN этого символа относительно маркера ORIGIN всей модели (виден в левом верхнем углу на Рис. 108 . Вот именно это я и обозвал выше по тексту заумной фразой двумерная относительная пространственная ориентация. Чтобы было более наглядно, попробую изобразить это на картинке на примере одного символа, например, LCDSEG_9 (Рис. 109) с координатами X=0, Y=200, соответствующего изображению батарейки. Данный символ в соответствии со второй секцией в круглых скобках для строки SEG1= в свойствах должен стать активным при подаче на COM2 логической единицы, а на SEG1 – логического нуля. Проверяем… (Рис. 111).
Как видим, наши предположения полностью подтвердились. Сами изображения маркеров ORIGIN я нанес на рисунок для наглядности. По оси X смещение маркера символа отсутствует, по оси Yравно двум клеткам, т.е. при шаге сетки 100th соответствует числу 200.
Ну и в заключении к этому познавательному материалу, прежде чем мы перейдем к практическому созданию моделей, несколько существенных замечаний.
Первое из них касается описания координат в свойствах модели, а конкретно разделительных запятых. Привычного для обычного текста пробела после запятой, а уж тем более до нее лучше не делать. Это касается как написания координат внутри круглых скобок, так и запятых между секциями. Хотя, если посмотреть на последнюю строчку, мы видим их присутствие в модели в двух местах, но исходя из личного опыта, особенно с более ранними версиями Протеуса, я все же рекомендую их не делать. В ряде случаев наблюдалась неадекватная реакция симулятора на наличие пробелов в свойствах сегментов.
Второе замечание касается относительной координаты по осиY. Предопределяя желание некоторых любителей покричать: «Вот это глюк! Так глюк!», поясняю – реально в последней картинке смещение по Y должно быть отрицательным – ведь оно направлено вниз, и мы столкнемся с этим фактом при построении своих моделей. Почему же стоит положительное число 200? Программисты меня и автора LCDMPX поймут с полуслова – а стоит ли таскать внутри модуля знаковые константы, если они используются только внутри и никак не связаны со всей остальной программой? Поэтому не удивляйтесь, что конструируя свои модели мы будем получать отрицательное смещение по осиY, но скромно забывать при этом о знаке числа.
Ну и последнее, если Вы заглянете самостоятельно в свойства модели часового индикатора VI-402-DP с установленной галочкой, то увидите, что там для описания свойств строки SEG= имеют только одну секцию с координатами, ведь у него только один общий выводCOM1, зато строк сегментов будет гораздо больше. Желающие могут скачать даташиты на эти индикаторы, они доступны при подключенном Интернете при нажатии кнопки Data в свойствах модели, либо через клик правой кнопкой и выборе опции Display datasheet. Правда сразу могу огорчить, на просторах России я этих индикаторов не встречал – не завозят.
Рисунки 106, 107, 108.
Рисунки 109, 110,111.
Миниатюры:
Нажмите на изображение для увеличения
Название: Pic_106.gif
Просмотров: 605
Размер:	70.2 Кб
ID:	22379   Нажмите на изображение для увеличения
Название: Pic_107.gif
Просмотров: 437
Размер:	24.2 Кб
ID:	22380   Нажмите на изображение для увеличения
Название: Pic_108.gif
Просмотров: 449
Размер:	84.8 Кб
ID:	22381  

Нажмите на изображение для увеличения
Название: Pic_109.gif
Просмотров: 426
Размер:	80.7 Кб
ID:	22382   Нажмите на изображение для увеличения
Название: Pic_110.gif
Просмотров: 422
Размер:	66.0 Кб
ID:	22383   Нажмите на изображение для увеличения
Название: Pic_111.gif
Просмотров: 438
Размер:	73.3 Кб
ID:	22384  


Последний раз редактировалось Halex07; 26.06.2011 в 13:21.
Halex07 вне форума   Ответить с цитированием
Эти 16 пользователя(ей) сказали Спасибо Halex07 за это сообщение:
aleksa-yar (14.06.2011), Andriy_O (15.12.2011), bobby1968 (16.06.2011), bozhko (23.06.2011), grbizly (13.06.2011), kittec (06.06.2011), kuksin (31.05.2011), malyshevsergey (06.06.2011), parcshin (05.01.2012), ReLe1 (14.08.2011), sa502 (07.06.2011), timur1009 (08.06.2011), Traan (16.09.2013), vovic.tynda (21.05.2011), ДимаК (21.06.2011)