В HTML      В PDF
микроэлектроника, микросхема, микроконтроллер, память, msp430, MSP430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, SED1335, mega128, avr, mega128  
  Главная страница > Прменения > ЖКИ

реклама

 
радиационно стойкие ПЗУ Миландр

Продажа силового и бронированного кабеля и провода в Москве

текст еще



Введение в теорию жидких кристаллов

В этом разделе даётся объяснение технических основ функционирования пассивных ЖК-элементов.

1 Физические основы

Основные характеристики ЖК обусловлены анизотропными характеристиками используемых материалов. Наиболее распространены нематические ЖК-молекулы, оси которых вытянуты параллельно друг другу.

Ниже будет рассмотрена базовая конструкция и основы функционирования стандартного индикатора. Первая деталь – специальное стекло, придающее неполяризованному световому потоку плоскую поляризацию. В следующем слое «скрученная» структура ЖК-молекул вращает плоскость поляризации света на 90 градусов. Таким образом, свет проходит через второй поляризатор и устройство выглядит белым.

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

После снятия поля нематик возвращается в «скрученное» состояние.

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

С электрической точки зрения, каждый элемент представляет собой конденсатор, с учётом сигнальных линий он представляет из себя RC-цепь.

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

2 Управление

Управление – это процесс включения и выключения пиксела с целью создания изображения. Существуют 2 основных типа управления – статическое и мультиплексированное.

2.1 Статическое управление.

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

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

2.2 Мультиплексное управление

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

Таким способом упрощается управляющая схема, т.к. каждому пикселу не требуется собственная управляющая линия. Для матрицы 4х4 пикселов потребуется 16 драйверов при статическом управлении. При использовании мультиплексного управления их число снизится до восьми – по одному на каждый столбец и строку.

Пример:

На рис. 1.2 показан формат 2х2 (bias 1:2 duty 1:2).

Используются только 2 линии COM (duty 1:2) и на выходе будет 2 уровня напряжения (bias 1:2) - V1 и V3. Показаны формы сигнала для двух сегментов: SEGn выключен и SEGn+1 включен. Алгебраическая сумма напряжений между линиями COM и SEG отображена на «разностных» осциллограммах. Для предотвращения разрушения кристаллов постоянным током, ЖКИ питается двухполупериодным переменным напряжением. Уровень напряжения V1(=V2) это симметричная «средняя точка» для индикатора.

    (1)(V3-V1) = - (V0-V1)
    (2)V1 = V3/2

Кроме этого, интервал действия каждого сигнала также является постоянным.

Если число «общих» (COM) линий возрастает, время контроля каждого пиксела (duty) уменьшается, что приводит к ухудшению контраста и угла обзора, но это компенсируется менее сложной схемой управления.

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

Именно это является целью удвоения временных интервалов – к каждой цепочке сегментов попеременно прикладывается напряжение противоположной полярности.

3. Управление ЖК

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

3.1 Микроконтроллеры с драйвером ЖК

Fujitsu Microelectronics предлагает ряд МК с встроенным ЖК-драйвером:

Серия МК Тип Разрядность ЖК
MB89150 8-битный 4х36
MB89160 8-битный 4х24
MB89180 8-битный 4х32
MB89480 8-битный 4х31
MB89560 8-битный 4х24
MB89570 8-битный 4х14
MB89650 8-битный 4х32
MB89800 8-битный 4х70
MB89820 8-битный 4х50
MB89940 8-битный 4х17
MB89950 8-битный 4х42
MB90420 16-битный 4х24
MB90425 16-битный 4х24
MB90520 16-битный 4х32
MB90620 16-битный 4х32

3.1.1 Встроенный ЖК-контроллер

Для примера изучения ЖК-контроллера будет рассмотрена серия MB90420. Блок-схема демонстрирует основные функции.

ЖК-контроллер/драйвер имеет встроенную дисплейную память данных 12х8 бит и управляет ЖК-индикатором при помощи четырёх «общих» (COM) выходов и 24-х выходов сегментов (SEG). Возможно задействование только трёх выходов. ЖК-контроллер/драйвер содержит средства вывода дисплейной памяти на ЖК-индикатор посредством выходов COM и SEG, индикатор подключается непосредственно к драйверу.

Дополнительные возможности:

  • Встроенный резистивный делитель управляющих напряжений ЖК. Также имеется возможность подключения внешнего делителя.
  • До 4-х «общих» выходов (COM0…COM3)
  • До 24-х выходов сегментов (SEG0…SEG23)
  • Встроенная дисплейная память (ОЗУ) объёмом 12 байт
  • Возможность выбора ?, 1/3 или ? Duty (ограничено выбором Bias)
  • Непосредственное подключение ЖКИ

3.1.2. Регистр управления ЖК

Кроме дисплейного ОЗУ для управления основными функциями встроенного ЖК-контроллера используются 2 управляющих регистра – LCRH и LCRL. Один регистр используется для выбора режима контроллера. Второй регистр определяет, какие из сегментных выходов будут использованы, остальные выходы могут использоваться как обычные порты ввода-вывода.

Дисплейное ОЗУ 12х8 бит хранит информацию о состоянии («вкл/выкл» ) каждого из 4х24 сегментов. Данное ОЗУ читается автоматически, синхронно, в соответствии с установленными в регистре LCRL настройками. Каждый «единичный» бит создаёт выходной сигнал, включающий соответствующий сегмент, каждый «нулевой» бит выключает сегмент.

Дисплейное ОЗУ:

*Названия бит могут отличаться от приведенных в Datasheet и/или Hardware manual. Но в целях упрощения ПО для пользователя, соответствующие переименования сделаны в заголовочных (Header) файлах согласно вышеприведенной таблице. Благодаря этому программный код легко переносим на разные серии МК.

3.1.3 Пример программы 1/2 bias, 1/2 duty

Приведенный пример программы переводит ЖК-контроллер в режим 1/2 bias, 1/2 duty, который обсуждался в разделе 2.2.2


#include “mb90425.h”

void main(void)
{
	LCRL = 0x25; /* Встроенный делитель, тактирование Main Clock             */
	LCRH = 0x7f; /* Используются все 24 линии сегментов SEG00..SEG23, DTCH=0 */

/* В режиме 1/2 bias, 1/2 duty могут быть использованы 2х24 сегмента         */
/* (SEG00..SEG23 x COM0/COM1)                                                */
/* Для включения/выключения сегментов могут использоваться разные методы     */

/* Все методы приводят к одинаковому результату, но имейте в виду, что       */
/* Побайтный доступ быстрее, чем побитный доступ                             */

/* В данном примере включены следующие сегменты:                             */
/* SEG00-COM0, SEG00-COM1, SEG01-COM0, SEG01-COM1                            */
/* Аналогичным образом могут быть включены/выключены и другие сегменты       */


/* 1.) Непосредственная запись по адресу ОЗУ:                                */

	*(volatile unsigned char _far*) (0x3960)  =  0x33;


/* 2.) Использование определения регистра из заголовочного файла:            */
/* Обратите внимание – в каждом байте содержится две линии сегментов         */

	SEG00 = 0x33; /* то же, что и SEG01 = 0x33 */


/* 3.) Использование битовых определений из заголовочного файла:             */

	SEG00_COM0=1;
	SEG00_COM1=1;
	SEG01_COM0=1;
	SEG01_COM1=1;
	
while (1)
	asm (“\tNOP”); /* больше ничего не выполняется */
}

Примечание:
Обратите внимание, что в старых версиях Hardware Manual на серии MB90420/425 содержится ошибка. К сожалению, не упомянут бит DTCH (Duty Change) в регистре LCRH, однако этот бит должен быть установлен в «1» для получения режима ? bias, ? duty.

3.2 Внешний ЖК-контроллер

Ряд компаний, выпускающих микросхемы предлагает несколько типов внешних ЖК-контроллеров. Принцип функционирования у них в большой степени схож, основные различия относятся к числу линий COM/SEG и интерфейсу подключения к МК.

Одна из весьма интересных ИС выпускается фирмой Philips. PCF8576 – однокристальный контроллер ЖКИ с встроенным драйвером и ОЗУ данных до 160 сегментов. Подключение к МК осуществляется всего по двум проводам.

В разделе "Контроллеры и драйвера для ЖК индикаторов" приведен неполный список производителей внешних контроллеров ЖКИ.

3.3 Дискретные контроллеры ЖКИ с использованием портов ввода-вывода.

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

Существуют несколько рекомендаций по созданию напряжений смещения на общих линиях (COM).

На рис. 2.3а показан пример использования высокоимпедансного (Z) состояния порта ввода-вывода, настроенного на ввод для создания трёх выходных уровней – 0,Vcc/2 и Vcc.

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

Другой вариант представлен на рис. 2.3б. В этом примере управляющее напряжение формируется двумя выходами P00 и P01.

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

Управление ЖК при помощи портов ввода-вывода содержит в себе ряд потенциальных опасностей.

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

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

Принимая во внимание все перечисленные недостатки, такой метод управления ЖК -индикатором не рекомендуется.

3.4 Символьные ЖКИ

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

Данные модули имеют встроенный ЖК-контроллер и драйверы. Для связи с МК используется простой параллельный интерфейс. В большинстве таких модулей используется контроллер HD44780 или его аналоги. Де-факто, протокол данного контроллера от Hitachi Semiconductor стал стандартом, что сделало возможным использование программных библиотек.

Контроллер поддерживает до 80 цифробуквенных символов, обычно выпускаются модули с конфигурацией 2x14, 2x16, 2x20, 2x24, 2x40, 4x20 символов.

Требования, предъявляемые к интерфейсу микроконтроллера несложны. Для связи требуется всего 7 линий ввода-вывода. На рис. 2.4 показано подключение такого стандартного модуля.

В данном примере используется порт 6, но можно использовать любой другой порт. Индикатор может работать в двух режимах : три служебные линии (E,R/W,RS) и 4-х или 8-битная шина данных. С целью уменьшения используемых выводов, в данном примере используется 4-битный режим. Каждый байт данных передаётся двумя тетрадами при помощи специального протокола.

Большинство модулей имеет стандартное расположение выводов:

Номер вывода Название Активный уровень Направление Назначение (8-битный режим) Назначение (4-битный режим)
1 Vss - - Питание (GND) Питание (GND)
2 Vcc - - Питание (+5В) Питание (+5В)
3 Vee - - Установка контраста Установка контраста
4 RS 0/1 Вход «0» – команды
«1»- данные
«0» – команды
«1»- данные
5 R/W 0/1 Вход «0» – запись в модуль
«1» – чтение из модуля
«0» – запись в модуль
«1» – чтение из модуля
6 E 1 > 0 Вход Сигнал разрешения Сигнал разрешения
7 D0 0/1 В/В Шина данных 0 (МЗР) Не используется
8 D1 0/1 В/В Шина данных 1 Не используется
9 D2 0/1 В/В Шина данных 2 Не используется
10 D3 0/1 В/В Шина данных 3 Не используется
11 D4 0/1 В/В Шина данных 4 Шина данных 0(МЗР) и 4
12 D5 0/1 В/В Шина данных 5 Шина данных 1 и 5
13 D6 0/1 В/В Шина данных 6 Шина данных 2 и 6
14 D7 0/1 В/В Шина данных 7 (СЗР) Шина данных 3 и 7(СЗР)

Для установки режимов работы модуля и выбора 4-битной шины требуется подать ряд команд начальной инициализации. Поток данных между микроконтроллером и ЖК-модулем состоит из команд и данных (ASCII-совместимых символов).

Инструкция RS RW DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 Описание
Очистка дисплея 0 0 0 0 0 0 0 0 0 1 Очищает дисплей и возвращает курсор в начальное положение
Возврат курсора 0 0 0 0 0 0 0 0 1 * Возвращает курсор в начальное положение
Выбор направления сдвига 0 0 0 0 0 0 0 1 ID S Выбирается направление сдвига курсора
0 0 0 0 0 0 1 D C B Включает/выключает весь дисплей (D) или курсор
Сдвиг курсора/экрана 0 0 0 0 0 1 SL RL * * Сдвигает курсор или экран
Программирование режима 0 0 0 0 1 DL N F * * Определение режима отображения и ширины шины данных
Установка адреса CGRAM 0 0 0 1 a a a a a a Устанавливает адрес CGRAM
Установка адреса DDRAM 0 0 1 a a a a a a a Устанавливает адрес DDRAM
Чтение флага занятости 0 1 BF a a a a a a a Чтение флага занятости и счётчика адреса
Запись в CGRAM или DDRAM 1 0 d d d d d d d d Записывает данные в CGRAM или DDRAM
Чтение из CGRAM или DDRAM 1 1 d d d d d d d d Читает данные из CGRAM или DDRAM

DDRAM – ОЗУ данных дисплея (Display Data RAM) ; CGRAM – ОЗУ знакогенератора (Character Generator RAM); a – адрес; d – данные

I/D: «0»- декремент позиции курсора,
«1»- инкремент позиции курсора
BF: «0» – готов к приёму команды,
«1» – занят (выполняется команда)
D: «0» – дисплей выключен,
«1» – дисплей включен
R/L: «0» – сдвиг влево,
«1» – сдвиг вправо
B: «0» – мигание курсора выключено,
«1» - мигание курсора включено
S: «0» – нет сдвига экрана,
«1» – сдвиг экрана
N: «0» - 1/8 или 1/11 duty (1-строчный режим),
«1» - 1/16 duty (2-строчный режим)
DL: «0» – 4-битный интерфейс,
«1» – 8-битный интерфейс
F: «0» – матрица 5x7 точек,
«1» – матрица 5х10 точек

3.4.1 Пример программы

Ниже приведен пример программы на языке С


/********************************************************************************
**                           Демо ЖКИ                                          **
**        ЖК-модуль подключен к порту 6 (тип ЖК-модуля LTN111)                 **
**               © Fujitsu Microelectronics Europe GmbH                        **
*********************************************************************************/

/*  Этот программный пример предлагается «as is» и может быть изменён. Fujitsu  */ 
/*   Microelectronics не несёт никакой ответственности за возможные ошибки и    */ 
/*     вероятную несовместимость ни в каких случаях  */
/*                                © Fujitsu Microelectronics Europe GmbH        */

#include <sample\extn\mb90675.h>		/* для всех названий регистров*/

/* ------------------------ Переменные-------------------------------------------*/

typedef unsigned char BYTE;	            /* определение BYTE */
int cursor;				/* положение курсора */
int i;					/* переменная общего назначения типа integer */

/*-------------------------Прототипы---------------------------------------------*/

void initdisp (void)

void outb (unsigned char);

void busy (void);

void print (char *Name2);

void printnum (int n);

void wait (int i);

/*-------------------------------------------------------------------------------*/
/*                          ОСНОВНАЯ ПРОГРАММА                                   */
/*-------------------------------------------------------------------------------*/

void main(void)
{
   initdisp ();                       /* инициализация дисплея на порту 6*/
   print (“Hello World!”);                       /* показать сообщение на экране*/
   wait (10000);                                    /* пауза*/
   for (i-1;i<1000;i++)                         /* счёт до 1000 */
     {
       print (“i=”);
       printnum (i);                                 /* вывести номер на экран */
       wait (5000);
      }
 }
/* ------------------------Функции-----------------------------------------------*/

void initdisp(void)             /* эта подпрограмма инициализирует ЖКИ на порту 6*/

 { 
     DDR6=0x0DF;                /* направление порта – вывод (P65 не используется) */
     PDR6=0;                    /* порт 6 отключен */
     PDR6=0x013;                /* начало инициализации*/
     PDR6=0x003;

         wait(1000);

     PDR6=0x013;
     PDR6=0x03;

         wait(1000);

     PDR6=0x013;
     PDR6=0x03;

         wait(1000);

     PDR6=0x012;
     PDR6=0x02;
     outb (0x028);                           /* переключиться в 4-битный режим*/
     outb (0x0C);                            /* выключить курсор */
     outb (0x06);                            /* нет сдвига*/
     outb (0x03);                            /* возврат курсора*/
     outb (0x01);                            /* очистка экрана*/
}

/*-----------------------------------------------------------------------------------*/

void outb (unsigned char a)                   /* отправить байт в ЖК-модуль*/

{
    BYTE b;
    cursor++;
    if (cursor == 9) 
     {
       PDR6=0x01C;                             /* Только при использовании LNT111! */
       PDR6=0x00C;
       PDR6=0x010;
       PDR6=0;
       busy () ;
      }

     b= (a & 0x0F0);                              /*переместить  старшую тетраду*/
     b = b >> 4;                                     /* в младшую тетраду*/
     if (a & 0x080)                                /* кроме бита 7 */
             {b=(b | 0x080);};
     b= (b & 135);                                 /* остальные биты обнулить */
     b= (b | 16);                                   /* линию Е установить в «1» */
     PDR6=b;                                       /* отправить в ЖК модуль*/
     b= (b & 135);                                /* линию Е установить в «0» */
     PDR6=b;                       /* отправить в ЖК модуль*/
     b= (a & 143);                 /* берём младшую тетраду */
     b= (b | 16);                  /* линию Е установить в «1» */
     PDR6=b;                       /* отправить в ЖК модуль*/
     b= (b & 143);                 /* линию Е установить в «0» */
     PDR6=b;                       /* отправить в ЖК модуль*/
     busy ();                      /* ждём освобождения ЖК*/
}

/*-----------------------------------------------------------------------------------*/


void busy(void)	                   /* процедура проверки линии Busy */
  
 {
       BYTE b;

       PDR6=0;                     /* Отключить порт 6 перед чтением! */

       b=1;

       while (b)                   /* ждём освобождения линии Busy */

         {
            DDR6 = 0x0D0;          /* переключить шину на ввод для чтения бита 3 (Busy) */
            PDR6 = 0x05F;          /* запрос флага Busy */
            b=PDR6_PD63;           /* читаем порт */
            PDR6_PD64 = 0;
            PDR6_PD64 = 1;         /* импульс на линии E */
            PDR6_PD64 = 0;
            PDR6_PD66 = 0;
            DDR6=0x0DF;            /* переключить порт на вывод */
           }
 }

/*----------------------------------------------------------------------------------*/

void print (char *Name2)           /* подпрограмма вывода строки */

 {
    unsigned char c;

    BYTE b;

    int i,l ;

    outb(1);                             /* очистка дисплея */

    l=strlen(Name2);
    cursor =0;

    for (i=0; i<1;i++)                /* поочерёдный вывод */
         {
           c=(Name2(i));                 /* берём символ */
           b=(c  | 128);
           outb(b);                      /* и отображаем его */
          }
 }
/*-----------------------------------------------------------------------------------*/
void printnum(int n)                     /* отображает целочисленное значение на ЖКИ */

 { 
     float x;

     int l;

     if (n<10)                           /* если цифра одна */

       {
          outb(0x0b0);
          outb(0x0b0);
          outb((n+48) | 128);
       }

     elseif (n >=10 && n<100)             /* если цифры две */

       {
          outb(0x0b0);
          outb((n/10)+48 | 128);
          x = n-(10*(n/10));
          l=x;
          outb((l+48) | 128);
       }

     elseif (n >=100)                           /* выводим 3 цифры */

       {
          outb(((n/100)+48) | 128);
          x = n-(100*(n/100));
          n=x;
          outb(((n/10)+48) | 128);
          x = n-(10*(n/10));
          l=x;
          outb((l+48) | 128);

       }
 
}

/*-----------------------------------------------------------------------------------*/

void wait(int i)

 {
     for (; i ; i--);                                /* простейший цикл задержки */
 }

/*-----------------------------------------------------------------------------------*/

4. Заключение

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

Оптимальный метод управления ЖК-дисплеем сильно зависит от задачи.

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

Для промышленных и автомобильных применений, где имеет большое значение время эксплуатации и температурные воздействия необходимо применять специализированный ЖК-контроллер. Микроконтроллер с встроенным контроллером ЖКИ позволяет снизить затраты за счёт отсутствия внешних компонентов. В случае необходимости управления большим количеством сегментов требуется внешний контроллер ЖКИ.

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

5. Приложение

В этом разделе рассматриваются наиболее частые вопросы

5.1 Вопросы и Ответы о дискретном контроллере на базе портов ВВ

В: Можно ли подключить матричный ЖКИ к порту ВВ моего МК Fujitsu?

О: Да, но Fujitsu не рекомендует подключать матричные ЖКИ к порту ВВ. Мы предлагаем МК с встроенным контроллером ЖКИ.

В: Почему Fujitsu не рекомендует подключать матричные ЖКИ к порту ВВ?

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

  • Драйвером сегментов
        Использование портов ВВ требует внешнего резистивного делителя, который является температурно-зависимым.
  • Контролем длительности
        Использование портов ВВ требует повышенной производительности и особенно - высокого приоритета. Например, обработка сообщений CAN будет выполняться с меньшим приоритетом для того, чтобы обеспечить длительности для ЖК.
Кроме требуемого объёма ОЗУ и ПЗУ, ещё одним недостатком является задействование как минимум одного системного таймера и частая обработка прерываний.
Чем больше сегментов требуется контролировать, тем сложнее становится ПО и требуется больше аппаратной «обвязки», что ведёт к увеличению стоимости.
Таким образом, для большого количества сегментов использование «ЖК на порту» не имеет никакого смысла.
Такое решение может быть приемлемо только для контроля индикаторов с малым числом символов с обязательной оговоркой о времени наработки, как было показано выше.
Из-за сложности временного контроля сегментов ЖКИ, связанного с необходимостью снижения постоянной составляющей, практически невозможно предложить готовое решение для «ЖК на порту».
Всегда следует рассматривать программно-аппаратный комплекс в целом, чтобы удостовериться, что «ЖК на порту» можно сделать задачей с самым высоким приоритетом и это не нарушит работу других систем и приложений (таких, как CAN, АЦП, операционные системы, например OSEK и т.д.).

В: Почему другие фирмы предлагают использовать «ЖК на порту»?

О: Они это делают таким же образом, как и мы, но иногда с демонстрационными примерами программ. Если вы внимательно прочитаете их Application Notes, то увидите те же предупреждения.

В: Почему Fujitsu не предлагает пример программы?

О: Fujitsu не хочет вводить пользователей в заблуждение. Управление «ЖК на порту» возможно в некоторых случаях, но этот вопрос должен решаться индивидуально в каждом случае с внимательным рассмотрением как программистом, так и схемотехником.

Любой пример программы подразумевает простоту и безопасность, чего мы в данном случае не можем обеспечить.

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

Заключение

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

Но программный и аппаратный оверхед, так же, как и риск долговременных последствий в плане качества и времени наработки высоки.

Наилучшее и наиболее профессиональное решение всегда обеспечивается микроконтроллером с встроенным драйвером ЖКИ.

Управление ЖКИ в демонстрационных целях – одно
Управление ЖКИ в реальном устройстве – другое






 
Впервые? | Реклама на сайте | О проекте | Карта портала
тел. редакции: +7 (495) 514 4110. e-mail:info@eust.ru
©1998-2016 ООО Рынок Микроэлектроники