Easyelectronics.ru

Электроника для всех
Текущее время: 23 авг 2019, 23:11

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



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Включение русской таблицы символов в LCD HD44780
СообщениеДобавлено: 26 мар 2013, 01:30 
Заглядывает иногда

Зарегистрирован: 19 окт 2012, 16:01
Сообщения: 87
Откуда: Чебоксары
Имеется дисплей WH1604B-YYH-CT с зашитой русской таблицей. Включаю по 4-битной шине с помощью примера, приведённого в данной статье. Проблема в том, что по умолчанию у нас включена англо-японская таблица, а чтобы переключить таблицу, нужно установить бит FT1, который находится на DB1. Но в 4-битном режиме мы этот вывод не задействуем. Как в таком случае включить нужную таблицу? Неужели в 8-битный режим придётся перейти?
Не совсем понимаю ещё управление дисплеем, отсюда и вопросы такие :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Включение русской таблицы символов в LCD HD44780
СообщениеДобавлено: 26 мар 2013, 02:05 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 12 дек 2012, 00:42
Сообщения: 129
В 4-битном режиме передаются те же 8 бит, только за два захода, вначале пишутся старшие 4 бита, потом младшие. По той же ссылке всё разжевано:
Код:
void SendByte(char ByteToSend, char IsData) {
    LCM_OUT &= ~MASK;
    LCM_OUT |= (ByteToSend & 0xF0); // пишутся биты D4..D7
   
    if (IsData == TRUE) LCM_OUT |= RS;
    else LCM_OUT &= ~RS;
    pulse();
   
    LCM_OUT &= ~MASK;
    LCM_OUT |= ((ByteToSend & 0x0F) << 4); // биты D0..D3 числа, которое хотим записать, сдвигаются так, что они занимают позиции D4..D7, после чего они записываются в индикатор
   
    if (IsData == TRUE) LCM_OUT |= RS;
    else LCM_OUT &= ~RS;
    pulse();
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Включение русской таблицы символов в LCD HD44780
СообщениеДобавлено: 26 мар 2013, 23:23 
Заглядывает иногда

Зарегистрирован: 19 окт 2012, 16:01
Сообщения: 87
Откуда: Чебоксары
Ах чёрт, прошу прощения за глупые вопросы. На ночь глядя не усмотрел такой простой вещи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Включение русской таблицы символов в LCD HD44780
СообщениеДобавлено: 05 апр 2013, 12:04 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2847
Внезапно. Есть два жк. Первый: WH1604A-YYH-CT Rev.C. Второй: WH1604A-YYK-CT Rev.G. Проблема в чем: на первом ЖК кириллица выводится нормально, на втором - её будто нет, выводятся кракозябры. Подключение абсолютно одинаковое, плата одна и таже, контроллеры на платах вроде одни и те же. Где ковырять?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Включение русской таблицы символов в LCD HD44780
СообщениеДобавлено: 05 апр 2013, 12:59 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2847
UPD: проверил еще 2 таких же ЖК экрана, из одной партии. С ними все ОК. Видать братья-азиаты накосячили, без кириллицы дисплей отдали.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Включение русской таблицы символов в LCD HD44780
СообщениеДобавлено: 05 апр 2013, 13:03 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
Hold писал(а):
Внезапно. Есть два жк. Первый: WH1604A-YYH-CT Rev.C. Второй: WH1604A-YYK-CT Rev.G. Проблема в чем: на первом ЖК кириллица выводится нормально, на втором - её будто нет, выводятся кракозябры. Подключение абсолютно одинаковое, плата одна и таже, контроллеры на платах вроде одни и те же. Где ковырять?
Первый способ - откройте даташиты на WH1604A-YYH-CT Rev.C и WH1604A-YYK-CT Rev.G, WinStar печатает там таблицы знакогенератора. Похоже, одни и те же кирилличекие символы находятся на разных местах в таблицах этих дисплеев. Кириллица - не ASCII, её нередко раскидывают по таблице кодов HD44780-дисплеев как производителю удобно. Стандартных кодов для неё нет.

Второй способ - выведите в цикле все 256 символов на дисплей - увидите, кудА (на какие коды) попадают нужные Вам символы кириллицы. Соответственно скорректируйте таблицу (или алгоритм) перекодировки в своей программе.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Включение русской таблицы символов в LCD HD44780
СообщениеДобавлено: 05 апр 2013, 13:23 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2847
Дело то в том, что у меня тут 5 этих ЖК. Из одной коробки. Один в один, даже дата совпадает. 4 из них - работают нормально, 5-й - херню показывает. Щас попробую вывести все коды, но что-то подсказывает, что там просто нет кириллицы. Вывожу следующим образом
Код:
const char Decode2Rus[255-192+1] PROGMEM = {
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,0xAD,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 };

void putschar(unsigned char *string)
{
char c; 
while (c=*string++)
{
if(c>=192) lcd_putchar(pgm_read_byte(&Decode2Rus[c-192]));
else lcd_putchar(c);
}
}   

putschar("Привет, МИР!");

Данный код у меня работал со всеми возможными WHxxxx. А тут косяк.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Включение русской таблицы символов в LCD HD44780
СообщениеДобавлено: 05 апр 2013, 13:37 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2847
Что и требовалось доказать:
Изображение
Изображение
Ни одного знака на кириллице.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Включение русской таблицы символов в LCD HD44780
СообщениеДобавлено: 05 апр 2013, 13:58 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
Hold писал(а):
4 из них - работают нормально, 5-й - херню показывает. Щас попробую вывести все коды, но что-то подсказывает, что там просто нет кириллицы.
Может быть, конечно, что ярлычок с суффиксом "-CT" (кириллица) попал на "плохой" модуль по ошибке. (Ярлычок WinStar'ом клеится на каждый модуль, даже если модули собраны в партию/коробку).
Но честно говоря, Вы неправильно проверяете. Снова вывОдите конкретные коды, причём те самые, с которыми не получилось. А для объективной проверки надо было так:
Код:
for (ch = 0x00; ch <= 0xFF; ch++) {
  lcd_putchar(ch);
  ... //тут задержка или листание по кнопке или ещё что-то добавьте, чтобы _все_256_ символов посмотреть
  //и никакой перекодировки (Decode2Rus[]) в этом тесте не надо делать! Смотрим "сырой" фонт как он в чипе зашит!
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Включение русской таблицы символов в LCD HD44780
СообщениеДобавлено: 05 апр 2013, 14:32 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2847
Прогнал всё. нет там кириллицы. Хотя наклейка гордо утверждает "CT". Ладн, пусть лежит. Или будет отдельный прибор, с англ.версией.
UPD: японский тут. Упрощенная катакана


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Включение русской таблицы символов в LCD HD44780
СообщениеДобавлено: 05 апр 2013, 15:15 
Старожил

Зарегистрирован: 15 янв 2013, 13:24
Сообщения: 5665
Hold писал(а):
Или будет отдельный прибор, с англ.версией.
Или очень специфический прибор, которому достаточно не более восьми различающихся русских букв одновременно :-) Например, надпись "Я БЫ ПОШЁЛ..." легко реализуется на non-CT дисплее - любые символы можно определить в ОЗУ-шной таблице HD44780. И переопределять на ходу, по мере надобности. Но опять же, это специфическое использование.
P.S. При выводе таких пользовательских символов лучше использовать коды 0x08...0x0F, а не 0x00-0x07. Хотя результат будет одинаков, в первом случае сохранится возможность проверки на терминирующий 0x00 в строках.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Включение русской таблицы символов в LCD HD44780
СообщениеДобавлено: 05 апр 2013, 15:20 
Старожил

Зарегистрирован: 16 ноя 2012, 07:47
Сообщения: 2847
Да проще новый ЖК заказать, чем перелопачивать прошивку уже работающего девайса. Ладн, херня случается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Включение русской таблицы символов в LCD HD44780
СообщениеДобавлено: 23 мар 2014, 18:30 
Здравствуйте!
Аватара пользователя

Зарегистрирован: 23 мар 2014, 15:47
Сообщения: 3
Откуда: Москва
Поскольку данная тема всплывает в поисковике в числе первых по описанию проблемы, я решил (да простят меня модераторы) продублировать ссылку на созданный мной вариант решения, дабы столкнувшимся с той же проблемой было проще с ней справиться:

Изображение
______________________________________________
С уважением к сообществу EasyElectronics, Wolf4D


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

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


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

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


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB