Страница 89 из 123
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 24, 2015 14:01:15
СКАЗОЧНИК
А как же на этом сэкономить?
Где толково написано про организацию памяти МК? У всех АВР она одинаковая? Сколько занимает одна страница?
"Черная магия" - классное выражение.
И еще вопросик. Вот я сделал вместо макроса вывод строки, используя символ "конец строки" - $.
Теперь, если я не хочу выводить строку, у меня компилятор ругается, что она не объявлена... Т.е. я не задал
MY: db. "", а в коде к нему идет обращение. Как лучше сделать?
И второе. А если я хочу выводить не одну строку, а несколько разных, ну пусть две на обеих строчках ЖКИ. Как реализовать два массива, а для вызова использовать ту же подпрограмму
rcall MY_LINE?
Код: Выделить всё
MY: .db "My line is here!$"
...
...
...
rcall MY_LINE
...
...
...
MY_LINE: ;
; плюс массив символов добавит по два байта на каждые два знака (и "конец строки")
ldi ZH, high (MY*2) ; Переходим на нашу таблицу символов на самый первый элемент (точнее нулевой)
ldi ZL, low (MY*2)
LETTER: lpm R18, Z+ ; Загружаем элемент в регистр Р18 (загрузка с пост-инкрементом)
cpi R18, 0x24
breq ENDL
rcall DATA_WR
rjmp LETTER
ENDL: ret
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 24, 2015 16:27:34
Alexeyslav
Cделать макрос который будет подставлять переданный в него параметр вместо MY
.macro Print_string
ldi ZH, high (&1*2)
ldi ZL, low (&1*2)
rcall LETTER
.endmacro
А потом в программе раскидать код где надо вывести строки:
Print_string MYstr
Print_string MYstr1
Print_string MYstr2
.....
MYstr: .db 'str 1$'
MYstr1: .db 'str 2$'
MYstr2: .db 'str 3$'
Вобщем, параметр макроса - это метка с которой начинается строка.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Сб янв 24, 2015 19:17:49
Jack_A
СКАЗОЧНИК писал(а):
Где толково написано про организацию памяти МК? У всех АВР она одинаковая? Сколько занимает одна страница?
А как же на этом сэкономить?
В ДШ на АВР явно не употреблено слово "страница", я использовал его для удобства из других МК. К примеру, в конце проги, в той ее части, которую отведем под константы/тексты пишем:
Если теперь по листингу видим, что все тексты не вылезают за адрес 0xC7F, можем считать, что все они на одной "странице" . Тогда загрузку старшего адреса ldi ZH, High (Text*2) можно производить один раз, уже в подпрограмме вывода строки. Но это можно рекомендовать только при большом напряге с памятью программ, т.к. приходится постоянно следить за размещением. У меня это отрыжка тех времен, "когда дискеты были большими, а память - маленькой"

и приходилось экономить каждый байт. потому что предложение "давайте перейдем на более
толстый контроллер" вызвало бы у шефа-частника поток слов, не содержащихся в словаре Ожегова.

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вс янв 25, 2015 06:19:04
akl
Когда это возможно, делаю так. Ограничиваю область ZH=0 и все константы размещаю по адресам меньше 0x7F. Регистр ZH навсегда определяется как 0. Программа начинается с .org=0x100. Т. о. можно связать различную память RAM, EEPROM, FLASH. В последнее время активно использую возможности self-programming the FLASH, поскольку EEPROM, по мне, далеко не безупречна в плане надёжности.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пн янв 26, 2015 14:22:05
СКАЗОЧНИК
Итак... Благодарю всех, кто помог. Выкладываю крайний результат работы, больше переделывать его не буду, ибо считаю достаточным.
От рисования отдельного своего символа (макроса или подпрограммы) отказался окончательно, не функционально это. Кто читал даташит, тот и так знает как нарисовать. Кто не читал, может пользоваться встроенным массивом и рисовать хоть сразу 8 своих символов. Так проще. Еще один момент, что повлияло на это - это то, что не производится чтение текущего адреса из дисплея, поэтому нарисовать свой символ в позицию курсора...

А остальные варианты - это пляска с бубном и много лишних телодвижений и увеличение кода.
Зато теперь можно выводить строками буквы (кроме русских) сколько угодно. )))
И как обещал, провел тестирование на однострочном дисплее
DV16110 желто-зеленая подсветка, производитель
DataVision. Инициализируется он также, как и 1602, т.к. по сути является двухстрочным 8 знаковым, но в одну строку...

Кому не понятно, читайте даташиты на эти контроллеры (которые в названии темы).
Также тестирование постоянное проводилось на двух дисплеях
LCM1602К RoHS (какой-то китайский неизвестный) один с синей подсветкой и белыми буквами, другой наоборот с белой подсветкой и синими буквами.
Еще один дисплей для проверки приносил друг
WH1602A WinStar желто-зеленая подсветка. Этот дисплей тестировался прямо на его плате (тоже ТИНИ2313), только без кварца в 20 МГц, а на внутренней RS - 8 МГц.
На всех работает без изменений кода. Только задавал порты, куда подключены выводы. Кстати, выводы принципиально подключались в разнобой и как попало.

Ну и архив, как всегда. Также там основной файл для ТИНИ2313 с примером инициализации и использованием макросов. Все описано в комментариях файла LCD4.asm. Читайте. Если не понятно, спрОшайте.

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пн янв 26, 2015 17:11:37
amd9800
Прикупил я себе
таких дисплейчиков
Но не нахожу в даташите его потребление в разных режимах.
Сколько потребляет сама подсветка не важно. Меня интересует потребление дисплея без подсветки. И играет роль когда на экране есть какие нибудь цифры или нет для потребления.
И если мне нужно для устройства минимально понизить потребление и дисплей работал пару секунд после нажатия кнопок на устройстве как быть?
Есть команда отключения или физически надо вырубить ему питание.
Между ножками МК и ножками дисплея надо использовать резисторы?

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пн янв 26, 2015 18:06:24
СКАЗОЧНИК
amd9800 писал(а):Но не нахожу в даташите его потребление в разных режимах.
Там посмотрите по потреблению, может чего подскажет. Там на контроллер его, но думаю, сам ЖКИ мало жрет без подсветки. В любом случае там на последних страницах есть. А разница в есть или нету символов - думаю не большая совсем... Хотя, можете измерить и поделиться самыми точными данными.
amd9800 писал(а):Есть команда отключения или физически надо вырубить ему питание.
Команды на отключение... Это типа "Спящий режим" как у МК? Насколько знаю (вкуривая эти даташиты) такой нету.
amd9800 писал(а):надо использовать резисторы?
Если МК и ЖКИ от 5 Вольт питаются, то не надо. Там один подстроечный на контраст токма. ))))
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пн янв 26, 2015 19:27:20
Alexeyslav
Данные по потреблению в даташите на контроллер можно принимать в расчет только если это даташит от конкретного индикатора, сейчас идут контроллеры-капельки и многочисленные аналоги что фиг разберешься что именно там стоит. Надёжней, конечно, подавать питание на индикатор прямо с ножки контроллера а при отключении сначала перевести все выводы подключенные к нему в ноль а потом обесточить индикатор. Это то что заработает с ЛЮБЫМ индикатором и он точно ничего потреблять в паузах не будет. только учти, что каждый раз включая его надо ждать и по полной программе проводить инициализацию.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пн янв 26, 2015 19:30:39
СКАЗОЧНИК
Alexeyslav, благодарю, за подсказку по макросу выше.

Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Ср янв 28, 2015 17:58:07
xkp
Здравствуйте. Имеется знакосимвольный дисплей 20х4. У него одна проблема: в нем нет русского алфавита. За место русского, я так понял там арабские буквы. Возможно ли перешить знакосимвольную таблицу в нем на русскоязычную? Или же только остается пользоваться дополнительными "пустыми" символами, которые в начале программы можно запрограммировать?
был
тут, но дельного там вроде ничего нету, да и тема закрыта.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Ср янв 28, 2015 18:04:22
СКАЗОЧНИК
Нет. Перепрошить невозможно..

Придется только рисовать самому.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 29, 2015 09:06:34
Gudd-Head
СКАЗОЧНИК писал(а):Придется только рисовать самому.
И то всего 8 символов. Остальные использовать англицкие.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 29, 2015 17:46:46
amd9800
Можно сделать библиотеку.
В ней задать таблицу русских символов. А дальше в самой библиотеке схожие символы будут браться из дисплея. А те что не похожи будут подгружаться в дисплей динамически и отображаться.
Наврядли на одном экране будет больше чем 8 русских символов отличных от латинских.
Кстати с подсветкой я решил так что подаю питание через ножку МК и с ограничительным резистором примерно 10мА. Светит нормально.
Надо померить какой расход у экрана и думаю тоже его питать через ножку МК но с другого порта чтоб не перегрузить один порт. таким образом можно будет организовать полный спящий режим.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 29, 2015 19:32:27
Alexeyslav
У 20-символьных вроде таблица пользовательских символов на 16 штук, не?
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 30, 2015 11:22:31
akl
Нет, одновременно максимум 8, не зависит от длины строки, но зато можно менять содержимое много много раз.
HD44780U
64 × 8-bit character generator RAM
8 character fonts (5 × 8 dot)
4 character fonts (5 × 10 dot)
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 30, 2015 14:55:47
Jack_A
akl писал(а):Программа начинается с .org=0x100.
Как такое возможно ? Ведь по адресу 0х0000 располагаются векторы . Или Вы блок констант ставите после векторов, но до 0х7F ? Мне кажется, это неудобно. Я все константы загонял в конец памяти.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 30, 2015 15:54:12
akl
Jack_A писал(а):Или Вы блок констант ставите после векторов, но до 0х7F ?
Да, именно так. Например для 2313 первую страницу, отведённую под вектора не трогаю, остальные 224 (16*2*7) байта можно использовать под константы. При этом ZH всегда 0. Мне так удобнее.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 30, 2015 15:56:47
Gudd-Head
Я тоже массивы констант стараюсь располагать с начала страницы.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 30, 2015 19:12:58
Jack_A
Я так перестал после одного случая : пришлось в Студии отлаживаться по hex'у, исходник потерялся, так Студия так дизассемблировала константы в код, что мне стало тоскливо. Хотя у каждой бабуси -- свои куры-гуси.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 30, 2015 23:54:29
amd9800
Кстати потребление LCD 2x16 примерно 8-10 мА. так что вполне реально его питать через ножку МК.
И когда надо просто отключать экран.