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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Кирилица на LCD смешивается!
_Олег_
сообщение Aug 13 2008, 05:51
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 5-10-07
Пользователь №: 31 098



Здравствуйте, хочу спросить следущее:

при использовании const unsigned char для вывода кирилицы на LCD почему-то объединяются несколько переменных? Mне интересно как выводить сообщения на LCD содержащие одинаковые фразы, почему они смешиваются?
Вот исходник с результатом:
Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  v1.183.rar ( 91.57 килобайт ) Кол-во скачиваний: 49
 
Go to the top of the page
 
+Quote Post
Igor26
сообщение Aug 13 2008, 06:19
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



В конце строк для вывода на ЖК добавте 0х00

Ваша строка: const unsigned char mes1 [] = {0xbf, 0x65, 0x70, 0xbc, 0x6f, 0xbc, 0x65, 0xbf, 0x70}; //слово "термометр" в кодировке KOI-8R
Нужно: const unsigned char mes1 [] = {0xbf, 0x65, 0x70, 0xbc, 0x6f, 0xbc, 0x65, 0xbf, 0x70, 0}; //слово "термометр" в кодировке KOI-8R
и так со всеми остальными строками
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Aug 13 2008, 06:52
Сообщение #3


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



А нельзя просто буковками чтоли?
Типа:
const unsigned char mes1 [] = "термометр";


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Aug 13 2008, 07:22
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(MrYuran @ Aug 13 2008, 09:52) *
А нельзя просто буковками чтоли?
Типа:
const unsigned char mes1 [] = "термометр";

Дык у него знакогенератор в КОИ-8, а в этом случае подставится кодовая таблица ОС, стоящей на компьютере.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Aug 13 2008, 07:22
Сообщение #5


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(MrYuran @ Aug 13 2008, 15:52) *
А нельзя просто буковками чтоли?
Типа:
const unsigned char mes1 [] = "термометр";

А все ли индикаторы Win-1251 понимают?

Dog Pawlowa, Вы меня опередили)


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Ivan A-R
сообщение Aug 13 2008, 07:39
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 21-06-07
Из: Saint-Petersburg
Пользователь №: 28 607



Цитата(haker_fox @ Aug 13 2008, 11:22) *
А все ли индикаторы Win-1251 понимают?

Не видел таких что бы понимали. Там свой специфичный знакогенератор.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Aug 13 2008, 07:45
Сообщение #7


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(Ivan A-R @ Aug 13 2008, 16:39) *
Не видел таких что бы понимали. Там свой специфичный знакогенератор.

Почему, мэлтовские понимают: http://melt.com.ru/work/display/150


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 13 2008, 07:45
Сообщение #8


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(haker_fox @ Aug 13 2008, 13:22) *
А все ли индикаторы Win-1251 понимают?


Мои - понимают. Через таблицу перекодировкиsmile.gif


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Serj78
сообщение Aug 13 2008, 08:17
Сообщение #9


Знающий
****

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



Может я не в тему, но "железно" индикатор представляет из себя 2 индикатора 4х20. может где-то в обработчике баг?
Go to the top of the page
 
+Quote Post
Samsony
сообщение Aug 13 2008, 08:45
Сообщение #10





Группа: Новичок
Сообщений: 4
Регистрация: 12-01-07
Пользователь №: 24 365



Можно просто текстом "термометр" - но для этого используйте текстовый редактор типа Aditor и выставьте нужную кодировку. С Codevision AVR работает.
Go to the top of the page
 
+Quote Post
_Олег_
сообщение Aug 13 2008, 08:53
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 5-10-07
Пользователь №: 31 098



Спасибо, сегодня попробую нули добавить, а за что эти нули отвечают?

Цитата(Serj78 @ Aug 13 2008, 12:17) *
Может я не в тему, но "железно" индикатор представляет из себя 2 индикатора 4х20. может где-то в обработчике баг?


Было бы интересно где?

Сообщение отредактировал _Олег_ - Aug 13 2008, 08:49
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Aug 13 2008, 09:46
Сообщение #12


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(_Олег_ @ Aug 13 2008, 12:53) *
Спасибо, сегодня попробую нули добавить, а за что эти нули отвечают?

Нулевой символ обозначает конец строки


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Igor26
сообщение Aug 13 2008, 09:58
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Цитата
Нулевой символ обозначает конец строки

... а у Вас получется, что программа пихает в индикатор все символы, пока не поймает байт 0х00. Вот и наползают строки друг на друга.
Go to the top of the page
 
+Quote Post
Kolia
сообщение Aug 13 2008, 10:00
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 188
Регистрация: 28-09-06
Из: Minsk
Пользователь №: 20 762



Я пользуюсь для перекодировки русского язака таблицу
Код
code byte Table_coder[64]={
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 <=>  ь э ю я
};

byte coder(byte b)
{
if (b<192) return b;
else       return Table_coder[b-192];
}


Для создания строки удобно пользовать функцию sprintf,(Конец строки добавляется автоматом):

Код
    sprintf(buffer,"Строка 1");
    for(...)
   buffer[i] =coder(buffer[i]);
   //Write to LCD
Go to the top of the page
 
+Quote Post
_Олег_
сообщение Aug 13 2008, 10:38
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 5-10-07
Пользователь №: 31 098



Цитата(Kolia @ Aug 13 2008, 14:00) *
Я пользуюсь для перекодировки русского язака таблицу



Спасибо, я то же так хочу попробовать, но сначала решил сделать просто.
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 - 23:57
Рейтинг@Mail.ru


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