Rus LCD v2 Rus LCD v2 Text f77152a9-dd8a-4c2b-8627-1fb5de07272d 1335a04d-dacd-4519-8ecc-0aad105489de 183a46ff-1be9-4678-87ed-d0140c9f7a01 Rus LCD v2 Блок для отрисовки русских символов для дисплеев 1602 не поддерживающих кириллицу. ВАЖНО: 1. Блок понимает только ПРОПИСНЫЕ буквы (пробовал добавть строчные - не получилось) 2. В тексте можно использовать не более 8 уникальных русских букв (БГДЖЗИЙЛПУФЦЧШЩЬЪЫЭЮЯ), их кстати нужно заранее зарегистрировать в параметрах пользователя, остальные буквы заменяются похожими латинскими (ABEKMHOPCTX) 3. Блок умеет выводить тоько константу, поэтому никаких входов не имеется. 468 Str 0 Строка bf10a625-d7b3-472c-88b0-d667df162588 68610e9e-72be-4fb8-9062-a011d171d240 Stlb Столбец 4e13464d-2b54-4526-948f-6bb253f1cfb2 b4c1c096-6642-4594-be4d-f98097107090 RS 8 396941f3-a625-42f6-b88c-5dfc043bffcc 4482d429-dcc6-4756-a1d0-be66c2e2b345 E_ 9 f689dbae-cf66-45a2-a5c0-8518a1ad8cb6 375eba02-4336-482c-9d91-5e3aad311fdb D4 4 2cb61d3a-6479-4954-a57a-bf033466b880 1479a363-8f28-4593-bd4a-0d104bc3080a D5 5 acdfd82a-b741-48b2-9cda-ba1c17529c6f 3c398bfa-ffb6-4a05-884c-eac56186696b D6 6 37ef9f89-a8ab-485c-949e-df3ea302ab45 6eb4eeaa-dae9-4ac3-9df7-dfed49dfd2af D7 7 399674e3-267f-40ee-a228-81a44c627ca2 785b8837-f2b7-4a8c-b079-5f0cf365a272 text_print ( Stlb, Str, txt); 31 lcd.begin (16, 2); init_rus ("БГЖИЛЮЫЯ"); 45 #include <LiquidCrystal.h> lcd ( RS, E_, D4, D5, D6, D7); LiquidCrystal addon_letters [16]; static byte txt [] = Text ; char static byte letters[][8] = { { B11111, B10000, B10000, B11111, B10001, B10001, B11111, B00000 },//Б { B11111, B10000, B10000, B10000, B10000, B10000, B10000, B00000 },//Г { B10101, B10101, B10101, B01110, B10101, B10101, B10101, B00000 },//Ж { B10001, B10001, B10011, B10101, B11001, B10001, B10001, B00000 },//И { B00111, B01001, B10001, B10001, B10001, B10001, B10001, B00000 },//Л { B10001, B10001, B10001, B11101, B10101, B10101, B11101, B00000 },//Ы { B10111, B10101, B10101, B11101, B10101, B10101, B10111, B00000 },//Ю { B01111, B10001, B10001, B01111, B10001, B10001, B10001, B00000 },//Я }; static char chars[] = {'Б', 'Г', 'Ж', 'И', 'Л', 'Ы', 'Ю','Я'}; static byte empty[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; int index = 0,cl = sizeof(chars) / sizeof(char),i, j, symb; memset(addon_letters, 0, sizeof(addon_letters)); for ( j = 0; j < strlen(letters_use) && j < 16; j++ ) lcd.createChar(j, empty); for ( j = 0; j < strlen(letters_use) && j < 16; j++ ) { symb = -1; for ( i = 0; i < cl; i++ ) if ( chars[i] == letters_use[j] ) { symb = i; addon_letters[index] = letters_use[j]; break; } if ( symb != -1 ) { lcd.createChar(index, letters[symb]); index++; } } 1277 void init_rus const char* letters_use static char rus_letters[] = {'А','В','Д','Е','Ё','З','Й', 'К','М','Н','О','П', 'Р','С','Т','У','Ф', 'Х','Ц', 'Ч', 'Ш','Щ', 'Ь','Ъ','Э'}; static char trans_letters[] = {'A','B','D','E','E','3',char(245),'K','M','H','O',char(247),'P','C','T','Y',char(236),'X',char(249),char(209),'W',char(175),'b','b',char(214)}; int lcount = sizeof(rus_letters) / sizeof(char), i, j; for ( i = 0; i < strlen(str); i=i+1 ) { if ( byte(str[i]) == 208 ) continue; // 208 ignore int found = 0; for (j = 0; j < 16; j++) if ( addon_letters[j] != 0 && byte(str[i]) == byte(addon_letters[j]) ) { lcd.write(j); found = 1; break; } if (!found) for (j = 0; j < lcount; j++) if ( byte(str[i]) == byte(rus_letters[j]) ) { lcd.write(trans_letters[j]); found = 1; break; } if (!found) lcd.write(byte(str[i])); } 909 void print_rus char *str lcd.setCursor(x, y); print_rus (str); 37 void text_print int x int y char *str 063ff9bb-1bc2-401f-a5d2-25d92db0bcea fe4ab006-0d5d-45b3-aaa1-c971adec488d Rus LCD v2 I2C БЛОК для LCD 1602 на чипе HD44780 с возможностью вывода русских символов для дисплеев, не поддерживающих кириллицу. Нет ограничений по количеству кириллических символов :) Умеет работать с переменными Использует стандартную библиотеку LiquidCrystal ВАЖНО: 1. Нет буквы Ё 2. Блок понимает только ПРОПИСНЫЕ буквы (пробовал добавить строчные - не получилось) 3. В связи с ограниченным количеством свободных ячеек для записи своих символов, пришлось много символов заменять похожими из катаканы (а они местами корявы :) ), поэтому для лучшей читаемости советую не использовать буквы : Ц, Ч, Ш, Щ, Э. 599 1 Text.toCharArray( charVar , 50); text_print ( Stlb, Str, charVar ); lcd .print(" "); 107 #include <LiquidCrystal_I2C.h> #include <Wire.h> lcd (0x27, 16, 2); LiquidCrystal_I2C addon_letters [16]; static byte charVar [50]; char x = (x)-(1); y = (y)-(1); lcd.setCursor(x, y); print_rus (str); 63