среда, 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 – это возможность практически произвольного назначения выводов контроллера, к которым будет подключаться дисплей. Пока что аналогичного решения я не видел ни в одной другой библиотеке – везде выполняется привязка к одному порту (поскольку так – проще всего).

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



Комментариев нет:

Отправить комментарий

Ваш комментарий откроется после проверки и подтверждения.
Благодарю за понимание необходимости проверки!