Свежие обсуждения
Микроконтроллеры

Русский текст на ЖКИ

Как можно исправить заголовочные файлы, чтобы выводить русский текст командой lcd_putsf("русский текст"); ? Выводить по одной букве командой lcd_putchar(0xa8); мягко говоря, не очень удобно.

 

Дело в том, что кодировка ЖКИ индикатора для кирилици отличается от принятой в винде. Собственно, в наборе символов для индикатора присуствуют ТОЛЬКО те символы кирилицы, которые не дублируются латиницей.
Для упрощения процесся я использую программку "LCD20.exe", она преобразует кирилический текст в "кашу" соответствующую реальным кодам символов ЖКИ индикатора. (Эта "каша" вставляется вместо кирилческого текста в листинг программы).
Программа где-то упоминалась на форуме. Если не найдете, могу выслать или выложить. Там 300к всего.

 

// win1251 - LCD translation table
const unsigned char TransTable[] = {
0x41,0xA0,0x42,0xA1,0xE0,0x45,0xAB,0xA4,0xA5,0xA6,0x4B,0xA7,0x4D,0x48,0x4F,0xA8,
0x50,0x43,0x54,0xA9,0xAA,0x58,0xE1,0xAB,0xAC,0xE2,0xAD,0xAE,0x62,0xAF,0xB0,0xB1,
0x61,0xB2,0xB3,0xB4,0xE3,0x65,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0x6F,0xBE,
0x70,0x63,0xBF,0x79,0xE4,0x78,0xE5,0xC0,0xC1,0xE6,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7 };

void lcd_putchar( unsigned char ch )
{

if (ch > 0xBF)
ch = TransTable [(ch-0xC0)];

lcd_putbyte( ch );

}

 

Я чтоб не пялиться на таблицу кодировки сделал простенькую программку на VB
http://www.schemz.narod.ru/LCD/ansii-lcd.rar
пишете текстовую строку и она выводит вам её хекс-коды.
Или можно так
http://www.schemz.narod.ru/LCD/lcd_rustable.c
почти 1в1 как у Антохи
..........................
lcdCod= Message[i]; //если буква латинская, брать её ASCII код
if (lcdCod > 0x7F) lcdCod=rusTable[Message[i]-0xC0]; //если не латинская буква, то её код брать из таблицы rusTable
................................

 

2gan, спасибо за прогамку(ASCII->LCD) давно пользуюсь, полезная вещь.
Извиняюсь за офф. на Вашей страничке нашел стенд для тестирования АТХ БП, скажите как Вы измеряете напряжение/ток 8и битным АЦП с точностью 0,01в/а?

 

Уважаемый Сергей К, если можно, выложите, или вышлите на Gabitoff@yandex.ru. Спасибо.

 

AlexAlcoa: 8и битным АЦП с точностью 0,01в/а
Дык это, я ж операционниками обрезал и сдвигал диапазон измерения (нормировал), то есть например для 5 Вольт мерял не все 5.5 вольт, а от 4.5 до 5.5, а затем усиливал его до 5вольти имерял 8-битным цапом. (Кстати 123 где-то описывал у себя подобное).
Изврат, конечно, сейчас бы я так не делал, да и всю схему бы запихал в какую-нибудь мегу с 10-разряднгым АЦП и 3-х канальным ШИМом вместо цапов. Но тогда я на комлектующие особо внимания не обращал.

 

ОК, спасибо.

 

ГЫ
Всё же Лабионда==123