ПредишенСледващото

Наред с другите неща, cp437font8x8 krupnovat за малък екран 128x64 пиксела. Оптималният размер на шрифта за отпечатване на такива спомагателни дисплея остава System5x7. Ние тук се фокусира върху русификацията е шрифтът на системата, въпреки че читателят може по този модел се russify и всякакви други шрифтове (особено ако тя е по-екран).

Какъв е проблемът?

По време на тази трансформация, като всеки символ, както и всяка програма на всеки език за програмиране, тя е пряко под формата на своя код, т.е., с пореден номер в таблицата на шрифта, от който програмата извлича графичен знак на съответния символ. файл openGLCD System5x7.h шрифта библиотека Номерът на знаци, представени от тип променлива font_Char_Count uint8_t на. т.е. не може да надвишава един байт. Ето защо, символи на кирилица са в UTF-8 да бъде на два байта. Те не могат да бъдат прехвърлени към контролера по конвенционален начин.

Предишните опити за решаване

Новите версии на Arduino IDE става все по-трудно. Библиотека решително отказва да разбере двубайтовите герои номера, показване вместо празно място, защото просто промяна на шрифта, там не е достатъчно. Ние трябва да добавите към него функция на преобразуване на двубайтови символи в един байт.

Например, руските писма до капитал замяна низ "F" ще бъдат:


Има 0xA4 - ниско байт писмо кодиране "F" в UTF-8 (виж позоваване по-горе.). В съответствие с това кодиране компилиран System5x7R.h нов шрифт файл. По принцип такъв подход в шрифта, можете да използвате всеки кодирането на знаците български и всякакви други глифове, че е угодно вмъкнете в шрифта. Ако само общия размер на не повече от 128 парчета от началото на таблицата, докато символът 0x7f (127 - стандартен ASCII таблицата последната характер), е препоръчително да напусне шрифта непокътнати.

Въпреки това, няколко свободи с таблицата на ASCII Аз в момента са позволени. Факт е, че в оригиналния шрифт System5x7.h степен символ изваден в последния ред на таблицата, като характера 0x80, което вече имаме отнася до кирилицата. За да не се нарушават реда строителство маса кирилица според UTF-8, тази линия хвърлен от файл. степен символ A прикрепен вместо знаци ASCII "

"(Брой 0x7E), който е в шрифта все още не се използва по предназначение. Но това заместване позволява да въведете символ за градус в скица текст директно от клавиатурата под формата на знак "

Схема на свързване MT-12864J



Променлива резистор R1 е свързан в съответствие с препоръките на производителя. и резистор R2 служи за ограничаване на тока осветлението, когато не е свързан с напрежение 5V и директно към източника на мощност (продукция Vin Arduino) с по-високо напрежение.

Пример показване на MT-12864J български смесен с латиница и цифри и икона градуса е показано на снимката:


Текстът на скица за този пример:

Текстът на скица с оттеглянето на българската азбука


Тъй като файлове и печат outstr.h System5x7R.h функция поставен в основната директория на модернизирана библиотека, а след това те трябва да се поставят някои връзки в началото на скицата с помощта на директивата за #include. За английските надписи удобно продължите да използвате стандартните функции println / печат. но трябва да укажете в символ «\ н» с нов ред нужда в текста на български език на.

Може би това ще работи, но най-вероятно не. Опитах се да се намали алгоритъм във всеки един, разбира се (виж изх. Arduinec'a в началото на статията). Възниква - Лесно подмяна на реда код елементи. Но никакъв начин той не работи - това се дължи на факта, че оригиналният двубайтовите героите. тип низ Strings аз, честно казано, не се опита, но аз съм сигурен, че ще има един и същ: никой не казва, че String поддържа двубайтови знаци (това със сигурност не се поддържа - има елементи от тип въглен). Защото аз изплю на удоволствията, които са оставили куп време и става с тъп, промяна на героите директно - нека компилаторът разбира себе си. Също така, защото начинът, по който намаляването на работното време все още няма да работи, ще бъде само до намаляване на изходния код.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!