реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Перекодировка для ЖКИ
goodking
сообщение Dec 23 2009, 09:33
Сообщение #31


Участник
*

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



Цитата(demiurg_spb @ Dec 23 2009, 13:29) *
Застрелится.

Что сделать с программой, а не с собой? smile.gif
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 23 2009, 09:46
Сообщение #32


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(goodking @ Dec 23 2009, 12:33) *
Что сделать с программой, а не с собой? smile.gif
Нет, тут Вы не правы, с программой можно больше ничего пока не делать.
А вот собой заняться стоит! Купить пару умных книжек по Си и изучить их внимательно, как вам уже здесь советовали.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
goodking
сообщение Dec 23 2009, 10:28
Сообщение #33


Участник
*

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



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

Хорошо, спасибо smile.gif
Go to the top of the page
 
+Quote Post
goodking
сообщение Dec 24 2009, 08:46
Сообщение #34


Участник
*

Группа: Участник
Сообщений: 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};


я не совсем понимаю, для чего эта подпрограмма, и как она используется, обьясните пожалуйста!
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 24 2009, 11:52
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Посмотрите и сравните кодировку символов символьных LCD, основанных на контроллере HD44780U и его клонах, с кодировками Win-1251, KOI-8R.
http://www.gaw.ru/html.cgi/txt/lcd/chips/hd44780/start.htm
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Dec 24 2009, 11:54
Сообщение #36


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



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

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

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


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post
goodking
сообщение Dec 24 2009, 12:20
Сообщение #37


Участник
*

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



То-есть таблица служит для перевода символов, которые не поддерживает ЖКИ?
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Dec 24 2009, 12:24
Сообщение #38


Гуру
******

Группа: Свой
Сообщений: 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];                // Перекодировать
       }
Go to the top of the page
 
+Quote Post
SysRq
сообщение Dec 24 2009, 15:13
Сообщение #39


Чайник, 1 литр
****

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



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

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

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

// Ваш К.О.
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 13:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01436 секунд с 7
ELECTRONIX ©2004-2016