Ваш браузер устарел. Рекомендуем обновить его до последней версии.

EEVblog

Видеоблог об  электронике


 SDRRobots

Робототехника


 Roobots in USSR

Роботы в СССР

Дисплей Nokia 1202 и подобные, библиотека Си.

Опубликовано 16.10.2015

Здесь попробую соединить  несколько статей с сайта digitalchip.ru, по работе с дисплеями от телефонов Nokia на контроллере PCF8814. Единственная библиотека которая запустилась сразу! Поехали:

Описание функций графической библиотеки для LCD-экрана от Nokia 1100

void nlcd_Init(void);
Инициализация контроллера PCF8814, очистка экрана, инициализация библиотеки.

void nlcd_Clear(void);
Очистка экрана. Очищает экран (и видеобуфер) и устанавливает текущие координаты в нулевые координаты (левый верхний угол).

void nlcd_SendByte(char mode,unsigned char c);
Отправляет байт в контроллер PCF8814. Если передаются данные, то они также сохраняются в видеобуфере.
Параметры:
mode:
— CMD_LCD_MODE — передается команда контроллеру
— DATA_LCD_MODE — передаются данные
с: передаваемый байт

void nlcd_Putc(unsigned char c);
Выводит знак с кодом C в текущее место

void nlcd_Print(char * message);
Выводит строку символов из оперативной памяти, начиная с текущего знакоместа.

void nlcd_PrintF(unsigned char * message);
Выводит строку символов из программной памяти, начиная с текущего знакоместа.

void nlcd_GotoXY(char x,char y);
Устанавливает текущие координаты. Отсчет идет в знакоместах 5×8.
Параметры:
x: 0..15 — координата по оси X
y: 0..7 — координата по оси Y

void nlcd_Inverse(unsigned char mode);
Устанавливает режим инверсии для всего экрана.
Параметры:
mode:
— INV_MODE_ON — инверсия включена
— INV_MODE_OFF — инверсия выключена

void nlcd_Pixel (unsigned char x,unsigned char y, unsigned char pixel_mode);
Выводит пиксель в указанные координаты.
Параметры:
x: 0..95 — координата по оси X
y: 0..64 — координата по оси Y
Отсчет ведется от верхнего левого угла.
pixel_mode:
— PIXEL_ON — пиксель устанавливается
— PIXEL_OFF — пиксель сбрасывается (стирается)
— PIXEL_INV — пиксель инвертируется

void nlcd_Line (unsigned char x1,unsigned char y1, unsigned char x2,unsigned char y2, unsigned char pixel_mode);
Рисует линию. Линия рисуется из точки с координатами x1, y1 в точку с координатами x2,y2.
Параметры:
x1, x2: 0..95
y1,y2: 0..64
pixel_mode: такой же как и в функции nlcd_Pixel.

void nlcd_Circle(unsigned char x, unsigned char y, unsigned char radius, unsigned char fill, unsigned char pixel_mode);
Рисует закрашенную или нет окружность с координатами центра x, y и радиусом radius.
Параметры:
x: 0..95
y: 0..64
fill:
— FILL_ON — заливка выполняется
— FILL_OFF — заливка не выполняется
pixel_mode: такой же как и в функции nlcd_Pixel.

void nlcd_Rect (unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned char fill, unsigned char pixel_mode);
Рисует прямоугольник. Пары значений x1, y1 и x2, y2 задают координаты противоположных углов по диагонали. Прямоугольник может иметь заливку.
Параметры:
x1, x2: 0..95
y1, y2: 0..64
fill: такой же как и в функции nlcd_Circle
pixel_mode: такой же как и в функции nlcd_Pixel.

 

Работаем с дисплеем от Nokia 1100 в графическом режиме

Во второй части поста про подключение дисплея от Nokia 1100 была приведена небольшая библиотека по работе с этим экраном в текстовом режиме. После того, как  я опубликовал пост, возникла небольшая переписка с пользователем под ником -Валера-. Он просил помочь реализовать графический вывод на экран от Nokia1100. После некоторого размышления над этим, я приступил к написанию второй версии библиотеки для работы с дисплеем Nokia 1100 в графическом режиме. И вот результат моей работы.

Первая версия библиотеки работала только в текстовом режиме. Вторая версия библиотеки по функционалу частично повторяет библиотеку версии 1, но она имеет и кардинальное отличие. В этой версии библиотеки используется видеобуфер в оперативной памяти. Без этого буфера реализовать работу с графикой не представляется возможным, так как дисплей от Nokia 1100 позволяет только записывать данные в память контроллера экрана PCF8814, считать данные из него невозможно, хотя контроллер PCF8814 это и позволяет. Чем руководствовались разработчики этого экрана непонятно, какие задачи стояли неизвестно, но что имеем, то имеем.

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

Буфер организован как массив размерностью 96×8 значений unsigned char. То есть массив соответствует организации видеопамяти в контроллере экрана PCF8814 — 8 банков по 96 байт (столбец из 8 пикселей)  в каждом. Т.е. по горизонтали отсчет идет в пикселях, а по вертикали в блоках по 8 пикселей.

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

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

Для демонстрации работы с библиотекой я написал небольшой тестовый проект. Быдлокод, но для демонстрации библиотеки пойдет. Все линейно и крутится в бесконечном цикле. Вот код:

 #include <avr/io.h>
#include <util/delay.h>
#include <avr/pgmspace.h>

#include "nokia1100_lcd_lib.h"    // Подключаем драйвер LCD-контроллера NOKIA1100

char Text[] PROGMEM = "GRAPH DEMO INIT";

int main(void)
{

    nlcd_Init();
    _delay_ms(100);

  while(1)
  {
    nlcd_GotoXY(1,4);
    nlcd_PrintF(Text); // Выводим строку из программной памяти

    _delay_ms(4000);

    nlcd_GotoXY(0,0);

    nlcd_PrintF(PSTR(" GRAPH MODE DEMO")); // Другой способ задания строк в программной памяти
    nlcd_PrintF(PSTR("----------------"));
    nlcd_PrintF(PSTR(" DigitalChip.ru "));
    nlcd_PrintF(PSTR("    present     "));
    nlcd_PrintF(PSTR(" NOKIA 1100 LCD "));
    nlcd_PrintF(PSTR("  demonstration "));
    nlcd_PrintF(PSTR("----------------"));

    _delay_ms(8000);
//
    nlcd_GotoXY(2,7);
    nlcd_PrintF(PSTR("Clear screen"));
    _delay_ms(4000);
    nlcd_Clear();
//
    nlcd_GotoXY(1,7);
    nlcd_PrintF(PSTR("Pixel function"));

    for (unsigned char i = 0; i<96; i++)
    {
        for (unsigned char j = 0; j<57; j++)
        {
            nlcd_Pixel(i,j,PIXEL_ON);
            j++;
        }
        i++;
    }
    _delay_ms(4000);
//
    nlcd_Clear();
    nlcd_GotoXY(0,7);
    nlcd_PrintF(PSTR("Line function   "));

    nlcd_Line (3,4,90,41, PIXEL_ON);
    nlcd_Line (95,0,30,55, PIXEL_ON);
    nlcd_Line (20,20,70,60, PIXEL_ON);

    _delay_ms(4000);

//
    nlcd_Clear();
    nlcd_GotoXY(0,7);
    nlcd_PrintF(PSTR("Circle function "));

    nlcd_Circle(50,30,20, FILL_OFF, PIXEL_ON);
    _delay_ms(4000);

//
    nlcd_GotoXY(0,7);
    nlcd_PrintF(PSTR("Fill circle     "));

    nlcd_Circle(40,25,15, FILL_ON, PIXEL_ON);
    _delay_ms(4000);
//
    nlcd_GotoXY(0,7);
    nlcd_PrintF(PSTR("Fill rectangle  "));

    nlcd_Rect (10,10,55,38,FILL_ON, PIXEL_ON);
    _delay_ms(4000);

//
    nlcd_GotoXY(0,7);
    nlcd_PrintF(PSTR("Rectangle invers"));

    nlcd_Rect (20,20,45,34,FILL_OFF, PIXEL_INV);
    _delay_ms(4000);

//
    nlcd_GotoXY(0,7);
    nlcd_PrintF(PSTR("Pixel inversion "));

    for (unsigned char i = 0; i<96; i++)
    {
        for (unsigned char j = 0; j<57; j++)
        {
            nlcd_Pixel(i,j,PIXEL_INV);
            j++;
        }
        i++; i++;
    }
    _delay_ms(4000);
//

    nlcd_Clear();

    nlcd_PrintF(PSTR(" GRAPH MODE DEMO"));
    nlcd_PrintF(PSTR("----------------"));
    nlcd_PrintF(PSTR("   End of demo  "));
    nlcd_PrintF(PSTR("                "));
    nlcd_PrintF(PSTR("   see more on  "));
    nlcd_PrintF(PSTR(" digitalchip.ru "));
    nlcd_PrintF(PSTR("----------------"));

    _delay_ms(8000);

    nlcd_Clear();
   }
}

Видео работы:

http://www.youtube.com/watch?v=D0WH5-dHeRU

Ну вот, собственно, и все. Какую версию библиотеки использовать — решать вам. Если вы работаете только с текстом (меню там всякие, сообщения и т.д.), то целесообразно применять версию 1. Она занимает меньше места, компактная и не использует ОЗУ для хранения буферов. Самое то для ограниченных в ресурсах микроконтроллеров.

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

 

Подключение дисплеев Nokia 1110/1110i/1200/1202/1203/1112/1116/2660/2760/6085

Самый активный читатель и комментатор на сайте Валерий Гончаренко сделал мне приятный подарок — прислал несколько дисплеев от Nokia (я об этом еще напишу, все времени не хватает). Но он также любезно подготовил статью, в которой поделился практическим опытом подключения целого ряда экранов от мобильных телефонов Nokia к микроконтроллерам. В конце статьи приведены платы переходников для подключения к микроконтроллерам в формате Sprint Layout 5. Валера, большое спасибо за статью. Итак:

После продолжительных тестов разных дисплеев Nokia с библиотекой, уважаемого Chiper-а была наработана небольшая практическая база с которой хотелось бы поделиться. Начну из далека. Где-то с год меня терзало смутное желание  приобрести термопинцет для возможности демонтажа SMD элементов с убитой техники.

 

Термопинцет для демонтажа

Термопинцет для демонтажа

 

Но цена на него показалась завышенной и недавно посетив магазин , я увидел что она еще и выросла. Терпению пришел конец и я решил сделать его сам!

 

Для этого понадобилось: два паяльника по 25 Вт, кусочек фанеры толщиной 20 мм, немного термоусадочной трубки, дрель, сверло Ø10 мм, два часа времени и конечно пара прямых рук растущих из нужного места! Прямые затраты – два паяльника и термоусадка = 240 р. Конструкция до безобразия проста: две заготовки — это наши будущие ручки в них сверлим сквозные отверстия для наших паяльников, винт чтобы все собрать и кусочек пружинящей стальной полоски- для возврата в исходное положение, одеваем ручки в термоусадку и … Вуаля !

 

Самодельный термопинцет

Самодельный термопинцет

 

На самом деле возможности его применения очень широки – демонтаж smd (и не только) резисторов, конденсаторов (включая электролиты), транзисторов, микросхем.

 

Теперь плавно переходим к дисплеям. Вопрос — как соединить LCD Nokia 1110iс печатной платой? Естественно через разъем, который мы найдем либо на убитом телефоне, или придется его снять с шлейфа. Наш вариант – второй, а вот — как это происходит с помощью термопинцета в одно касание.

 

Демонтаж с помощью термопинцета

Демонтаж с помощью термопинцета

 

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

 

Дисплей Nokia 1110i/1112/1200/1116 – напряжение подсветки 3,3 в через резистор 100 Ом

 

Lcd Nokia 1110i/1112/1116/1200

Lcd Nokia 1110i/1112/1116/1200

 

Дисплей Nokia 1110 – инверсный с зеркальным разворотом по горизонтали, подсветка – 5 в через резистор 100 Ом, имеет очень высокую контрастность.

 

Lcd Nokia 1110

Lcd Nokia 1110

 

Дисплей Nokia 1202/1203/1280 – изображение немного сжато по вертикали, подсветка 3,3 в через резистор 100 Ом

 

Lcd Nokia 1202/1203/1280

Lcd Nokia 1202/1203/1280

 

Дисплей Nokia 2660/2760/6085 – самый маленький 24х24 мм, аналогичен 1110 , напряжение питания подсветки – 7,2…8,0 в через резистор 100 Ом, подсветка синего цвета

 

Lcd Nokia 2660/2760/6085

Lcd Nokia 2660/2760/6085

 

Обращаю внимание, что по быстродействию 1110i/1112/1116 – тормозные: не удается установить задержку менее 130 us, у оригинальных 1110i – с быстродействием порядок. Все остальные дисплеи в тестах показали высокую скорость _delay_us(1);

 

Примечание от Chiper:  Валерий имеет ввиду работу с библиотекой вывода для lcd nokia, которая обсуждалась здесь.

 

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

 

Все рассмотренные дисплеи монохромные и имеют разрешение 96х68, напряжение питания тестируемых образцов – 3,3 в , но я бы рекомендовал при возможности снизить его до 2,8 в ( в экспериментах погибло 2 дисплея).

 

Примечание от Chiper: Экран от Nokia 1100 имеет разрешение 96×65 пикселов.

 

Цоколевка всех рассмотренных дисплеев – одинаковая (у 1202/1203/1280 – своя). Схема подключения к микроконтроллеру очень проста и не прилагается, так как все понятно из печатных плат.

 

Подведем итоги

 

Первое место: 1202/1203/1280
Плюсы: быстрый, питание и подсветка – 3,3 в, распайка шлейфа сразу на плату.
Минусы: нет.

 

Второе место: 1110
Плюсы: быстрый, питание и подсветка – 3,3 в, очень высокий контраст изображения.
Минусы: требуется разъем подключения .

 

Третье место: 1110i/1112/1116
Быстродействие – необходимо тестировать конкретный экземпляр, некоторые экземпляры -доработка подсветки, питание и подсветка – 3,3 в.

 

Четвертое место: 2660/2760/6085
Плюсы: быстрый.
Минусы: питание подсветки от 7,2 в и мягко говоря она очень насыщенная.

Обновление библиотеки вывода для дисплеев Nokia

Так как библиотеки разделены на два варианта, то имеет смысл рассказать об этом. Разделение на два варианта было сделано с целью экономии ресурсов там, где нам не нужны расширенные функции. В общем случае нумерация библиотек складывается следующим образом: номер варианта.номер версии.

Варианты и версии библиотеки

Текстовый вариант библиотеки имеет нумерацию 1.x и содержит только функции вывода на экран текстовой информации. Занимает в памяти программ минимум места и не создает никаких буферов в оперативной памяти. Содержит только функции вывода текста на экран. Рекомендуется для микроконтроллеров AVR с минимумом системных ресурсов (программной и оперативной памяти).

Второй вариант библиотеки — графический. Имеет нумерацию 2.x и содержит весь набор функций текстового варианта с добавлением функций для работы с графикой. В отличии от текстового варианта занимает намного больше памяти, как программной, так и оперативной. В оперативной памяти создается видеобуфер, содержащий копию того, что выведено на экран, так как дисплеи от Nokia позволяют только записывать данные в контроллер дисплея (хотя сам контроллер позволяет как записывать, так и читать данные). Буфер занимает в памяти 864 байта, плюс еще несколько переменных. Соответственно, применять этот вариант библиотеки можно на микроконтроллерах, которые имеют достаточное количество оперативной памяти.

Скорость работы

Основной претензией к работе библиотеки с экранами Nokia, в частности экраном Nokia 1100, было низкое быстродействие. Этот дисплей от Nokia 1100 можно было назвать супертормозным. Библиотека имеет параметр NLCD_MIN_DELAY (задается в файле nokia1100_lcd_lib.h). Это минимальная задержка при передаче байтов данных в контроллер дисплея. Так вот, в первой версии библиотеки (как 1.0, так и в 2.0) этот параметр имел значение 270 микросекунд для дисплея  Nokia 1100! Передача данных в контроллер дисплея была очень медленной. При меньшей задержке вывод на экран не работал. В отличии от 1100 в дисплеях Nokia 1202 можно было (да и сейчас это можно, и даже нужно) установить задержку в 0, после чего вывод на экран происходит мгновенно.

Во второй версии (именно версии, не варианте) библиотеки (1.1 и 2.1) ускорена работа с дисплеем, причем на порядок. Теперь минимальная задержка при передаче данных в контроллер 1100 — 34 микросекунды! Сравните: 270 было, 34 стало  (1202 работает при 0 — рекордсмен по скорости). Теперь вывод на экран стал намного более приемлемым. Реализовано это дополнительным командами инициализации.

Ошибка в видеобуфере

Так как изначально библиотека писалась под единственный имеемый в наличии дисплей Nokia 1100, то в расчетах при написании были допущены ошибки, которые устранены во второй версии библиотеки. Теперь размер буфера вычисляется автоматически по заданным параметрам. Сейчас можно задать параметр разрешения дисплея (файл nokia1100_lcd_lib.h) и использовать библиотеку с дисплеями с разным разрешением экрана, но со сходной системой команд.

Кодировка символов

Раньше вывод символов кириллицы был реализован частично в кодировке CP866. Теперь вывод символов реализован с кодировкой CP1251 (win1251), как более распространенной. Выводятся только символы кириллицы, псевдографика не выводится.Т.е. теперь не нужно подготавливать специальным образом строки для вывода кириллицы. Просто пишем nlcd_Print («Велик и могуч русский язык!»); и все работает корректно.

Про модификацию библиотеки под эту кодировку писал Maxim Grigorov в своем блоге. С точки зрения программиста изменения у него реализованы более грамотно, через функцию lcd_symbol_decode(c), но я сделал без функции, напрямую. Вызов функции занимает некоторое время (минимальное, но все же), а у меня пересчет идет прямо в процедуре вывода символа. Без всяких проверок на корректность данных, незачем тратить время на ерунду, мы не для настольных компьютеров быдлокодим программируем, нам каждый байт дорог :).

Вывод символов двойной ширины

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

Прототип функции:
void nlcd_PrintWide(unsigned char * message);

Используется точно также как и nlcd_Print.

Тест широкого шрифта на экране Nokia 1100

Тест широкого шрифта на экране Nokia 1100

Тест широкого шрифта на экране Nokia 1202

Тест широкого шрифта на экране Nokia 1202

Разрешение экрана

потихоньку унивирсализируемся, ввел пару дефайнов, которые определяют разрешение экрана.

// Разрешение дисплея в пикселях
#define NLCD_X_RES    96        // разрешение по горизонтали
#define NLCD_Y_RES    68        // разрешение по вертикали

Работать с разрешением в функциях стало проще, теперь не надо править всю библиотеку под свой экран, если разрешение отличается от принятого в 1100 (96×65). Выше в примере заданы размеры экрана 1110i и 1202.

Вывод прямоугольника

Исправил ошибку в функции рисования прямоугольника. Проявлялась при рисовании с параметром наложения PIXEL_INV.

Вывод изображений

Ну и как же без вывода картинок. Написал первую версию этой процедуры. Куча ограничений. Практически никаких проверок на корректность данных. Зато работает очень быстро.

Долго сидел и думал, как ее написать. Можно написать при помощи функции nlcd_Pixel, т.е. выводить изображение попиксельно. Можно реализовать практически все проверки на корректность и т.д. Но работать будет очень долго. Это не наш путь.

Альтернатива — запись побайтно непосредственно в память. Работать будет на пределе скорости. Но тут вылезают ограничения на передаваемые данные. Их, конечно, можно обойти, но размер функции вырастет значительно, да и скорость вывода упадет. Поэтому оставил в таком виде: быстрая, но с ограничениями.

Ограничения заключаются в том, что размер картинки по вертикали должен быть кратен 8. По горизонтали — без ограничений (в разумных пределах). Затем, координаты вывода левого верхнего угла картинки по вертикали опять же должны быть кратны 8. По горизонтали — без ограничений. Если функцию вызвать, например, с такими параметрами: nlcd_Pict (10,10,picture);, то картинка picture будет выведена по координатам: по горизонтали 10, во вертикали 8 (левый верхний угол картинки). Т.е. вертикальная координата приводится к значению, кратному 8.

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

Картинки имеют следующий формат:

  • байт 0 — размер по горизонтали в пикселях (без ограничений, но в разумных пределах);
  • байт 1 — размер по горизонтали в пикселях (кратный 8);
  • далее массив данных побайтно (столбец из 8 бит) и построчно. Единица в значении бита говорит о том, что пиксел зажжен (светится).

Для подготовки данных, по подсказке Валерия Гончаренко (thanx), использую программу от Alex_EXE. После получения массива с данными картинки, добавьте в начало массива два байта с размером картинки по горизонтали и по вертикали (ну и размер массива нужно изменить на 2 байта).

Генератор картинок

Генератор картинок

В итоге должно получится что-то типа этого:
PROGMEM static const char nlcd_image[] =
{ 24,24,
0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x60,
0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
0x00, 0xE0, 0x78, 0x1F, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFF,
0x01, 0xFF, 0xFE, 0xFF, 0xDB, 0xDB, 0xDB, 0x00, 0xFF, 0xC0, 0xC0, 0x00,
0x07, 0x07, 0x07, 0x06, 0x07, 0x06, 0x07, 0x07, 0x07, 0x07, 0x06, 0x07,
0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x06, 0x07, 0x07, 0x02, 0x00};

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

Ну и вывод этой картинки выглядит так:
nlcd_Pict(40,8,nlcd_image);

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

Nokia 1100 - картинка 1

Nokia 1100 - картинка 1

Nokia 1100 - картинка 2 - инверсная

Nokia 1100 - картинка 2 - инверсная

Nokia 1202 - картинка 1

Nokia 1202 - картинка 1

Nokia 1202 - картинка 2 - инверсная

Nokia 1202 - картинка 2 - инверсная

Ну и напоследок сравнение, как выглядит картинка на разных дисплеях.

Сравнение отображения экранов Nokia 1100 и 1202

Сравнение отображения экранов Nokia 1100 и 1202

На экране 1202 картинка чуть более контрастная, чем на 1100. Но сам экран чуть меньше, чем 1100. На фотке видно, что вертикальное разрешение у 1202 чуть больше, чем у 1100 (68 против 65).

Скачать вторую версию библиотеки можно на странице с описанием функций, но там надо откорректировать само описание. Сделаю это чуть позже. Наверно, если будет время.

 

Еще по теме:

Графический вариант библиотеки

Оба варианта библиотеки (текстовый и графический)

Генератор символов шрифта для библиотеки

Генератор картинок для библиотеки

 VSM-модели экранов Nokia для Proteus