l:href="http://revich.lib.ru/AVR/Rus_Lcd.zip">http://revich.lib.ru/AVR/Rus_Lcd.zip). При его создании использованы наработки пользователя SkyFort с сайта Robocraft.ru, который и проделал основную работу по прорисовке русских символов и переводу их в hex-коды, применяя какой-то хитрый софт. Файлы шрифта можно размещать прямо в папке с библиотекой GLCD (там же, где размещается файл библиотеки glcd.h) или в ее подпапке fonts. В последнем случае в директиве #include к имени файла придется добавлять название каталога (ПО образцу: #include "fonts/SystemFont5x7.h"). В том же архиве имеется файл тестовой программы-примера ProbaJ_CD.ino, который выводит подряд символы русского алфавита и цифр, значок градуса и в нижней строке — наименование дисплея «MT-12864J»:

#include <glcd.h> //подключим библиотеку

#include "SystemFont5x7R.h" //файл шрифта

void setup () {

GLCD.Init(); //инициализация

GLCD. ClearScreen ();

}

void loop ()

{

GLCD.SelectFont(System5x7); //выбираем шрифт

GLCD.CursorToXY(0,0); //установим курсор в начальную позицию

GLCD. println ("АБВГДЕЖЗИЙКЛМНОП");

GLCD.println("PCTyOXU41imbbIb3roH");

GLCD.println ("абвгдежзийклмноп");

GLCD.println("рстуфхцчшщъыьэюя");

GLCD.println("1234567890");

GLCD.CursorToXY(19*6,4*8); //установим курсор в предпоследнюю позицию 5-й строки

GLCD.print(\\С); //градус С

GLCD.CursorToXY(4*6,7*8); //установим курсор в позицию 4 строки 8

GLCD.print("MT-12864J");

}

Из приведенного примера понятно, как обращаться с текстом при выводе. Текстовая зона с данным шрифтом содержит 8 строк по 21-му символу в каждой. При выводе строки длиннее 21 символа, ее конец автоматически перейдет на другую строку. Для принудительного перевода строки используйте функцию GLCD.println ().

Чтобы правильно позиционировать вывод текста, следует иметь в виду, что библиотечная функция cursorToXY() рассчитана на графический экран 128x64 точки. По этой причине при выводе текста указывать положение курсора удобно так, как показано в примере, с учетом того, что символ занимает 6 точек по ширине, а строка — 8 точек по высоте. Поскольку позиции в строке и сами строки нумеруются с нуля, то вывод символа в предпоследнюю (20-ю, т. е. номер 19) позицию пятой (т. е. номер 4) строки предваряем оператором cursorToXY (19*6,4*8).

Обратите внимание, что вывод на такой дисплей всегда должен начинаться с функции установки курсора на определенную позицию — чтобы выводимые символы заменяли старые на том же месте. Иначе в следующем цикле функции loop () строки быстро поползут вверх, не давая разглядеть результата. Результат выполнения тестовой программы приведен на рис. 21.5. Фото сделано при выключенной подсветке — на снимке она была бы практически не видна.

Рис. 21.5. Результат выполнения тестовой программы для дисплея MT-12864J

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату