Один из таких отсутствующих символов нам понадобится уже в следующей главе — ни в системном английском шрифте, ни в доработанных разными умельцами вариантах не содержится значка градуса. Чтобы больше ничего не менять в заголовке файла, мы не будем дополнять таблицу, а подставим этот- значок вместо одного из редко используемых символов. Закодированный в этой системе символ градуса будет выглядеть так: 0х00, 0х00, 0x0f, 0x09, 0x0f. Для замены я выбрал знак «\» («обратный слэш»), номер которого в таблице равен 0х5С. Вместо значка градуса в операторе вывода тогда придется указывать либо его код (в среде Arduino IDE это удобнее делать в восьмеричном виде так: «\134»), либо просто двойной «обратный слэш» в соответствии с правилами синтаксиса языка С.
Кроме указанных изменений, в этом шрифте я исправил цифру 0 — вместо перечеркнутого «0» скопировал для символа 0x30 строку для буквы «О» (символ номер 0x4F). Перечеркнутый ноль давно удален из всех шрифтов в пользовательских устройствах, что иногда даже бывает неудобно, — например, когда требуется воспроизвести пароль с цифрами и буквами вперемешку. И только в таблицах шрифтов для подобных индикаторов он по инерции задержался с доисторических времен господства АЦПУ и алфавитно-цифровых терминалов, но в современном антураже выглядит довольно дико. Обидно, что для строчных дисплеев со встроенными шрифтами, подобных тем, что вы также увидите в следующей главе, этот символ так просто исправить не удастся.
Архив с файлом русифицированного шрифта под именем SystemFont5x7R.h вы можете скачать с сайта автора ( 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 //подключим библиотеку
#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
Читать дальше
Конец ознакомительного отрывка
Купить книгу