roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 20:19

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Проблема с выводом русских букв на LCD или глюк CVAVR
СообщениеДобавлено: 29 янв 2011, 02:47 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2010, 13:56
Сообщения: 995
Откуда: Нижний Новгород
прог. языки: С, С++, РНР
Проблема в следующем:

Сделал свой конвертор русских букв внутри контроллера. Применяю дисплей для отладки, поэтому памяти не жалко.

Конвертор работает, все хорошо.
Вот такой код работает:
Код:
#include <mega32.h>
#asm
   .equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>

char *rus_encode(char *text)
{
char *alfavite = "ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁйцукенгшщзхъфывапролджэячсмитьбюё";
char rus_lcd[]={0xA6, 0xE1, 0xA9, 0x4B, 0x45, 0x48, 0xA1, 0xAC, 0xE2, 0xA4, 0x58, 0xAD,
                0xAA, 0xAE, 0x42, 0x41, 0xA8, 0x50, 0x4F, 0xA7, 0xE0, 0xA3, 0xAF,
                0xB1, 0xAB, 0x43, 0x4D, 0xA5, 0x54, 0x62, 0xA0, 0xB0, 0xA2,
               
                0xB9, 0xE5, 0x79, 0xBA, 0x65, 0xBD, 0xB4, 0xC1, 0xE6, 0xB7, 0xD5, 0xC2,
                0xE4, 0xC3, 0xB3, 0x61, 0xBE, 0x70, 0x6F, 0xBB, 0xE3, 0xB6, 0xC5,
                0xC7, 0xC0, 0x63, 0xBC, 0xB8, 0xBF, 0xC4, 0xB2, 0xC6, 0xA2};
unsigned char i,r;
for(i=0; text[i]!=0; i++)
{
  r=0;
  while(r<sizeof(rus_lcd) && text[i] != alfavite[r]) r++;
  if(r!=sizeof(rus_lcd)) text[i] = rus_lcd[r];
}
return(text);
}

void main(void)
{
PORTA=0x00; DDRA=0x00;
PORTB=0x00; DDRB=0x08;
PORTD=0x00; DDRD=0x80;

lcd_init(16);
lcd_clear();


lcd_gotoxy(0, 0);
lcd_puts(rus_encode("Пример"));

}


Теперь если немного изменить последние строчки:
Код:
while(1)
{
lcd_gotoxy(0, 0);
lcd_puts(rus_encode("Пример"));
}


То при первом проходе цикла все нормально, а начиная со второго часть букв заменяется на "ё"
Т.е. выводится : ёрёвет

при этом если написать таК:
Код:
lcd_gotoxy(0, 0);
lcd_puts(rus_encode("Пример"));
lcd_gotoxy(0, 0);
lcd_puts(rus_encode("Пример"));


То все ок.

Я уже не знаю в чем проблема.

Саму функцию перекодировки можете не проверять, она может и не оптимальна, но она работает как часы.
Но только когда нет циклов, когда вывод происходит внутри цикла, получается какая то фигня.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с выводом русских букв на LCD или глюк CVAVR
СообщениеДобавлено: 29 янв 2011, 03:03 
Не в сети
Мастер Самоделкин
Аватара пользователя

Зарегистрирован: 11 окт 2004, 19:20
Сообщения: 3678
Откуда: Россия, СПб
прог. языки: C/C++, Python, asm
ФИО: Курмис Александр Андреевич
Если ЖКИ от МЭЛТ - то подмени вот этот файлик. Я его когда-то правил, но почему и как - уже не помню.


Вложения:
Комментарий к файлу: CodeVision LCD.LIB для экранов МЭЛТ
LCD.rar [1.44 КиБ]
Скачиваний: 0

_________________
Ниндзя - круче всех. Они умеют ходить по воде, делить на ноль и угадывать шаффл в АйПоде.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с выводом русских букв на LCD или глюк CVAVR
СообщениеДобавлено: 29 янв 2011, 05:13 
Не в сети
Аватара пользователя

Зарегистрирован: 29 апр 2008, 21:15
Сообщения: 4130
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич
Проблема в том, что rus_encode изменяет исходную строку

_________________
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с выводом русских букв на LCD или глюк CVAVR
СообщениеДобавлено: 29 янв 2011, 11:06 
Не в сети
Аватара пользователя

Зарегистрирован: 15 ноя 2010, 13:56
Сообщения: 995
Откуда: Нижний Новгород
прог. языки: С, С++, РНР
Жки МЭЛТообразный да WH1602B-YYH-CTK
CVAVR 2.04.4a
А что меняется в этой библиотеке?
blindman писал(а):
Проблема в том, что rus_encode изменяет исходную строку

Блиндман! Ты гений! :) Вот я тормоз.
Все заработало, теперь интересно только что за другая библиотека.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO