|
Перекодировка для ЖКИ |
|
|
|
Dec 23 2009, 09:33
|
Участник

Группа: Участник
Сообщений: 32
Регистрация: 21-12-09
Пользователь №: 54 383

|
Цитата(demiurg_spb @ Dec 23 2009, 13:29)  Застрелится. Что сделать с программой, а не с собой?
|
|
|
|
|
Dec 23 2009, 10:28
|
Участник

Группа: Участник
Сообщений: 32
Регистрация: 21-12-09
Пользователь №: 54 383

|
Цитата(demiurg_spb @ Dec 23 2009, 12:46)  Нет, тут Вы не правы, с программой можно больше ничего пока не делать. А вот собой заняться стоит! Купить пару умных книжек по Си и изучить их внимательно, как вам уже здесь советовали. Хорошо, спасибо
|
|
|
|
|
Dec 24 2009, 08:46
|
Участник

Группа: Участник
Сообщений: 32
Регистрация: 21-12-09
Пользователь №: 54 383

|
Читаю книжку по МК, там есть пример с выводом результата на 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}; я не совсем понимаю, для чего эта подпрограмма, и как она используется, обьясните пожалуйста!
|
|
|
|
|
Dec 24 2009, 12:20
|
Участник

Группа: Участник
Сообщений: 32
Регистрация: 21-12-09
Пользователь №: 54 383

|
То-есть таблица служит для перевода символов, которые не поддерживает ЖКИ?
|
|
|
|
|
Dec 24 2009, 12:24
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(DpInRock @ Dec 24 2009, 14:54)  Таким образом, чтобы перекодировать один байт в любой другой байт нужна таблица размером в 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]; // Перекодировать }
|
|
|
|
|
Dec 24 2009, 15:13
|

Чайник, 1 литр
   
Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168

|
Отображающуюся на экране букву следует воспринимать как два компонента: графическое изображение символа, и код символа. Код символа - первичные данные, а изображение символа - функция от кода символа. Функция эта основана на кодировке - таблице соответствий кодов их графическим изображениям. Суть в том, что в разных кодировках одинаково изображаемые символы имеют разный код, или одинаковый код символа отображается в разные графические изображения в разных кодировках. То что в одной кодировке выглядит как "Абвгд", в другой выглядит как "бВЧЗД", но при этом в виде кодов символов оно одинаково. Т.о., если вы хотите чтобы набранная строка "Превед" в исходнике вашей программы на компьютере, в кодировке DOS (как предлагают авторы вашей книжки), осталась выглядеть как "Превед" и на LCD-экранчике вашего устройства, у которого своя специальная кодировка, то необходимо преобразовывать коды символов этой строки таким образом, чтобы совпали графические изображения символов. Преобразовывать на основе двух кодовых страниц. // Ваш К.О.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|