Заблокирован
Регистрация: 23.09.2007
Сообщений: 761
Сказал спасибо: 84
Сказали Спасибо 352 раз(а) в 151 сообщении(ях)
|
Re: Как вывести русские символы на LCD из CAVR
Я немного переделал "для чайников" функцию уважаемого nagano из 38 поста данной темы:
#include ‹stdio.h›
#include ‹string.h›
// Alphanumeric LCD Module functions
#include ‹alcd.h›
char lcd_string [40];
const unsigned char ruscoder[64] = { //массив для перекодировки из ASCII в KOI-8R
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 ‹=› ь э ю я
};
void lcd_ruscoder_puts ( unsigned char *message) //функция перекодировки ASCII в KOI-8R
{
unsigned char i, j; //для цикла и длины
j = strlen(message); //определяем длину строчки
for (i = 0; i ‹ (j + 1); i++) //массив ASCII в массив KOI-8R, j + 1 - чтобы вывести конец строки
{
if (message [i] ›= 192) //если кирилица
{
message [i] = ruscoder [(message [i] - 192)]; //используем массив перекодировки
};
};
lcd_puts (message); //выыодим на LCD
}
void lcd_putsf_ru(char flash *str)
{
sprintf (lcd_string, str);
lcd_ruscoder_puts (lcd_string);
}
Теперь для посылки строки из флэш-памяти русскими буквами нужно добавить к стандартной функции CVAVR 2 символы "_ru".
Пример
lcd_putsf_ru("РУССКИЕ БУКВЫ");
Компилятор немного ругается на указатели типа unsigned char, если снять галочку "char is unsigned" в конфигурации проекта. Но работает. Помогите, люди добрые, решить проблему с руганью, и пользуйтесь на здоровье.
Последний раз редактировалось kosmos440o; 08.06.2012 в 19:55.
|