Библиотека для LCD Nokia 1100

hugoboss317
Offline
Зарегистрирован: 21.03.2013

jeka_tm пишет:

блин делать библиотеки не мое. нужна помощь

а сам массив то где? Не вижу его объявления. LCD_RAM[]

А вот это чему равно LCD_X, LCD_Y ???

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

я этот кусок еще не оформил. до него не дошло

#include <avr/pgmspace.h>

#define pgm     pgm_read_byte

#define LCD_X        96
#define LCD_Y        68
#define LCD_String    9
#define swap(a, b) { int t = a; a = b; b = t; }
#define SetYAddr   0xB0
#define SetXAddr4  0x00
#define SetXAddr3  0x10
#define LCD_D         1
#define LCD_C         0
#define W   94
#define H   66
byte LCD_RAM[LCD_X*LCD_String];

static const char font[] PROGMEM = {
  0x00, 0x00, 0x00, 0x00, 0x00 ,  // 0x20   space
  0x00, 0x00, 0x5f, 0x00, 0x00 ,  // 0x21   !
  0x00, 0x07, 0x00, 0x07, 0x00 ,  // 0x22   "
  0x14, 0x7f, 0x14, 0x7f, 0x14 ,  // 0x23   #
  0x24, 0x2a, 0x7f, 0x2a, 0x12 ,  // 0x24   $
  0x23, 0x13, 0x08, 0x64, 0x62 ,  // 0x25   %
  0x36, 0x49, 0x55, 0x22, 0x50 ,  // 0x26   &
  0x00, 0x05, 0x03, 0x00, 0x00 ,  // 0x27   '
  0x00, 0x1c, 0x22, 0x41, 0x00 ,  // 0x28   (
  0x00, 0x41, 0x22, 0x1c, 0x00 ,  // 0x29   )
  0x14, 0x08, 0x3e, 0x08, 0x14 ,  // 0x2a   *
  0x08, 0x08, 0x3e, 0x08, 0x08 ,  // 0x2b   +
  0x00, 0x50, 0x30, 0x00, 0x00 ,  // 0x2c   ,
  0x08, 0x08, 0x08, 0x08, 0x08 ,  // 0x2d   -
  0x00, 0x60, 0x60, 0x00, 0x00 ,  // 0x2e   .
  0x20, 0x10, 0x08, 0x04, 0x02 ,  // 0x2f   /
  0x3e, 0x51, 0x49, 0x45, 0x3e ,  // 0x30   0
  0x00, 0x42, 0x7f, 0x40, 0x00 ,  // 0x31   1
  0x42, 0x61, 0x51, 0x49, 0x46 ,  // 0x32   2
  0x21, 0x41, 0x45, 0x4b, 0x31 ,  // 0x33   3
  0x18, 0x14, 0x12, 0x7f, 0x10 ,  // 0x34   4
  0x27, 0x45, 0x45, 0x45, 0x39 ,  // 0x35   5
  0x3c, 0x4a, 0x49, 0x49, 0x30 ,  // 0x36   6
  0x01, 0x71, 0x09, 0x05, 0x03 ,  // 0x37   7
  0x36, 0x49, 0x49, 0x49, 0x36 ,  // 0x38   8
  0x06, 0x49, 0x49, 0x29, 0x1e ,  // 0x39   9
  0x00, 0x36, 0x36, 0x00, 0x00 ,  // 0x3a   :
  0x00, 0x56, 0x36, 0x00, 0x00 ,  // 0x3b   ;
  0x08, 0x14, 0x22, 0x41, 0x00 ,  // 0x3c   <
  0x14, 0x14, 0x14, 0x14, 0x14 ,  // 0x3d   =
  0x00, 0x41, 0x22, 0x14, 0x08 ,  // 0x3e   >
  0x02, 0x01, 0x51, 0x09, 0x06 ,  // 0x3f   ?
  0x32, 0x49, 0x79, 0x41, 0x3e ,  // 0x40   @
  0x7e, 0x11, 0x11, 0x11, 0x7e ,  // 0x41   A
  0x7f, 0x49, 0x49, 0x49, 0x36 ,  // 0x42   B
  0x3e, 0x41, 0x41, 0x41, 0x22 ,  // 0x43   C
  0x7f, 0x41, 0x41, 0x22, 0x1c ,  // 0x44   D
  0x7f, 0x49, 0x49, 0x49, 0x41 ,  // 0x45   E
  0x7f, 0x09, 0x09, 0x09, 0x01 ,  // 0x46   F
  0x3e, 0x41, 0x49, 0x49, 0x7a ,  // 0x47   G
  0x7f, 0x08, 0x08, 0x08, 0x7f ,  // 0x48   H
  0x00, 0x41, 0x7f, 0x41, 0x00 ,  // 0x49   I
  0x20, 0x40, 0x41, 0x3f, 0x01 ,  // 0x4a   J
  0x7f, 0x08, 0x14, 0x22, 0x41 ,  // 0x4b   K
  0x7f, 0x40, 0x40, 0x40, 0x40 ,  // 0x4c   L
  0x7f, 0x02, 0x0c, 0x02, 0x7f ,  // 0x4d   M
  0x7f, 0x04, 0x08, 0x10, 0x7f ,  // 0x4e   N
  0x3e, 0x41, 0x41, 0x41, 0x3e ,  // 0x4f   O
  0x7f, 0x09, 0x09, 0x09, 0x06 ,  // 0x50   P
  0x3e, 0x41, 0x51, 0x21, 0x5e ,  // 0x51   Q
  0x7f, 0x09, 0x19, 0x29, 0x46 ,  // 0x52   R
  0x46, 0x49, 0x49, 0x49, 0x31 ,  // 0x53   S
  0x01, 0x01, 0x7f, 0x01, 0x01 ,  // 0x54   T
  0x3f, 0x40, 0x40, 0x40, 0x3f ,  // 0x55   U
  0x1f, 0x20, 0x40, 0x20, 0x1f ,  // 0x56   V
  0x3f, 0x40, 0x38, 0x40, 0x3f ,  // 0x57   W
  0x63, 0x14, 0x08, 0x14, 0x63 ,  // 0x58   X
  0x07, 0x08, 0x70, 0x08, 0x07 ,  // 0x59   Y
  0x61, 0x51, 0x49, 0x45, 0x43 ,  // 0x5a   Z
  0x00, 0x7f, 0x41, 0x41, 0x00 ,  // 0x5b   [
  0x02, 0x04, 0x08, 0x10, 0x20 ,  // 0x5c   backslash 
  0x00, 0x41, 0x41, 0x7f, 0x00 ,  // 0x5d   ]
  0x04, 0x02, 0x01, 0x02, 0x04 ,  // 0x5e   ^
  0x40, 0x40, 0x40, 0x40, 0x40 ,  // 0x5f   _
  0x00, 0x01, 0x02, 0x04, 0x00 ,  // 0x60   `
  0x20, 0x54, 0x54, 0x54, 0x78 ,  // 0x61   a
  0x7f, 0x48, 0x44, 0x44, 0x38 ,  // 0x62   b
  0x38, 0x44, 0x44, 0x44, 0x20 ,  // 0x63   c
  0x38, 0x44, 0x44, 0x48, 0x7f ,  // 0x64   d
  0x38, 0x54, 0x54, 0x54, 0x18 ,  // 0x65   e
  0x08, 0x7e, 0x09, 0x01, 0x02 ,  // 0x66   f
  0x0c, 0x52, 0x52, 0x52, 0x3e ,  // 0x67   g
  0x7f, 0x08, 0x04, 0x04, 0x78 ,  // 0x68   h
  0x00, 0x44, 0x7d, 0x40, 0x00 ,  // 0x69   i
  0x20, 0x40, 0x44, 0x3d, 0x00 ,  // 0x6a   j 
  0x7f, 0x10, 0x28, 0x44, 0x00 ,  // 0x6b   k
  0x00, 0x41, 0x7f, 0x40, 0x00 ,  // 0x6c   l
  0x7c, 0x04, 0x18, 0x04, 0x78 ,  // 0x6d   m
  0x7c, 0x08, 0x04, 0x04, 0x78 ,  // 0x6e   n
  0x38, 0x44, 0x44, 0x44, 0x38 ,  // 0x6f   o
  0x7c, 0x14, 0x14, 0x14, 0x08 ,  // 0x70   p
  0x08, 0x14, 0x14, 0x18, 0x7c ,  // 0x71   q
  0x7c, 0x08, 0x04, 0x04, 0x08 ,  // 0x72   r
  0x48, 0x54, 0x54, 0x54, 0x20 ,  // 0x73   s
  0x04, 0x3f, 0x44, 0x40, 0x20 ,  // 0x74   t
  0x3c, 0x40, 0x40, 0x20, 0x7c ,  // 0x75   u
  0x1c, 0x20, 0x40, 0x20, 0x1c ,  // 0x76   v
  0x3c, 0x40, 0x30, 0x40, 0x3c ,  // 0x77   w
  0x44, 0x28, 0x10, 0x28, 0x44 ,  // 0x78   x
  0x0c, 0x50, 0x50, 0x50, 0x3c ,  // 0x79   y
  0x44, 0x64, 0x54, 0x4c, 0x44 ,  // 0x7a   z
  0x00, 0x08, 0x36, 0x41, 0x00 ,  // 0x7b   {
  0x00, 0x00, 0x7f, 0x00, 0x00 ,  // 0x7c   |
  0x00, 0x41, 0x36, 0x08, 0x00 ,  // 0x7d   }
  0x10, 0x08, 0x08, 0x10, 0x08 ,  // 0x7e   ~
  0x00, 0x00, 0x00, 0x00, 0x00 ,  // 0x7f
  0x7e, 0x11, 0x11, 0x11, 0x7e ,  // 0x80   A  // Русские символы
  0x7f, 0x49, 0x49, 0x49, 0x33 ,  // 0x81   Б
  0x7f, 0x49, 0x49, 0x49, 0x36 ,  // 0x82   В  
  0x7f, 0x01, 0x01, 0x01, 0x03 ,  // 0x83   Г  
  0xe0, 0x51, 0x4f, 0x41, 0xff ,  // 0x84   Д  
  0x7f, 0x49, 0x49, 0x49, 0x41 ,  // 0x85   E  
  0x77, 0x08, 0x7f, 0x08, 0x77 ,  // 0x86   Ж  
  0x41, 0x49, 0x49, 0x49, 0x36 ,  // 0x87   З  
  0x7f, 0x10, 0x08, 0x04, 0x7f ,  // 0x88   И  
  0x7c, 0x21, 0x12, 0x09, 0x7c ,  // 0x89   Й  
  0x7f, 0x08, 0x14, 0x22, 0x41 ,  // 0x8A   K  
  0x20, 0x41, 0x3f, 0x01, 0x7f ,  // 0x8B   Л  
  0x7f, 0x02, 0x0c, 0x02, 0x7f ,  // 0x8C   M  
  0x7f, 0x08, 0x08, 0x08, 0x7f ,  // 0x8D   H  
  0x3e, 0x41, 0x41, 0x41, 0x3e ,  // 0x8E   O  
  0x7f, 0x01, 0x01, 0x01, 0x7f ,  // 0x8F   П  
  0x7f, 0x09, 0x09, 0x09, 0x06 ,  // 0x90   P  
  0x3e, 0x41, 0x41, 0x41, 0x22 ,  // 0x91   C
  0x01, 0x01, 0x7f, 0x01, 0x01 ,  // 0x92   T
  0x47, 0x28, 0x10, 0x08, 0x07 ,  // 0x93   У
  0x1c, 0x22, 0x7f, 0x22, 0x1c ,  // 0x94   Ф
  0x63, 0x14, 0x08, 0x14, 0x63 ,  // 0x95   X
  0x7f, 0x40, 0x40, 0x40, 0xff ,  // 0x96   Ц
  0x07, 0x08, 0x08, 0x08, 0x7f ,  // 0x97   Ч
  0x7f, 0x40, 0x7f, 0x40, 0x7f ,  // 0x98   Ш
  0x7f, 0x40, 0x7f, 0x40, 0xff ,  // 0x99   Щ
  0x01, 0x7f, 0x48, 0x48, 0x30 ,  // 0x9A   Ъ
  0x7f, 0x48, 0x30, 0x00, 0x7f ,  // 0x9B   Ы
  0x00, 0x7f, 0x48, 0x48, 0x30 ,  // 0x9C   Э
  0x22, 0x41, 0x49, 0x49, 0x3e ,  // 0x9D   Ь
  0x7f, 0x08, 0x3e, 0x41, 0x3e ,  // 0x9E   Ю
  0x46, 0x29, 0x19, 0x09, 0x7f ,  // 0x9F   Я
  0x20, 0x54, 0x54, 0x54, 0x78 ,  // 0xA0   a
  0x3c, 0x4a, 0x4a, 0x49, 0x31 ,  // 0xA1   б
  0x7c, 0x54, 0x54, 0x54, 0x28 ,  // 0xA2   в
  0x7c, 0x04, 0x04, 0x04, 0x0c ,  // 0xA3   г
  0xe0, 0x54, 0x4c, 0x44, 0xfc ,  // 0xA4   д
  0x38, 0x54, 0x54, 0x54, 0x18 ,  // 0xA5   e
  0x6c, 0x10, 0x7c, 0x10, 0x6c ,  // 0xA6   ж
  0x44, 0x44, 0x54, 0x54, 0x28 ,  // 0xA7   з
  0x7c, 0x20, 0x10, 0x08, 0x7c ,  // 0xA8   и
  0x7c, 0x41, 0x22, 0x11, 0x7c ,  // 0xA9   й
  0x7c, 0x10, 0x10, 0x28, 0x44 ,  // 0xAA   к
  0x20, 0x44, 0x3c, 0x04, 0x7c ,  // 0xAB   л
  0x7c, 0x08, 0x10, 0x08, 0x7c ,  // 0xAC   м
  0x7c, 0x10, 0x10, 0x10, 0x7c ,  // 0xAD   н
  0x38, 0x44, 0x44, 0x44, 0x38 ,  // 0xAE   o
  0x7c, 0x04, 0x04, 0x04, 0x7c ,  // 0xAF   п
  0x7C, 0x14, 0x14, 0x14, 0x08 ,  // 0xB0   p
  0x38, 0x44, 0x44, 0x44, 0x20 ,  // 0xB1   c
  0x04, 0x04, 0x7c, 0x04, 0x04 ,  // 0xB2   т
  0x0C, 0x50, 0x50, 0x50, 0x3C ,  // 0xB3   у
  0x30, 0x48, 0xfc, 0x48, 0x30 ,  // 0xB4   ф
  0x44, 0x28, 0x10, 0x28, 0x44 ,  // 0xB5   x
  0x7c, 0x40, 0x40, 0x40, 0xfc ,  // 0xB6   ц
  0x0c, 0x10, 0x10, 0x10, 0x7c ,  // 0xB7   ч
  0x7c, 0x40, 0x7c, 0x40, 0x7c ,  // 0xB8   ш
  0x7c, 0x40, 0x7c, 0x40, 0xfc ,  // 0xB9   щ
  0x04, 0x7c, 0x50, 0x50, 0x20 ,  // 0xBA   ъ
  0x7c, 0x50, 0x50, 0x20, 0x7c ,  // 0xBB   ы
  0x7c, 0x50, 0x50, 0x20, 0x00 ,  // 0xBC   ь
  0x28, 0x44, 0x54, 0x54, 0x38 ,  // 0xBD   э
  0x7c, 0x10, 0x38, 0x44, 0x38 ,  // 0xBE   ю
  0x08, 0x54, 0x34, 0x14, 0x7c ,  // 0xBF   я
};


//цифры размером 10х16 пикселей
static const char mass10x16[10][20] PROGMEM ={
  {
    0x7E, 0x3D, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x3D, 0x7E,      // 0 
    0x7F, 0xBE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xBE, 0x7F  }
  ,
  {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFE,      // 1
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFE  }
  ,
  {
    0x00, 0x81, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xBD, 0x7E,      // 2
    0x7F, 0xBE, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0x80, 0x00  }
  ,
  {
    0x00, 0x81, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xBD, 0x7E,      // 3
    0x00, 0x80, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xBE, 0x7F  }
  ,
  {
    0x7E, 0xBC, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xBC, 0x7E,      // 4
    0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x3E, 0x7F  }
  ,
  {
    0x7E, 0xBD, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x81, 0x00,      // 5
    0x00, 0x80, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xBE, 0x7F  }
  ,
  {
    0x7E, 0xBD, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x81, 0x00,      // 6
    0x7F, 0xBE, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xBE, 0x7F  }
  ,
  {
    0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x3D, 0x7E,      // 7
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F  }
  ,
  {
    0x7E, 0xBD, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xBD, 0x7E,      // 8
    0x7F, 0xBE, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xBE, 0x7F  }
  ,
  {
    0x7E, 0xBD, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xBD, 0x7E,      // 9
    0x00, 0x80, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0xBE, 0x7F  }
};

 

hugoboss317
Offline
Зарегистрирован: 21.03.2013

так а в чём проблема то?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ошибки сыпет в которых не получилось разобраться

test:6: error: stray '\' in program
test:3: error: no matching function for call to 'LCD1202::LCD1202(int, int, int)'
C:\Yandexdisk\arduino-1.0.6\libraries\LCD1202/LCD1202.h:7: note: candidates are: LCD1202::LCD1202()
C:\Yandexdisk\arduino-1.0.6\libraries\LCD1202/LCD1202.h:7: note:                 LCD1202::LCD1202(const LCD1202&)
test.ino: In function 'void setup()':
test:6: error: 'class LCD1202' has no member named 'u0421lear'

 

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Судя по скетчу у тебя в папке библиотек находится и та, с которой ты передирал. Премести ту бибу в другое место и разбирайся с классами.

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

jeka_tm пишет:

Собрал из Ваших исходников Хронометра библиотеку для дисплея Nokia1202 с контроллером STE2007.

Накидал примерчик работы с каждой ее функцией и подробно его откоментировал. Библиотека упакована, устанавливать можно стандартно, пакетом zip из меню Arduino IDE или ручками, кому, как удобнее.

Все Ваши плюшки в полном комплекте, есть идеи добавить еще, кое какие вкусности, но пока думаю этого достаточно. 

Памяти правда ест будь здоров! Если скомпилировать пример весь, для UNO, то показывает, что 31% сьел сам скетч и 61% памяти использовано всего. То есть библиотека съедает 30% памяти UNO , а если скомпилировать пустой скетч, оставив только инициализацию и очистку, то среда показывает, что библиотека съела 42% памяти UNO, нужно ей еще заниматься, отимизировать код. Тестируйте.

Жека, еще раз спасибо!

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

тебе спасибо

на самом деле оперативка съедается буфером в основном, а флеш шрифтами. но я, когда не хвататло памяти, просто из шрифтов выкидывал лишние символы и правил drawchar. это сильно экономило память. есть еще старые коды где без буфера и там вывод только текста по строкам, я его и на тиньке запускал

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

посмотрел код. res в принципе необязателен, но он не будет тормозить  отрисовку, так как в sendbyte его нет

и я не знал что необязательно переделывать типы переменных в uint8_t. время только потратил

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Про ресет я знаю, все тестировал, но решил оставить отделным пином, на будущее, вдруг придется им рулить в каком то девайсе. А билиотека эта у меня у самого первая для Arduino, так что могут быть грабли, но пока вроде все работает, хотя еще тестирую.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

эта строка лишняя в либе

int DATA [10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

описание основных функций лучше так, типов

LCD1202(RES, CS, Data, Clock);                              //Определение пинов подключения дисплея
         void Inicialize();                                          //Инициализация дисплея
         void Clear_LCD();                                           //Очистка дисплея
         void Update();                                              //Обновление экрана, загрузка информации на дисплей из буфера
         void drawPixel(x, y, color);                                //Включение пикселя
         void fillScreen(color);                                     //Полная заливка дисплея
         void drawChar(x, y, color, unsigned char c);                //Вывод символа
         void drawString(x, y, color, char *str);                    //Вывод строки
         void drawLine(x0, y0, x1, y1, color);                       //Рисование линии
         void drawFastVLine(x, y, h, color);                         //Рисование вертикальной линии заданного высоты
         void drawFastHLine(x, y, w, color);                         //Рисование горизонтальной линии заданной длины
         void drawRect(x, y, w, h, color);                           //Рисование прямоуголника
         void drawCircle(x0, y0, r, color);                          //Рисование окружности
         void drawRoundRect(x, y, w, h, r, color);                   //Рисование скругленного прямоугольника
         void drawTriangle(x0, y0, x1, y1, x2, byte y2, color);      //Рисование треуголника
         void drawCircleHelper(x0, y0, r, cornername, color);        //Рисование дуги
         void fillCircle(byte x0, y0, r, boolean color);             //Рисование круга
         void fillCircleHelper(x0, y0, r, cornername, delta, color); //Рисование полукруга
         void fillRect(x, y, w, h, color);                           //Рисование закрашенного прямоугольника
         void fillRoundRect(x, y, w, h, r, color);                   //Рисование закрашенного, скругленного прямоугольника
         void fillTriangle(x0, y0, x1, y1, x2, y2, color);           //Рисование закрашенного треугольника
         void drawBitmap(x, y, const char *bitmap, w, h, color);     //Вывод изображения из массива
         void simb16x32(x, y, color, c);                             //Вывод цыфры размером 16x32 пикселя
         void simb10x16(x, y, color, c);                             //Вывод цифры размером 10x16 пикселей

задержки в sendbyte в принципе не нужны. насколько помню без них прекрасно работает. а выводится будет гораздо быстрее

void LCD1202::SendByte(byte mode, byte c){
  dWrite(CS, 0);
  (mode)? dWrite(Data,1) : dWrite(Data,0);
  dWrite(Clock, 1);
  
  for(byte i=0;i<8;i++){
    dWrite(Clock,0);
    (c & 0x80)? dWrite(Data,1) : dWrite(Data,0);
    dWrite(Clock,1);
    c <<= 1;
  }
  
  dWrite(Clock, 0);
}

я добавлял когда искал косяк один в коде для дисплея, но оказался не в ней, а убрать забыл

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

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

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

позже наверно массив 10х16 и 16х32 переделаю. уж больно жирные. можно за счет процессорного времени сократить объем

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Да верно, я функции не трогал, так как проверил все предварительно и убедился в их работоспособности.

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

Описание функций оставил прежним, поясню: я когда начал вкуривать что почем, не совсем ясно было, посмотрев тип переменной, все встает на свои места, например цвет, тип бинарный, сразу ясно, что значения может быть только два и т.д. Пользователь ведь не видит библиотечных файлов, а пример перед глазами. Ну ХЗ, как говорится на вкус и цвет... Это ведь просто коменты, на размер они не влияют.

А вот насчет лишней строки, пока я ее убрал и либу залил вновь на диск с номером версии 1.1. Но как я понял, еще не до конца все вкурил, эта строка, часть преобразования числового значения в аски код цыфры, для его вывода в функцию вывода символа на дисплей. Это нужная функция, ее очень желательно добавить в библиотеку для удобного вывода цифровых значений.

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Примеры переключения с программного на аппаратный спи у меня тоже есть, это в будущем. Я много библиотек попробовал и много перелопатил, везде, что то не работало. Я не спеша эту перебирал, а потом увидел активность в этой теме и решил выложить то, что уже готово. Зачем изобретать велосипед. Дисплейчики эти хорошие, до сих пор в ходу, стоят дешево, работают быстро. Я купил 4 штуки недавно по 65р., адаптеры под них сваял. Очень хорошие дисплеи.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

та лишняя строка была нужна для хронометра для хранения значений и к либе отношения не имеет

вот посмотри как я числовые выводил недавно. костыль конечно, временное решение

float set;
  drawString(27, 7, 1, "Частота");
  if (freq > 10000) {
    set=freq/1000;
    dtostrf(set, 2, 3, freq_Val); 
    drawString(60, 18, 1, "kHz");
    drawString(22, 18, 1, freq_Val);
  }
  else{
    set=freq;
    dtostrf(set, 2, 0, freq_Val); 
    drawString(60, 18, 1, "Hz");
    drawString(25, 18, 1, freq_Val);
  }

по хорошему надо переписать чтобы печатать через print как для дисплея 1602, но пока не знаю как это сделать. смотрел разные либы чтобы разобраться, но пока не понял

самому нравятся эти дисплеи, в свое время по 25 рублей вроде купил 20 штук в профи

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Вот еще чего нашел, тут, проверил, работает:

    char buffer[12];
    uint16_t value16 = i*100;
    uint32_t value32 = 1234567890;

    lcd.drawString(54, 3, 1, "i="); 
    lcd.drawString(67, 3, 1, utoa(value16, buffer, 10)); 
    lcd.drawString(10, 25, 1, ultoa(value32, buffer, 10)); 
    lcd.Update();

Но это для целочисленных значений, float нужно делить по разрядам.

timer_23
Offline
Зарегистрирован: 06.08.2014

hugoboss317, а как в вашей библиотеке очищать дисплей?

hugoboss317
Offline
Зарегистрирован: 21.03.2013

АХтоматически ))

 

timer_23
Offline
Зарегистрирован: 06.08.2014

Это как?

hugoboss317
Offline
Зарегистрирован: 21.03.2013

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

Хотя на самом деле при инициализации экран отчищается вот таким макаром

  for (int i=0; i<(X_RES*8); i++)        // Lcd Clear
  {                                      //
	LcdWrite(LCD_D, 0x0);                //
  }                                      // end clear

но это происходит , как я уже сказал, аХтоматически и , как правило, в дальнейшем в этом нет надобности.

 

Iwan73
Offline
Зарегистрирован: 02.11.2013

 Gres  а как сделать в вашей библиотеке для 1202 функции вывода символа и строки в координатах не пиксельно, а как  в библиотеке у  Jeka_tm  блоками? Делаю менюшку на дисплейчике от 1202,за основу взял проект https://rln.nnov.ru/index.php?ind=reviews&op=entry_view&iden=211# с бибой Jeka_tm все вроде как хорошо,но понравилось как с вашей бибой, собрал все в кучу и зараз все вывел,но у вас установка вывода строк и символов в пикселах и тут у меня не срастается,строки лезут друг на друга. 

Iwan73
Offline
Зарегистрирован: 02.11.2013

А если бы туда еще и от бибы hugoboss317  дополнить выбором шрифта так вообще был бы универсальный инструмент для работы с данным дисплеем.

karl2233
karl2233 аватар
Offline
Зарегистрирован: 05.07.2015

камерады, подскажите , плз, как проверить на Ардуино УНО дисплей 1100? пытаюсь загрузить код с первой страницы(любезно предоставленный jeka_tm, но вылазит ошибка

 Arduino: 1.6.5 (Windows 7), Плата"Arduino Uno"

In file included from D:\Arduino\arduino-1.6.5-r2\hardware\arduino\avr\cores\arduino/Arduino.h:28:0,
                 from D:\Arduino\arduino-1.6.5-r2\libraries\Nokia1100-2\Nokia2.cpp:1:
D:\Arduino\arduino-1.6.5-r2\libraries\Nokia1100-2\NokiaChars.h:7:29: error: variable 'font' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 static unsigned char font[] PROGMEM = {
                             ^
Ошибка компиляции.
 

пытаюсь залить другой код

#include <PCF8814.h> 

PCF8814 Lcd (9,8,7,6); // LCD sets SPI SCLK: 7 pin, SDA: 8 pin, CS: 9 pin. RESET: 6 pin

void setup() { 
  Lcd.Init();
  Lcd.GotoXY(6,2);
  Lcd.Print("Hello");
  Lcd.GotoXY(4,4);
  Lcd.PrintWide("WORLD");
  Lcd.Rect(0,0,95,67,FILL_OFF,PIXEL_ON); 
  Lcd.Circle(48,34,32,FILL_OFF,PIXEL_ON);
}

void loop() {
}


заливается, но на экране пустота

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

так тут же рабочая либа по моим исходникам

http://arduino.ru/forum/programmirovanie/biblioteka-dlya-lcd-nokia-1100?...

проверь ее

karl2233
karl2233 аватар
Offline
Зарегистрирован: 05.07.2015

которая для 1202? вгрузил, соединил  свой 1100 так: LCD1202 lcd(6, 7, 8, 9);  // RST, CS, SDA, SCL

заработало! спасибо!

теперь осталось к проекту на Атмега8 прикрутить.

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

на мегу восьмую тебе нужна либа hugoboss317. для этой оперативки не хватит в меге8

karl2233
karl2233 аватар
Offline
Зарегистрирован: 05.07.2015

да я только индикатор проверил на УНО.

а собираю проект, не на Ардуино, просто на Атмега8. пока завис на стадии запуска и проверки индикатора.

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Тебе ж сказали что на АТ8 оперативки (1кБ) не хватит. Я писал бибу принципиально для оперативы 1 кБ.

karl2233
karl2233 аватар
Offline
Зарегистрирован: 05.07.2015

за библиотеку - спасибо! касательно остального - если прочесть мой пост чуть выше твоего  - станет многое понятно ;)

я только проверил индикатор, в Атмегу 8 я не собираюсь заливать это, там будет совершенно другой проект.

hugoboss317
Offline
Зарегистрирован: 21.03.2013

НУ тогда удачи.

Я видимо не так понял.

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Iwan73 не совсем понял о чем Вы. Автор всех исходников Jeka_tm, я просто собрал их в библиотеку, для более удобного применения. Меню Jeka_tm делал отдельными, подготовленными экранами и переключался между ними. Причём экраны могут состоять одновременно из текста и изображений, их просто нужно правильно разместить. Можете посмотреть исходники его проекта хронографа, там все очень понятно. Именно из этих исходников я и собрал библиотеку.

Iwan73
Offline
Зарегистрирован: 02.11.2013

Jeka_tm отдельное спасибо за то что предоставил людям возможность пользоваться плодами его труда. Но во всем есть свои плюсы и минусы.

MenuOS v0.6-RC1 по ссылке https://rln.nnov.ru/index.php?ind=reviews&op=entry_view&iden=211  адаптирую в своем проекте под дисплейчик 1202,пробовал вариант вывода на дисплей экрана меню с библиотекой от Jeka_tm . 

/* Эта функция обрисовывает экран
В качестве входного параметра - определенная комбинация кнопок. Как хотите. так и выводите как говорится.*/
void dispStaticDraw(byte buttons)//Рисует сепараторы, и кнопки. общая функция для всех модулей.
{
  Lcd.Clear();
  Lcd.HLine(0, 8, 96, PIXEL_ON);//верхний сепаратор
  Lcd.HLine(0, 50, 96, PIXEL_ON);//нижний сепаратор
  //CursorTo(0,0);//ставим курсор
  
  switch (buttons)
  {
  case 0://обычный набор кнопок "< - + >"
  Lcd.GotoXY(0,7);
    Lcd.PrintF(PSTR(" <    -   +   > "));//кнопки
    buttSeparators(4);//Сепараторы между кнопками
    break;
  }
  Lcd.Rect (0, 52, 95, 67, FILL_ON, PIXEL_INV);//подсветка кнопок  
}
//рисуем перемычки в прямоугольнике (разделяем кнопки)
void buttSeparators(byte butt)
{
  for (int i=1;i<butt;i++)
Lcd.VLine (24*i, 52, 16, PIXEL_ON);
}

выводится на дисплей около 3 секунд   ( Lcd.Rect (0, 52, 95, 67, FILL_ON, PIXEL_INV);//подсветка кнопок)

тот же хрен но в другой упаковке (с использованием вашей бибы),соответственно и результат другой,то что надо, раз и все на экране одним махом.

void dispStaticDraw(byte buttons)//Рисует сепараторы, и кнопки. общая функция для всех модулей.
{    
  lcd.drawFastHLine(0, 9, 96, 1);   //Выводим по координатам x, y, горизонтальную линию, длиной 96 пикселей, черным цветом
  lcd.drawFastHLine(0, 55, 96, 1);   //Выводим по координатам x, y, горизонтальную линию, длиной 96 пикселей, черным цветом 
  switch (buttons)
  {
  case 0://обычный набор кнопок "< - + >"
    lcd.drawString(1, 59, 0, " <    -   +   > ");//кнопки
    buttSeparators(4);//Сепараторы между кнопками
    break;
  }
  lcd.fillRect(0,57,96,11,1);//подсветка кнопок  
}
//рисуем перемычки в прямоугольнике (разделяем кнопки)
void buttSeparators(byte butt)
{
  for (int i=1;i<butt;i++)
 lcd.drawFastVLine(24*i, 57, 11, 0);  }  //Выводим по координатам x, y, вертикальную линию, высотой 16 пикселей, черным цветом  
}

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

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ты предлагаешь строки сделать как в 1602 сделать чтобы поменьше координат писать? да можно. но по сути это просто еще одну функцию добавить. ничего сложного

Iwan73
Offline
Зарегистрирован: 02.11.2013

jeka_tm помогите с этой функцией,плииз

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

сейчас времени нет. как появится набросаю

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Iwan73 пишет:

jeka_tm помогите с этой функцией,плииз

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

void setCursor_drawString_1607(byte x, byte y, boolean color, char *str)
{
byte nPos[16]={0,6,12,18,24,30,36,42,48,54,60,66,72,78,84,90};
byte nStr[7]={1,10,20,30,40,50,60};
lcd.drawString(nPos[x], nStr[y], color, *str);
}

В лупе, вызываете функцию:

setCursor_drawString_1607(знакоместо_от_0_до_15, строка_от_0_до_6, цвет_пикселя_черный=1_белый=0, текст);

Как понятно из названия, доступно 16 знакомест в каждой из 7 строк.

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Библиотеку обновил, версия 1.3, старые там же, в папке Old.

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

Новую библиотеку в железе еще не тестировал, нет с собой дисплейчика, позже проверю.

Тестируйте.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

а в чем разница?

+ нашел в описании

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

jeka_tm пишет:

а в чем разница?

Да нет там разницы, человек просил функцию вывода текста, как на 1602, я ее добавил.

Теперь есть еще одна функция, позволяющая выводить строки в формате 1607.

Только в железе я ее еще не попробовал, нет с собой дисплея.

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

Но собственно добаить то не сложно.

hugoboss317
Offline
Зарегистрирован: 21.03.2013

А нельзя было просто 

x *= 6;
y *= 8;

Нахрена эти массивы?

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

тогда 9 или 10, а не 8

hugoboss317
Offline
Зарегистрирован: 21.03.2013

Ну это от самого шрифта зависит и от желания, какое расстояние между символами. Я к тому что это просто делается, без массивов.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да можно. но с массивом быстрее, с умножением возможно меньше по размеру

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Вот в этом вся суть программирования, способов масса, у каждого своё видение решения проблемы! :)
Ну а по сути, все тестировать нужно, для определения оптимального.
Для себя я уже писал, вполне устраивает добавление пробелов в строки, но как говорится на вкус и цвет... :)

hugoboss317
Offline
Зарегистрирован: 21.03.2013

При написании библиотек руководствуюсь принципом - "Всё нужное не сложно, всё сложное не нужно", но на самом деле всегда стараюсь экономить при любом удобном случаи, даже если речь идёт о паре байтов. А в вышепредложеном способе дополнительно занимается не только программная память, но и РАМа да и не такими уж и маленькими массивами, [16] и [7] байт.

 Ну а в общем всё верно, каждый ищет для себя оптимальное решение...

hugoboss317
Offline
Зарегистрирован: 21.03.2013

А вообще если речь идёт об истользовании PCF8814 исключительно как символьного, то нет смысла использовать граффические библиотека. При выведении только символов, их можно печатать когда угодно и сразу (не занося в массив, а потом решать когда выводить сам массив. Так будет сэкономленно пипец как много времени и весь исходник не будет сягивать всё внимание на экранчик и всё время подстраиваться под него.

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

Все верно, полностью согласен. Но тут то вся суть в чем, все это делается исключительно для удобства и для начинающих, для возможности быстро освоиться с материалом. Тот, кому нужна будет скорость и экономия, возьмёт только самое нужное, не используя либы вообще. Изначально есть интерес запустить девайс вообще, а уж потом приходит желание или необходимость оптимизировать код, но в большинстве случаев, для сэбя, и это лишнее. Жаться начинаешь для экономии, для использования более дешёвых процов, с меньшими ресурсами, для увеличения быстродействия. Чаще все это актуально для коммерческих проектов.

hugoboss317
Offline
Зарегистрирован: 21.03.2013

По случаю, раз уж наведываюсь всюда, набросал пару шрифтов 16х24 цифры и 12х16 полный, включая русские вимволы, возможно кому полезными окажутся. 

  

Кстати русский который я рисовал для цветного A_70 с совсем другим алгаритмом вывода символов но вот в этой программе 

LCD Image Converter

есть несколько агаритмов и можно написать свой, что я и сделал, сэкономив кучу времени.

Короче вот сайт программы http://www.riuson.com/lcd-image-converter

вот алгоритм и некоторые настройки чтоб долго не разбираться

//алгоритм создания шрифта для LCD PCF8812, PCF8814
//*****Настройки***Преобразование

//установить "свой алгоритм"
for (var z = 0; z < image.height/8; z++){
  for (var x = 0; x < image.width; x++) {
    for (var y = 7; y > -1; y--) {
        image.addPoint(x, y+(8*z));
    }
  }
}

//Тип: Монохромноо
//установить "Инвертировать"
//Основное сканирование: Слева направо
//Сканирование линий: Прямое

// Открыть предпросмотр...

Шрифт 16х24

#ifndef font_16x24_H
#define font_16x24_H

//*************************//шрифт 16х24 в програмной памяти***************** 
static prog_uint8_t font_16x24[] PROGMEM= 
{
	0x07, // 7  - кол-во байт параметров
	0x18, // 24 - разрядность
	0x10, // 16 - ширина
	0x18, // 24 - высота 
	0x01, // 01 - идентификатор
	0x2e, // 46 - первый чар ))
	0x3a, // 58 - последний чар
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
   0x70, 0xf8, 0xd8, 0xf8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // .
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf0, 0xfe, 0x7e, 0x0e, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xfc, 0x7f, 0x1f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 
   0x00, 0x00, 0x00, 0xe0, 0xfc, 0xff, 0x1f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // /	  
  0x00, 0xe0, 0xf0, 0xf8, 0x3c, 0x1e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x1e, 0x3c, 0xf8, 0xf0, 0xe0,
   0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 
   0x00, 0x0f, 0x1f, 0x3f, 0x78, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0x78, 0x3f, 0x1f, 0x0f,  // 0
  0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0x78, 0xfc, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x03, 0x03, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,  // 1
  0x00, 0x70, 0x78, 0x7c, 0x3e, 0x1e, 0x0e, 0x0e, 0x0e, 0x0e, 0x1e, 0x3e, 0x7c, 0xf8, 0xf0, 0xe0,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0x78, 0x3c, 0x1f, 0x0f, 0x07, 
   0x00, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xef, 0xe7, 0xe3, 0xe1, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,  // 2
  0x00, 0x30, 0x38, 0x3c, 0x1e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x1e, 0xbc, 0xf8, 0xf0, 0xe0, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c, 0x1e, 0x1f, 0x3f, 0x7b, 0xf1, 0xe0, 0xc0, 
   0x00, 0x0c, 0x1c, 0x3c, 0x78, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0x78, 0x3c, 0x1f, 0x0f, 0x07,  // 3
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0x78, 0xfc, 0xfe, 0xfe, 0x00, 0x00,
   0x00, 0xf0, 0xf8, 0xfc, 0x9e, 0x8f, 0x87, 0x83, 0x81, 0x80, 0x80, 0xff, 0xff, 0xff, 0x80, 0x80, 
   0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff, 0xff, 0x03, 0x03,  // 4 
  0x00, 0x00, 0xfe, 0xfe, 0xfe, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
   0x00, 0x00, 0x3f, 0x3f, 0x1f, 0x0e, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x1e, 0xfc, 0xf8, 0xf0, 
   0x00, 0x38, 0x78, 0x78, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0x78, 0x3c, 0x1f, 0x0f, 0x07,  // 5
  0x00, 0x00, 0xc0, 0xf0, 0xf8, 0x3c, 0x1e, 0x0f, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x1e, 0x1c, 0x18,
   0x00, 0xff, 0xff, 0xff, 0x78, 0x38, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x3c, 0x78, 0xf0, 0xe0, 0xc0, 
   0x00, 0x0f, 0x1f, 0x3f, 0x78, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0x78, 0x3c, 0x1f, 0x0f, 0x07,  // 6
  0x00, 0x00, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0xce, 0xfe, 0xfe, 0x3e, 0x1e,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf0, 0xfc, 0x7f, 0x1f, 0x03, 0x00, 0x00, 0x00, 
   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xfe, 0xff, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // 7
  0x00, 0x00, 0xf0, 0xf8, 0xfc, 0x0e, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0e, 0xfc, 0xf8, 0xf0, 0x00,
   0x00, 0x80, 0xc1, 0xe3, 0x77, 0x3f, 0x1e, 0x1c, 0x1c, 0x1c, 0x1e, 0x3f, 0x77, 0xe3, 0xc1, 0x80, 
   0x00, 0x0f, 0x1f, 0x3f, 0x78, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0x78, 0x3f, 0x1f, 0x0f,  // 8
  0x00, 0xe0, 0xf0, 0xf8, 0x3c, 0x1e, 0x0f, 0x07, 0x07, 0x07, 0x07, 0x0f, 0x1e, 0xfc, 0xf8, 0xf0,
   0x00, 0x03, 0x07, 0x0f, 0x1e, 0x3c, 0x38, 0x38, 0x38, 0x38, 0x38, 0x1c, 0x1e, 0xff, 0xff, 0xff, 
   0x00, 0x18, 0x38, 0x78, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0x78, 0x3c, 0x1f, 0x0f, 0x03, 0x00,  // 9
  0x38, 0x7c, 0x6c, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
   0x0e, 0x1f, 0x1b, 0x1f, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00   // :
};
#endif

шрифт 12х16

#ifndef FONT_12x16_RUS_H
#define FONT_12x16_RUS_H

//*************************//шрифт 12х16 с русскими символами в програмной памяти*****************
static prog_uint8_t font_12x16_rus[] PROGMEM=
{
	0x07, // 7  - кол-во байт параметров
	0x10, // 16 - разрядность
	0x0C, // 12 - ширина
	0x10, // 16 - высота
	0x01, // 01 - идентификатор
	0x20, // 32 - первый чар ))
	0xBF, // 191- последний чар
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  //  spase
    0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  //  !
    0x00, 0x00, 0x00, 0x16, 0x0e, 0x00, 0x00, 0x16, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  //  "
    0x00, 0x60, 0x60, 0xf8, 0xf8, 0x60, 0x60, 0xf8, 0xf8, 0x60, 0x60, 0x00, 0x00, 0x06, 0x06, 0x1f, 0x1f, 0x06, 0x06, 0x1f, 0x1f, 0x06, 0x06, 0x00,  //  #
    0x00, 0xf0, 0xf8, 0x98, 0x98, 0x9e, 0xfe, 0x98, 0x98, 0x98, 0x00, 0x00, 0x00, 0x00, 0x19, 0x19, 0x19, 0x7f, 0x79, 0x19, 0x19, 0x1f, 0x0f, 0x00,  //  $
    0x38, 0x7c, 0x44, 0x7c, 0x38, 0xc0, 0xf0, 0x38, 0x0c, 0x06, 0x02, 0x00, 0x40, 0x60, 0x30, 0x1c, 0x0f, 0x03, 0x1c, 0x3e, 0x22, 0x3e, 0x1c, 0x00,  //  %
    0x00, 0x00, 0x80, 0x80, 0x80, 0xf0, 0xf8, 0x98, 0x98, 0xf8, 0xf0, 0x00, 0x00, 0x3f, 0x7f, 0x61, 0x61, 0x61, 0x23, 0x0f, 0x1d, 0x31, 0x60, 0x00,  //  &
    0x00, 0x00, 0x00, 0x00, 0x16, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  //  '
    0x00, 0x00, 0x00, 0x00, 0xfc, 0xfe, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,  //  (
    0x00, 0x00, 0x00, 0x00, 0x06, 0xfe, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,  //  )
    0x00, 0x00, 0x00, 0x80, 0xa0, 0xc0, 0xc0, 0xa0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00,  //  *
    0x00, 0x80, 0x80, 0x80, 0x80, 0xf0, 0xf0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x0f, 0x0f, 0x01, 0x01, 0x01, 0x01, 0x00,  //  +
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  //  ,
    0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,  //  -
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  //  .
    0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x70, 0x38, 0x0e, 0x06, 0x00, 0x00, 0x60, 0x70, 0x1c, 0x0e, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,  //  /
    0x00, 0xfc, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xfe, 0xfc, 0x00, 0x00, 0x3f, 0x7f, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x3f, 0x00,  //  0
    0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00,  //  1
    0x00, 0x00, 0x0c, 0x8e, 0x86, 0x86, 0x86, 0x86, 0x86, 0xfe, 0xfc, 0x00, 0x00, 0x7e, 0x7f, 0x63, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x60, 0x00,  //  2
    0x00, 0x0c, 0x0e, 0x06, 0x06, 0x86, 0x86, 0x86, 0x86, 0xfe, 0xfc, 0x00, 0x00, 0x30, 0x70, 0x60, 0x60, 0x61, 0x61, 0x61, 0x61, 0x7f, 0x3f, 0x00,  //  3
    0x00, 0x80, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x7f, 0x7f, 0x06, 0x06, 0x00,  //  4
    0x00, 0xfe, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x86, 0x00, 0x00, 0x30, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x3f, 0x00,  //  5
    0x00, 0xfc, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xce, 0x8c, 0x00, 0x00, 0x3f, 0x7f, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x3f, 0x00,  //  6
    0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0xfe, 0xfe, 0x00, 0x00, 0x40, 0x60, 0x70, 0x38, 0x1c, 0x0e, 0x07, 0x03, 0x01, 0x00, 0x00,  //  7
    0x00, 0xfc, 0xfe, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0xfe, 0xfc, 0x00, 0x00, 0x3f, 0x7f, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x7f, 0x3f, 0x00,  //  8
    0x00, 0xfc, 0xfe, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0xfe, 0xfc, 0x00, 0x00, 0x30, 0x71, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x7f, 0x3f, 0x00,  //  9
    0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  //  :
    0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  //  ;
    0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0c, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0e, 0x1c, 0x38, 0x30, 0x20, 0x00, 0x00,  //  <
    0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00,  //  =
    0x00, 0x00, 0x04, 0x0c, 0x1c, 0x38, 0x70, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x20, 0x30, 0x38, 0x1c, 0x0e, 0x07, 0x03, 0x01, 0x00, 0x00,  //  >
    0x00, 0x00, 0x1c, 0x1e, 0x06, 0x86, 0x86, 0x86, 0xfe, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6f, 0x6f, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,  //  ?
    0xfc, 0xfe, 0x06, 0xc6, 0xe6, 0x66, 0x66, 0xe6, 0xe6, 0x06, 0xfe, 0xfc, 0x3f, 0x7f, 0x60, 0x67, 0x67, 0x66, 0x66, 0x67, 0x27, 0x06, 0x07, 0x03,  //  @
    0x00, 0xfc, 0xfe, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0xfe, 0xfc, 0x00, 0x00, 0x7f, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x7f, 0x00,  //  A
    0x00, 0xfe, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xfc, 0x00, 0x00, 0x7f, 0x7f, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x3f, 0x00,  //  B
    0x00, 0xfc, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x3f, 0x7f, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,  //  C
    0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0e, 0xfc, 0xf8, 0x00, 0x00, 0x7f, 0x7f, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x3f, 0x1f, 0x00,  //  D
    0x00, 0xfe, 0xfe, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x06, 0x06, 0x00, 0x00, 0x7f, 0x7f, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x60, 0x60, 0x00,  //  E
    0x00, 0xfe, 0xfe, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x06, 0x06, 0x00, 0x00, 0x7f, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,  //  F
    0x00, 0xf8, 0xfc, 0x0e, 0x06, 0x06, 0x06, 0x86, 0x86, 0x86, 0x86, 0x00, 0x00, 0x1f, 0x3f, 0x70, 0x60, 0x60, 0x60, 0x61, 0x61, 0x7f, 0x3f, 0x00,  //  G
    0x00, 0xfe, 0xfe, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xfe, 0xfe, 0x00, 0x00, 0x7f, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x7f, 0x00,  //  H
    0x00, 0x00, 0x00, 0x00, 0x02, 0xfe, 0xfe, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x7f, 0x7f, 0x40, 0x00, 0x00, 0x00, 0x00,  //  I
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x30, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x3f, 0x00, 0x00,  //  J
    0x00, 0xfe, 0xfe, 0xc0, 0xe0, 0xf0, 0x38, 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x01, 0x03, 0x07, 0x0e, 0x1c, 0x78, 0x70, 0x00,  //  K
    0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,  //  L
    0xfe, 0xfe, 0x3c, 0xf0, 0xc0, 0x00, 0xc0, 0xf0, 0x3c, 0xfe, 0xfe, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x03, 0x0f, 0x03, 0x00, 0x00, 0x7f, 0x7f, 0x00,  //  M
    0x00, 0xfe, 0xfe, 0x70, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0e, 0x7f, 0x7f, 0x00,  //  N
    0x00, 0xf8, 0xfc, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x0e, 0xfc, 0xf8, 0x00, 0x00, 0x1f, 0x3f, 0x70, 0x60, 0x60, 0x60, 0x60, 0x70, 0x3f, 0x1f, 0x00,  //  O
    0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x8e, 0xfc, 0xf8, 0x00, 0x00, 0x7f, 0x7f, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00,  //  P
    0x00, 0xf8, 0xfc, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x0e, 0xfc, 0xf8, 0x00, 0x00, 0x1f, 0x3f, 0x70, 0x60, 0x60, 0x6c, 0x7c, 0x38, 0x7f, 0x6f, 0x00,  //  Q
    0x00, 0xfe, 0xfe, 0x86, 0x86, 0x86, 0x86, 0x86, 0xce, 0xfc, 0x78, 0x00, 0x00, 0x7f, 0x7f, 0x01, 0x03, 0x07, 0x0f, 0x1d, 0x39, 0x70, 0x60, 0x00,  //  R
    0x00, 0xfc, 0xfe, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x8e, 0x0c, 0x00, 0x00, 0x30, 0x71, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x7f, 0x3f, 0x00,  //  S
    0x00, 0x06, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,  //  T
    0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x1f, 0x3f, 0x70, 0x60, 0x60, 0x60, 0x60, 0x70, 0x3f, 0x1f, 0x00,  //  U
    0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x03, 0x0f, 0x1e, 0x38, 0x70, 0x70, 0x38, 0x1e, 0x0f, 0x03, 0x00,  //  V
    0xfe, 0xfe, 0x00, 0x00, 0x80, 0xc0, 0x80, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x7f, 0x7f, 0x3c, 0x0f, 0x03, 0x01, 0x03, 0x0f, 0x3c, 0x7f, 0x7f, 0x00,  //  W
    0x00, 0x1e, 0x3e, 0x70, 0xe0, 0xc0, 0xc0, 0xe0, 0x70, 0x3e, 0x1e, 0x00, 0x00, 0x78, 0x7c, 0x0e, 0x07, 0x03, 0x03, 0x07, 0x0e, 0x7c, 0x78, 0x00,  //  X
    0x00, 0xfe, 0xfe, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x7f, 0x7f, 0x01, 0x01, 0x01, 0x00, 0x00,  //  Y
    0x00, 0x06, 0x06, 0x06, 0x06, 0x86, 0xc6, 0xe6, 0x76, 0x3e, 0x1e, 0x00, 0x00, 0x78, 0x7c, 0x6e, 0x67, 0x63, 0x61, 0x60, 0x60, 0x60, 0x60, 0x00,  //  Z
    0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00,  //  [
    0x00, 0x06, 0x0e, 0x38, 0x70, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0e, 0x1c, 0x70, 0x60, 0x00,  //  \ */
    0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00,  //  ]
    0x00, 0x00, 0x00, 0x78, 0x1c, 0x0e, 0x1c, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  //  ^
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,  //  _
    0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  //  `
    0x00, 0x80, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x3c, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7f, 0x7f, 0x00, 0x00,  //  a
    0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x63, 0x7f, 0x3e, 0x00, 0x00,  //  b
    0x00, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x30, 0x00, 0x00,  //  c
    0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x61, 0x61, 0x61, 0x61, 0x61, 0x7f, 0x7f, 0x00, 0x00,  //  d
    0x00, 0x80, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x76, 0x66, 0x66, 0x66, 0x66, 0x67, 0x63, 0x00, 0x00,  //  e
    0x00, 0x00, 0xe0, 0xf0, 0x30, 0x30, 0x30, 0x30, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,  //  f
    0x00, 0x00, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xcf, 0xcc, 0xcc, 0xcc, 0xff, 0x7f, 0x00, 0x00, 0x00,  //  g
    0x00, 0x00, 0xf0, 0xf0, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x01, 0x01, 0x01, 0x7f, 0x7f, 0x00, 0x00, 0x00,  //  h
    0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,  //  i
    0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,  //  j
    0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x0c, 0x1c, 0x3e, 0x73, 0x61, 0x41, 0x40, 0x00, 0x00,  //  k
    0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,  //  l
    0x00, 0xe0, 0xe0, 0x60, 0x60, 0xe0, 0xe0, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x7f, 0x7f, 0x00,  //  m
    0x00, 0xe0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,  //  n
    0x00, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x3f, 0x00, 0x00,  //  o
    0x00, 0xe0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x07, 0x00, 0x00,  //  p
    0x00, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0xff, 0xff, 0xc0, 0x00, 0x00,  //  q
    0x00, 0x00, 0xe0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  //  r
    0x00, 0x00, 0x00, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x60, 0x60, 0x63, 0x67, 0x66, 0x66, 0x7c, 0x38, 0x00, 0x00, 0x00,  //  s
    0x00, 0x00, 0x80, 0x80, 0xf0, 0xf0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x3f, 0x7f, 0xe1, 0xc1, 0xc1, 0xc0, 0x00, 0x00,  //  t
    0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x3f, 0x00, 0x00,  //  u
    0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x07, 0x0f, 0x1c, 0x38, 0x70, 0x38, 0x1c, 0x0f, 0x07, 0x00, 0x00,  //  v
    0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x1f, 0x3f, 0x70, 0x3c, 0x0f, 0x0f, 0x3c, 0x70, 0x3f, 0x1f, 0x00,  //  w
    0x00, 0x60, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x60, 0x00, 0x00, 0x00, 0x60, 0x70, 0x19, 0x0f, 0x06, 0x0f, 0x19, 0x70, 0x60, 0x00, 0x00,  //  x
    0x00, 0x20, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0x20, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe3, 0x7f, 0x3c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00,  //  y
    0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x60, 0x70, 0x78, 0x7c, 0x6e, 0x67, 0x63, 0x61, 0x60, 0x00, 0x00,  //  z
    0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfe, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3f, 0x7f, 0x60, 0x00, 0x00, 0x00, 0x00,  //  {
    0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,  //  |
    0x00, 0x00, 0x00, 0x00, 0x06, 0xfe, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x7f, 0x3f, 0x01, 0x00, 0x00, 0x00, 0x00,  //  }
    0x00, 0x00, 0x30, 0x18, 0x18, 0x30, 0x60, 0x60, 0x70, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  //  ~
    0x00, 0xfe, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x7f, 0x00, 0x00, 0x00,  //  127
	
	0x00, 0xe0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0xff, 0xff, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x07, 0x00, 0x00,  //  р
	0x00, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0x30, 0x00, 0x00,  //  с
	0x00, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,  //  т
	0x00, 0x20, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0x20, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xe3, 0x7f, 0x3c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00,  //  у
	0x00, 0xc0, 0xe0, 0x60, 0x60, 0xe0, 0xe0, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x07, 0x0f, 0x0c, 0x0c, 0xff, 0xff, 0x0c, 0x0c, 0x0f, 0x07, 0x00,  //  ф
	0x00, 0x60, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x60, 0x00, 0x00, 0x00, 0x60, 0x70, 0x19, 0x0f, 0x06, 0x0f, 0x19, 0x70, 0x60, 0x00, 0x00,  //  х
	0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3f, 0xff, 0xf0, 0x00,  //  ц
	0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x7f, 0x7f, 0x00, 0x00,  //  ч
	0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x7f, 0x7f, 0x60, 0x60, 0x7f, 0x7f, 0x60, 0x60, 0x7f, 0x7f, 0x00,  //  ш
	0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x7f, 0x7f, 0x60, 0x60, 0x7f, 0x7f, 0x60, 0x60, 0x7f, 0xff, 0xc0,  //  щ
	0x00, 0x60, 0x60, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x63, 0x63, 0x63, 0x7f, 0x3e, 0x00, 0x00,  //  ъ
	0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x7f, 0x7f, 0x63, 0x63, 0x63, 0x7f, 0x3e, 0x00, 0x7f, 0x7f, 0x00,  //  ы
	0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x63, 0x7f, 0x3e, 0x00, 0x00,  //  ь
	0x00, 0xc0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x30, 0x60, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7f, 0x3f, 0x00, 0x00,  //  э
	0xe0, 0xe0, 0x00, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x7f, 0x7f, 0x06, 0x3f, 0x7f, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x3f, 0x00,  //  ю
	0x00, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x63, 0x77, 0x1c, 0x0c, 0x0c, 0x0c, 0x0c, 0x7f, 0x7f, 0x00, 0x00,  //  я
	
    0x00, 0xf0, 0xf8, 0x1c, 0x0e, 0x06, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x7f, 0x7f, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x7f, 0x7f, 0x00,  //  А
    0x00, 0xfe, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x86, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x60, 0x60, 0x60, 0x60, 0x60, 0x71, 0x3f, 0x1f, 0x00,  //  Б
    0x00, 0xfe, 0xfe, 0x86, 0x86, 0x86, 0x8e, 0x9c, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x61, 0x61, 0x61, 0x61, 0x61, 0x63, 0x7f, 0x3f, 0x00,  //  В
    0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  //  Г
    0x00, 0xfc, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0xfe, 0xfc, 0x00, 0x00, 0x7c, 0x7f, 0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0f, 0x7f, 0x7c, 0x00,  //  Д
    0x00, 0xfe, 0xfe, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x06, 0x06, 0x00, 0x00, 0x7f, 0x7f, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x60, 0x60, 0x00,  //  Е
    0x06, 0x1e, 0xf8, 0xf0, 0xc0, 0xfe, 0xfe, 0xc0, 0xf0, 0xf8, 0x1e, 0x06, 0x60, 0x7c, 0x1f, 0x03, 0x00, 0x7f, 0x7f, 0x00, 0x03, 0x1f, 0x7c, 0x60,  //  Ж
    0x00, 0x18, 0x1c, 0x0c, 0x0c, 0x8c, 0x8c, 0x8c, 0xdc, 0xf8, 0x70, 0x00, 0x00, 0x30, 0x70, 0x60, 0x60, 0x61, 0x61, 0x61, 0x63, 0x3f, 0x1e, 0x00,  //  З
    0x00, 0xfe, 0xfe, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0xfe, 0xfe, 0x00, 0x00, 0x7f, 0x7f, 0x0e, 0x07, 0x03, 0x01, 0x00, 0x00, 0x7f, 0x7f, 0x00,  //  И
    0x00, 0xfe, 0xfe, 0x00, 0x00, 0x83, 0xc3, 0xe1, 0x70, 0xfe, 0xfe, 0x00, 0x00, 0x7f, 0x7f, 0x0e, 0x07, 0x03, 0x01, 0x00, 0x00, 0x7f, 0x7f, 0x00,  //  Й
    0x00, 0xfe, 0xfe, 0x80, 0xc0, 0xe0, 0xf0, 0xb8, 0x1c, 0x0e, 0x06, 0x00, 0x00, 0x7f, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x7e, 0x7c, 0x00,  //  К
    0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00,  //  Л
    0xfe, 0xfe, 0x1c, 0x38, 0x70, 0xe0, 0x70, 0x38, 0x1c, 0xfe, 0xfe, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00,  //  М
    0x00, 0xfe, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0xfe, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00,  //  Н
    0x00, 0xf8, 0xfc, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x0e, 0xfc, 0xf8, 0x00, 0x00, 0x1f, 0x3f, 0x70, 0x60, 0x60, 0x60, 0x60, 0x70, 0x3f, 0x1f, 0x00,  //  О
    0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00,  //  П
    0x00, 0xfe, 0xfe, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0xfe, 0xfc, 0x00, 0x00, 0x7f, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00,  //  Р
    0x00, 0xf8, 0xfc, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x1c, 0x18, 0x00, 0x00, 0x1f, 0x3f, 0x70, 0x60, 0x60, 0x60, 0x60, 0x70, 0x38, 0x18, 0x00,  //  С
    0x00, 0x06, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,  //  Т
    0x00, 0x3e, 0x7e, 0xe0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0xfe, 0x00, 0x00, 0x18, 0x38, 0x70, 0x60, 0x60, 0x60, 0x60, 0x70, 0x3f, 0x1f, 0x00,  //  У
    0xf8, 0xfc, 0x86, 0x86, 0x86, 0xfe, 0xfe, 0x86, 0x86, 0x86, 0xfc, 0xf8, 0x00, 0x01, 0x01, 0x01, 0x01, 0x7f, 0x7f, 0x01, 0x01, 0x01, 0x01, 0x00,  //  Ф
    0x00, 0x1e, 0x3e, 0x70, 0xe0, 0xc0, 0xc0, 0xe0, 0x70, 0x3e, 0x1e, 0x00, 0x00, 0x78, 0x7c, 0x0e, 0x07, 0x03, 0x03, 0x07, 0x0e, 0x7c, 0x78, 0x00,  //  Х
    0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3f, 0xff, 0xf0, 0x00,  //  Ц
    0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x7f, 0x7f, 0x00,  //  Ч
    0xfe, 0xfe, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x7f, 0x7f, 0x60, 0x60, 0x7f, 0x7f, 0x7f, 0x60, 0x60, 0x7f, 0x7f, 0x00,  //  Ш
    0xfe, 0xfe, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x7f, 0x7f, 0x60, 0x60, 0x7f, 0x7f, 0x7f, 0x60, 0x60, 0x7f, 0xff, 0xf0,  //  Щ
    0x06, 0x06, 0xfe, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x3f, 0x00,  //  Ъ
    0xfc, 0xfc, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x7c, 0xfc, 0x00, 0x7f, 0x7f, 0x61, 0x61, 0x61, 0x61, 0x61, 0x7f, 0x3f, 0x00, 0x7f, 0x00,  //  Ы
    0x00, 0xfc, 0xfc, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x7f, 0x3f, 0x00,  //  Ь
    0x00, 0x18, 0x1c, 0x8e, 0x86, 0x86, 0x86, 0x86, 0x8e, 0xfc, 0xf8, 0x00, 0x00, 0x18, 0x38, 0x71, 0x61, 0x61, 0x61, 0x61, 0x71, 0x3f, 0x1f, 0x00,  //  Э
    0xfe, 0xfe, 0xc0, 0xfc, 0xfe, 0x06, 0x06, 0x06, 0x06, 0xfe, 0xfc, 0x00, 0x7f, 0x7f, 0x00, 0x3f, 0x7f, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x3f, 0x00,  //  Ю
    0x00, 0xf8, 0xfc, 0x8e, 0x86, 0x86, 0x86, 0x86, 0x86, 0xfe, 0xfe, 0x00, 0x40, 0x60, 0x71, 0x39, 0x1d, 0x0f, 0x07, 0x03, 0x01, 0x7f, 0x7f, 0x00,  //  Я
	
    0x00, 0x80, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x3c, 0x7e, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7f, 0x7f, 0x00, 0x00,  //  а
    0x00, 0xe0, 0xf0, 0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x18, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x63, 0x63, 0x63, 0x63, 0x63, 0x7f, 0x3e, 0x00, 0x00,  //  б
    0x00, 0xe0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7f, 0x3f, 0x00, 0x00,  //  в
    0x00, 0xe0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  //  г
    0x00, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xe0, 0x00, 0x80, 0x00, 0x00, 0x03, 0x47, 0xe6, 0xf6, 0xde, 0xde, 0xff, 0x7f, 0x07, 0x03, 0x00,  //  д
    0x00, 0x80, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x1f, 0x3f, 0x76, 0x66, 0x66, 0x66, 0x66, 0x67, 0x63, 0x00, 0x00,  //  е
    0x00, 0x20, 0xe0, 0xc0, 0x00, 0xe0, 0xe0, 0x00, 0xc0, 0xe0, 0x20, 0x00, 0x00, 0x40, 0x70, 0x39, 0x0f, 0x7f, 0x7f, 0x0f, 0x39, 0x70, 0x40, 0x00,  //  ж
    0x00, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x66, 0x66, 0x66, 0x67, 0x7e, 0x38, 0x00, 0x00,  //  з
    0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x60, 0x60, 0x60, 0x30, 0x18, 0x7f, 0x7f, 0x00, 0x00,  //  и
    0x00, 0xe0, 0xe0, 0x00, 0x20, 0x30, 0x10, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x60, 0x60, 0x60, 0x30, 0x18, 0x7f, 0x7f, 0x00, 0x00,  //  й
    0x00, 0xe0, 0xe0, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x60, 0x20, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x03, 0x03, 0x03, 0x07, 0x0e, 0x7c, 0x78, 0x00, 0x00,  //  к
    0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x60, 0x60, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x60, 0x7e, 0x1f, 0x01, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00,  //  л
    0x00, 0xe0, 0xe0, 0xc0, 0x80, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x01, 0x03, 0x0e, 0x03, 0x01, 0x7f, 0x7f, 0x00, 0x00,  //  м
    0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x03, 0x03, 0x03, 0x03, 0x03, 0x7f, 0x7f, 0x00, 0x00,  //  н
    0x00, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x60, 0x60, 0x60, 0x60, 0x60, 0x7f, 0x3f, 0x00, 0x00,  //  о
    0x00, 0xe0, 0xe0, 0x60, 0x60, 0x60, 0x60, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0x00, 0x00   //  п
	 
    
}; 
#endif

 

Iwan73
Offline
Зарегистрирован: 02.11.2013

Спасибо,еще не пробовал,на работе напряги до поздна,сегодня попробую обязательно.

Gres
Gres аватар
Offline
Зарегистрирован: 26.03.2013

hugoboss317 пишет:
набросал пару шрифтов 16х24 цифры и 12х16

Спасибо за шрифты и прога пригодится.

Проверил либу в железе и нашел косяк, на скоряк исправил и заменил ее, теперь там исправленная и проверенная версия, все работает.

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