Русский текст на HD44780
|
|
уни | Дата: Суббота, 12.05.2012, 10:27 | Сообщение # 1 |
Группа: Проверенные
Сообщений: 16
Статус: Offline
| Может быть кому-то будет интересным. Написал свой вариант работы с этим контроллером специально для вывода текста на русском: https://mysvn.ru/schoolbell/pbiidemo/bascom/LCD.bas
Как использовать: https://mysvn.ru/schoolbell/pbiidemo/bascom/PBIIDemo.bas
Настройка модуля тут: https://mysvn.ru/schoolbell/pbiidemo/bascom/LCD_Config.bas
Сообщение отредактировал уни - Суббота, 12.05.2012, 10:43 |
|
| |
exersizze | Дата: Суббота, 12.05.2012, 12:05 | Сообщение # 2 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| Интересно! Я вот для вывода кириллицы пользуюсь вот этой прогой http://avrproject.ru/ds1307/LCD_RUS.rar но она помогает если русские символы зашиты в память контроллера, т.е. если дисплей "русифицирован"
Ваш вариант я так понимаю уже содержит данные для отрисовки символов, даже если их нет в памяти дисплея?
|
|
| |
уни | Дата: Суббота, 12.05.2012, 12:17 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 16
Статус: Offline
| Нет, дисплей должен иметь кириллицу в своей памяти. Мой код содержит таблицу перекодировки из CP1251 в таблицу знакогенератора HD44780. Когда я пытался завести простой проект на BASCOM AVR с использование стандартной библиотеки, то никак не смог с ходу заставить его работать. Кроме того, меня напрягает отсутствие поддержки кириллицы. Поэтому я написал свои функции для работы с этим контроллером.
Есть два способа вывода русского текста: 1) Перекодировать русский текст (или строки) в исходнике при помощи внешней программы (статический способ на этапе компиляции). 2) Перекодировать русский текст налету (динамический во время выполнения программы).
Недостаток первого способа - это нечитаемый текст в исходнике и необходимость в сторонней программе. Второй способ не имеет очевидных недостатков, т.к. это типовое решение, которое аналогично вариантам в других средах.
Меня просто удивляет, что до сих пор никто не написал что-то подобное для BASCOM AVR. Все привыкли к крякозяблам в коде.
Что же касается вывода текста на нерусифицированном ЖКИ, то это отдельная задача.
Таблица в исходнике избыточна, её можно уполовинить, но я её оставил для полноты картины.
П.С. Да, кстати, все выводы могут быть любыми (на любом порту). Интерфейс 4-х разрядный.
Сообщение отредактировал уни - Суббота, 12.05.2012, 12:20 |
|
| |
sherman | Дата: Суббота, 12.05.2012, 17:39 | Сообщение # 4 |
Группа: Проверенные
Сообщений: 55
Статус: Offline
| А чего тут удивляться, есть же стандартная команда вывода на дисплей текста и есть таблица кодировки руссифицированного контроллера HD44780. Да нужен сторонний конвертер, но использование стандартной функции вывода текста чрезвычайна проста, а кракозяблы в коде особо и не напрягают. Так что изобрели велосипед, имхо.
|
|
| |
уни | Дата: Суббота, 12.05.2012, 17:45 | Сообщение # 5 |
Группа: Проверенные
Сообщений: 16
Статус: Offline
| Нет, велосипеда я не изобретал: Подключение ЖКИ к микроконтроллеру в Bascom AVR Quote 1. Написать подпрограмму для контроллера, которая на лету будет декодировать ASCII коды и выводить уже правильные символы на ЖКИ. Удобна тем, что позволяет передавать любые строки без опасения, что они будут выведены впоследствии неправильно. Но этот способ требует лишних ресурсов на перекодировку, а также нужно постоянно хранить в памяти таблицу символов. 2. Использовать утилиту для ПК, которая сама переконвертирует нужные строки в нужный формат, которые сразу подставляются в код для вывода. Удобно тем, что не занимает память контроллера, работает быстро и вообще не требует ресурсов для перекодировки. Но минус в том, что в коде программы нужные строки уже не разобрать. Вывод символов в этом фиксированный, то есть выводить можно только заранее выбранный набор строк. При использовании ввода, например, с RS-232, русские символы будут отображены некорректно.
О наличии подпрограмм для первого случая мне известно, но я не встречал ни одной библиотеки или функции на Basom, которая бы выполняла это. Если вы встречали что-то подобное, убедительная просьба прислать это мне. http://decada.org.ru/project/lessons/bascom_avr/16/
|
|
| |
exersizze | Дата: Суббота, 12.05.2012, 17:52 | Сообщение # 6 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| а вот интересно как вывести кириллицу на не руссифицированный дисплей? вообще реально?
|
|
| |
уни | Дата: Суббота, 12.05.2012, 18:01 | Сообщение # 7 |
Группа: Проверенные
Сообщений: 16
Статус: Offline
| По моему способу можно, если на экране в конкретный момент времени будет находится набор из русских букв, похожих на английские (первая половина таблицы), плюс 8 произвольных символов, которые можно сформировать налету (любые, в т. ч. и русские буквы). Думаю, что можно, если фразы не большие. Да, это можно сделать и стандартными средствами библиотеки.
Сообщение отредактировал уни - Суббота, 12.05.2012, 18:03 |
|
| |
Toxa12345 | Дата: Суббота, 19.01.2013, 19:30 | Сообщение # 8 |
Группа: Пользователи
Сообщений: 3
Статус: Offline
| Купил дисплей на ибей, а он оказался не русифицирован
|
|
| |
exersizze | Дата: Воскресенье, 20.01.2013, 14:16 | Сообщение # 9 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| Та же беда, купил там уже 4 дисплея с контроллером HD44780 , ну или подобным. Ни один не поддерживает кириллицу. Так что остается довольствоватся тем что можно использовать свои 8 символов + английскими по написанию схожими с кириллическими.
|
|
| |
ssql | Дата: Пятница, 05.04.2013, 22:20 | Сообщение # 10 |
Группа: Проверенные
Сообщений: 7
Статус: Offline
| \Товарищи, проблемка с программой http://avrproject.ru/ds1307/LCD_RUS.rar. Хочу получить символ Б , но при конвертировании в Lcd20 выдает это:
Rem Б LCD " " Проверить на железе нет пока возможности, но в протеусе пробел.. как быть? Контроллер русифицирован.
Сообщение отредактировал ssql - Пятница, 05.04.2013, 22:21 |
|
| |
exersizze | Дата: Пятница, 05.04.2013, 22:50 | Сообщение # 11 |
Группа: Администраторы
Сообщений: 723
Статус: Offline
| Добавь в протеус библиотеку для поддержки кириллицы, должно отображаться нормально http://www.picbasic.ru/_fr/1/LCDALPHA.dll
|
|
| |
ssql | Дата: Воскресенье, 07.04.2013, 15:46 | Сообщение # 12 |
Группа: Проверенные
Сообщений: 7
Статус: Offline
| Проверил все отлично работает!
Сообщение отредактировал ssql - Воскресенье, 07.04.2013, 16:40 |
|
| |
уни | Дата: Четверг, 31.10.2013, 22:02 | Сообщение # 13 |
Группа: Проверенные
Сообщений: 16
Статус: Offline
| Проект переехал на другой адрес: https://mysvn.ru/avr/bascom/base/
Состав: 1. https://mysvn.ru/avr/bascom/base/LCD_Header.bas 2. https://mysvn.ru/avr/bascom/base/LCD.bas
Тестовый проект: https://mysvn.ru/avr/bascom/HD44780/
Напоминаю, что это самописный модуль для управления LCD на базе драйвера HD44780. На текущий момент вы можете связываться с индикатором по 4-проводной линии, при этом все линии данных и управления могут быть расположены где и как угодно. Выглядит это так:
|
|
| |