|
Кирилица на LCD смешивается! |
|
|
|
Aug 13 2008, 05:51
|

Частый гость
 
Группа: Участник
Сообщений: 89
Регистрация: 5-10-07
Пользователь №: 31 098

|
Здравствуйте, хочу спросить следущее: при использовании const unsigned char для вывода кирилицы на LCD почему-то объединяются несколько переменных? Mне интересно как выводить сообщения на LCD содержащие одинаковые фразы, почему они смешиваются? Вот исходник с результатом:
Эскизы прикрепленных изображений
Прикрепленные файлы
v1.183.rar ( 91.57 килобайт )
Кол-во скачиваний: 49
|
|
|
|
|
Aug 13 2008, 06:19
|

Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544

|
В конце строк для вывода на ЖК добавте 0х00
Ваша строка: const unsigned char mes1 [] = {0xbf, 0x65, 0x70, 0xbc, 0x6f, 0xbc, 0x65, 0xbf, 0x70}; //слово "термометр" в кодировке KOI-8R Нужно: const unsigned char mes1 [] = {0xbf, 0x65, 0x70, 0xbc, 0x6f, 0xbc, 0x65, 0xbf, 0x70, 0}; //слово "термометр" в кодировке KOI-8R и так со всеми остальными строками
|
|
|
|
|
Aug 13 2008, 07:39
|

Частый гость
 
Группа: Участник
Сообщений: 92
Регистрация: 21-06-07
Из: Saint-Petersburg
Пользователь №: 28 607

|
Цитата(haker_fox @ Aug 13 2008, 11:22)  А все ли индикаторы Win-1251 понимают? Не видел таких что бы понимали. Там свой специфичный знакогенератор.
|
|
|
|
|
Aug 13 2008, 08:45
|

Группа: Новичок
Сообщений: 4
Регистрация: 12-01-07
Пользователь №: 24 365

|
Можно просто текстом "термометр" - но для этого используйте текстовый редактор типа Aditor и выставьте нужную кодировку. С Codevision AVR работает.
|
|
|
|
|
Aug 13 2008, 08:53
|

Частый гость
 
Группа: Участник
Сообщений: 89
Регистрация: 5-10-07
Пользователь №: 31 098

|
Спасибо, сегодня попробую нули добавить, а за что эти нули отвечают? Цитата(Serj78 @ Aug 13 2008, 12:17)  Может я не в тему, но "железно" индикатор представляет из себя 2 индикатора 4х20. может где-то в обработчике баг? Было бы интересно где?
Сообщение отредактировал _Олег_ - Aug 13 2008, 08:49
|
|
|
|
|
Aug 13 2008, 10:00
|
Частый гость
 
Группа: Свой
Сообщений: 188
Регистрация: 28-09-06
Из: Minsk
Пользователь №: 20 762

|
Я пользуюсь для перекодировки русского язака таблицу Код code byte Table_coder[64]={ 0x41,0xA0,0x42,0xA1,//0xC0...0xC3 <=> А Б В Г 0xE0,0x45,0xA3,0x33,//0xC4...0xC7 <=> Д Е Ж З 0xA5,0xA6,0x4B,0xA7,//0xC8...0xCB <=> И Й К Л 0x4D,0x48,0x4F,0xA8,//0xCC...0xCF <=> М Н О П
0x50,0x43,0x54,0xA9,//0xD0...0xD4 <=> Р С Т У 0xAA,0x58,0xE1,0xAB,//0xD5...0xD7 <=> Ф Х Ц Ч 0xAC,0xE2,0xAC,0xAE,//0xD8...0xDB <=> Ш Щ Ъ Ы 0x62,0xAF,0xB0,0xB1,//0xDC...0xDF <=> Ь Э Ю Я
0x61,0xB2,0xB3,0xB4,//0xE0...0xE4 <=> а б в г 0xE3,0x65,0xB6,0xB7,//0xE5...0xE7 <=> д е ж з 0xB8,0xA6,0xBA,0xBB,//0xE8...0xEB <=> и й к л 0xBC,0xBD,0x6F,0xBE,//0xEC...0xEF <=> м н о п
0x70,0x63,0xBF,0x79,//0xF0...0xE4 <=> р с т у 0xE4,0xD5,0xE5,0xC0,//0xF5...0xE7 <=> ф х ц ч 0xC1,0xE6,0xC2,0xC3,//0xF8...0xEB <=> ш щ ъ ы 0XC4,0xC5,0xC6,0xC7 //0xFC...0xEF <=> ь э ю я };
byte coder(byte b) { if (b<192) return b; else return Table_coder[b-192]; } Для создания строки удобно пользовать функцию sprintf,(Конец строки добавляется автоматом): Код sprintf(buffer,"Строка 1"); for(...) buffer[i] =coder(buffer[i]); //Write to LCD
|
|
|
|
|
Aug 13 2008, 10:38
|

Частый гость
 
Группа: Участник
Сообщений: 89
Регистрация: 5-10-07
Пользователь №: 31 098

|
Цитата(Kolia @ Aug 13 2008, 14:00)  Я пользуюсь для перекодировки русского язака таблицу Спасибо, я то же так хочу попробовать, но сначала решил сделать просто.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|