Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.70/135: Рейтинг темы: голосов - 135, средняя оценка - 4.70
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 87

Включение русской таблицы символов в LCD HD44780

25.03.2013, 01:43. Показов 27530. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется дисплей WH1604B-YYH-CT с зашитой русской таблицей. Включаю по 4-битной шине с помощью примера, приведённого в данной статье. Проблема в том, что по умолчанию у нас включена англо-японская таблица, а чтобы переключить таблицу, нужно установить бит FT1, который находится на DB1. Но в 4-битном режиме мы этот вывод не задействуем. Как в таком случае включить нужную таблицу? Неужели в 8-битный режим придётся перейти?
Не совсем понимаю ещё управление дисплеем, отсюда и вопросы такие :)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.03.2013, 01:43
Ответы с готовыми решениями:

lcd 20x4 hd44780 адреса ячеек символов.
Должен скоро приехать дисплейчик 20х4, возник такой вопрос, как узнать адреса ячеек символов? например(пример для дисплея 16х2) нужно мне...

Инициализация lcd на HD44780
Здравствуйте! Пытаюсь освоить lcd на HD44780. Понимаю, что есть много уже готовых библиотек, я их смотрел, пытался по их коду понять как...

Библиотерка LCD на контроллере HD44780
Для работы на си с данным дисплеем в winAVR есть библиотека "lcd_lib". Возьмем к примеру функцию отрпавки байта данных: void...

12
0 / 0 / 0
Регистрация: 07.12.2012
Сообщений: 122
25.03.2013, 02:18
В 4-битном режиме передаются те же 8 бит, только за два захода, вначале пишутся старшие 4 бита, потом младшие. По той же ссылке всё разжевано:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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;
putsi();
 
LCM_OUT &= ~MASK;
LCM_OUT |= ((ByteToSend & 0x0F) << 4); // биты D0..D3 числа, которое хотим записать, сдвигаются так, что они занимают позиции D4..D7, после чего они записываются в индикатор
 
if (IsData == TRUE) LCM_OUT |= RS;
else LCM_OUT &= ~RS;
putsi();
}
0
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 87
25.03.2013, 23:36
Ах чёрт, прошу прощения за глупые вопросы. На ночь глядя не усмотрел такой простой вещи.
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
04.04.2013, 12:17
Внезапно. Есть два жк. Первый: WH1604A-YYH-CT Rev.C. Второй: WH1604A-YYK-CT Rev.G. Проблема в чем: на первом ЖК кириллица выводится нормально, на втором - её будто нет, выводятся кракозябры. Подключение абсолютно одинаковое, плата одна и таже, контроллеры на платах вроде одни и те же. Где ковырять?
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
04.04.2013, 13:12
UPD: проверил еще 2 таких же ЖК экрана, из одной партии. С ними все ОК. Видать братья-азиаты накосячили, без кириллицы дисплей отдали.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
04.04.2013, 13:16
Цитата Сообщение от Hotd
Внезапно. Есть два жк. Первый: WH1604A-YYH-CT Rev.C. Второй: WH1604A-YYK-CT Rev.G. Проблема в чем: на первом ЖК кириллица выводится нормально, на втором - её будто нет, выводятся кракозябры. Подключение абсолютно одинаковое, плата одна и таже, контроллеры на платах вроде одни и те же. Где ковырять?
Первый способ - откройте даташиты на WH1604A-YYH-CT Rev.C и WH1604A-YYK-CT Rev.G, WinStar печатает там таблицы знакогенератора. Похоже, одни и те же кирилличекие символы находятся на разных местах в таблицах этих дисплеев. Кириллица - не ASCII, её нередко раскидывают по таблице кодов HD44780-дисплеев как производителю удобно. Стандартных кодов для неё нет.

Второй способ - выведите в цикле все 256 символов на дисплей - увидите, кудА (на какие коды) попадают нужные Вам символы кириллицы. Соответственно скорректируйте таблицу (или алгоритм) перекодировки в своей программе.
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
04.04.2013, 13:36
Дело то в том, что у меня тут 5 этих ЖК. Из одной коробки. Один в один, даже дата совпадает. 4 из них - работают нормально, 5-й - херню показывает. Щас попробую вывести все коды, но что-то подсказывает, что там просто нет кириллицы. Вывожу следующим образом
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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(unsykned char *string)
{
char c;
while (c=*string++)
{
if(c>=192) lcd_putchar(pgm_read_byte(&Decode2Rus[c-192]));
else lcd_putchar(c);
}
}
 
putschar("Привет, МИР!");
Динный код у меня работал со всеми возможными WHxxxx. А тут косяк.
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
04.04.2013, 13:50
Что и требовалось доказать:


Ни одного знака на кириллице.
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
04.04.2013, 14:11
Цитата Сообщение от Hotd
4 из них - работают нормально, 5-й - херню показывает. Щас попробую вывести все коды, но что-то подсказывает, что там просто нет кириллицы.
Может быть, конечно, что ярлычок с суффиксом "-CT" (кириллица) попал на "плохой" модуль по ошибке. (Ярлычок WinStarом клеится на каждый модуль, даже если модули собраны в партию/коробку).
Но честно говоря, Вы неправильно проверяете. Снова вывОдите конкретные коды, причём те самые, с которыми не получилось. А для объективной проверки надо было так:
Code
1
2
3
4
5
for (ch = 0x00; ch <= 0xFF; ch++) {
lcd_putchar(ch);
... //тут задержка или листание по кнопке или ещё что-то добавьте, чтобы _все_256_ символов посмотреть
//и никакой перекодировки (Decode2Rus[]) в этом тесте не надо делать! Смотрим "сырой" фонт как он в чипе зашит!
}
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
04.04.2013, 14:45
Прогнал всё. нет там кириллицы. Хотя наклейка гордо утверждает "CT". Ладн, пусть лежит. Или будет отдельный прибор, с англ.версией.
UPD: японский тут. Упрощенная катакана
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
04.04.2013, 15:28
Цитата Сообщение от Hotd
Или будет отдельный прибор, с англ.версией.
Или очень специфический прибор, которому достаточно не более восьми различающихся русских букв одновременно :-) Например, надпись "Я БЫ ПОШЁЛ..." легко реализуется на non-CT дисплее - любые символы можно определить в ОЗУ-шной таблице HD44780. И переопределять на ходу, по мере надобности. Но опять же, это специфическое использование.
P.S. При выводе таких пользовательских символов лучше использовать коды 0x08...0x0F, а не 0x00-0x07. Хотя результат будет одинаков, в первом случае сохранится возможность проверки на терминирующий 0x00 в строках.
0
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
04.04.2013, 15:33
Да проще новый ЖК заказать, чем перелопачивать прошивку уже работающего девайса. Ладн, херня случается.
0
Wotf4D
22.03.2014, 18:43
Поскольку данная тема всплывает в поисковике в числе первых по описанию проблемы, я решил (да простят меня модераторы) продублировать ссылку на созданный мной вариант решения, дабы столкнувшимся с той же проблемой было проще с ней справиться:


________________________________________ ______
С уважением к сообществу EasyElectronics, Wotf4D
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.03.2014, 18:43
Помогаю со студенческими работами здесь

Проблема с lcd hd44780 winstar
Курю потихоньку дисплейчик вот только не могу никак избавится от двух глюков: полностью закрашенный символ в начале первой строки и после...

О выводе на дисплей LCD HD44780
Пишу программу на Atmego32A. Столкнулся с проблемкой при выводе на дисплей. Функции вывода на дисплей взял из библиотеки DY HOTT-а....

Мигающий текст на LCD HD44780
Всем привет! А как проще всего сделать часть текста выводимого на LCD типа HD44780 мигающим? Именно часть текста, а не курсор. Сейчас...

Вывод на LCD HD44780 HEX кода
Доброго времени суток, господа. Прошу Вашей помощи в решение одной проблемы. Имею UHF RFID Reader(определяется как COM порт) и подключаю...

Посоветуйте библиотеку для LCD hd44780
Использоваться будет Atmel Studio 7. В основном, библиотека будет применяться при изготовлении амперметров, вольтметров и т.п, вывод данных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru