Перейти к содержанию
    

Перекодировка для ЖКИ

Что сделать с программой, а не с собой? :)
Нет, тут Вы не правы, с программой можно больше ничего пока не делать.

А вот собой заняться стоит! Купить пару умных книжек по Си и изучить их внимательно, как вам уже здесь советовали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

А вот собой заняться стоит! Купить пару умных книжек по Си и изучить их внимательно, как вам уже здесь советовали.

Хорошо, спасибо :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Читаю книжку по МК, там есть пример с выводом результата на LCD, в программе указана следующая таблица

code byte LCDCODE[132] = {0xdb,0xd1,0xdc,0xd9,0x41,0xA0,0x42,0xa1,
                          0xe0,0x45,0xA3,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};

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Посмотрите и сравните кодировку символов символьных LCD, основанных на контроллере HD44780U и его клонах, с кодировками Win-1251, KOI-8R.

http://www.gaw.ru/html.cgi/txt/lcd/chips/hd44780/start.htm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Слишком тихо телепатируете текст подпрограммы.

По тем обрывкам, что слышу сквозь ментальную атаку пришельцев, полагаю, что символы для вывода на LCD

имеют вполне определенную собственную кодировку. Которая не обязана совпадать с какой-либо существующей, например DOS (и в ней самой куча кодировок, не совпадающих).

 

Самый простой способ перекодировки из одной системы в другую: входной параметр служит индексом массива. А значение массива - выходным параметром.

 

Таким образом, чтобы перекодировать один байт в любой другой байт нужна таблица размером в 256 байт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Таким образом, чтобы перекодировать один байт в любой другой байт нужна таблица размером в 256 байт.

Точнее 128, так как младшая половина обычно совпадает.

 

Если брать конкретно HD44780 и выводить в формате WIN (1251), то выглядит так:

 

const uint8_t __flash TabWin[] =    
{
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,   // псевдографика
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,   // псевдографика
0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,   // псевдографика
0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee,   // псевдографика
0xef, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6,   // псевдографика
0xa2, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd,   // Ё    псевдографика
0xfe, 0xff, 0xe7, 0xe8, 0xe9, 0xea, 0xeb, 0xec,   // псевдографика
0xb5, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xfd, 0xff,   // ё    псевдографика
0x41, 0xa0, 0x42, 0xa1, 0xe0, 0x45, 0xa3, 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,   // шщъыьэюя
};

 

Начало п/п вывода примерно так

       if(c>=0x80)
       {                            // Если символ не латинский, то
         c -= 0x80;                    // Уменьшить таблицу
         c = TabWin[c];                // Перекодировать
       }

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отображающуюся на экране букву следует воспринимать как два компонента: графическое изображение символа, и код символа.

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

 

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

 

Т.о., если вы хотите чтобы набранная строка "Превед" в исходнике вашей программы на компьютере, в кодировке DOS (как предлагают авторы вашей книжки), осталась выглядеть как "Превед" и на LCD-экранчике вашего устройства, у которого своя специальная кодировка, то необходимо преобразовывать коды символов этой строки таким образом, чтобы совпали графические изображения символов. Преобразовывать на основе двух кодовых страниц.

 

// Ваш К.О.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...