LCD1602 остаются знаки с прошлой строки

Пользовательские блоки для вывода информации на дисплеи и индикаторы, управления тачскрином, различными клавиатурами, добавления русских шрифтов для вывода на дисплеи типа HD44780
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Ответить
Aleksandr2
Рядовой
Сообщения: 70
Зарегистрирован: 11.05.2020{, 02:12}
Репутация: 3
Откуда: Владимир
Имя: Александр

LCD1602 остаются знаки с прошлой строки

#1

Сообщение Aleksandr2 » 09.01.2021{, 09:43}

Дисплей LCD1602. На нижней строке в определенных режимах отображается время, температура, настройка дней недели. Заметил особенность. Если надпись в предыдущем режиме занимает в строке 16-ть символов, а в последующем режиме надпись в этой же строке меньше 16-ти символов, то остаются непогашенными оставшиеся не занятыми символы предыдущего режима работы. У меня одного так?

kbplug
Рядовой
Сообщения: 61
Зарегистрирован: 10.03.2017{, 09:54}
Репутация: 19

LCD1602 остаются знаки с прошлой строки

#2

Сообщение kbplug » 09.01.2021{, 10:45}

У меня тоже так. Я при переключении режимов использую на один цикл плату из очисткой дисплея. На входе D значение заполнено пробелами.
Знімок екрану_2021-01-09_09-41-51.png
Знімок екрану_2021-01-09_09-41-51.png (15.11 КБ) 1476 просмотров

Aleksandr2
Рядовой
Сообщения: 70
Зарегистрирован: 11.05.2020{, 02:12}
Репутация: 3
Откуда: Владимир
Имя: Александр

LCD1602 остаются знаки с прошлой строки

#3

Сообщение Aleksandr2 » 09.01.2021{, 12:00}

kbplug писал(а):
09.01.2021{, 10:45}
У меня тоже так. Я при переключении режимов использую на один цикл плату из очисткой дисплея. На входе D значение заполнено пробелами.
Знімок екрану_2021-01-09_09-41-51.png
Я в принципе тоже так сделал, только очистку экрана не делал. Просто пробелы добавил там где надо.
Но может существует более изящный способ побороть лишние символы. И хотелось бы знать откуда ноги растут у этой проблемы. Может это вообще нормальная работа для LCD1602?

Аватара пользователя
Phazz
Полковник
Сообщения: 2552
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

LCD1602 остаются знаки с прошлой строки

#4

Сообщение Phazz » 09.01.2021{, 12:29}

можно делать длину строки всегда 16 символов. Недостающее добивать пробелами.

Aleksandr2
Рядовой
Сообщения: 70
Зарегистрирован: 11.05.2020{, 02:12}
Репутация: 3
Откуда: Владимир
Имя: Александр

LCD1602 остаются знаки с прошлой строки

#5

Сообщение Aleksandr2 » 09.01.2021{, 13:41}

Phazz писал(а):
09.01.2021{, 12:29}
можно делать длину строки всегда 16 символов. Недостающее добивать пробелами.
Я так и сделал.
Вопрос в том, что это косяк дисплея, библиотеки или еще чего-нибудь, или это штатная работа дисплея и надо, при смене текста, специально принимать меры для удаления лишних символов (например пробелами)?

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

LCD1602 остаются знаки с прошлой строки

#6

Сообщение Dryundel » 09.01.2021{, 13:56}

Aleksandr2 писал(а):
09.01.2021{, 09:43}
Дисплей LCD1602. На нижней строке в определенных режимах отображается время, температура, настройка дней недели. Заметил особенность. Если надпись в предыдущем режиме занимает в строке 16-ть символов, а в последующем режиме надпись в этой же строке меньше 16-ти символов, то остаются непогашенными оставшиеся не занятыми символы предыдущего режима работы.
Какая версия FLProg?
Проект выложите.

vovka1973
Майор
Сообщения: 1060
Зарегистрирован: 14.02.2016{, 14:16}
Репутация: 42
Откуда: kazahstan

LCD1602 остаются знаки с прошлой строки

#7

Сообщение vovka1973 » 09.01.2021{, 14:24}

kbplug писал(а):
09.01.2021{, 10:45}
У меня тоже так.
так происходит если платы работают по условию.
Изображение

Aleksandr2
Рядовой
Сообщения: 70
Зарегистрирован: 11.05.2020{, 02:12}
Репутация: 3
Откуда: Владимир
Имя: Александр

LCD1602 остаются знаки с прошлой строки

#8

Сообщение Aleksandr2 » 09.01.2021{, 14:49}

Dryundel писал(а):
09.01.2021{, 13:56}
Aleksandr2 писал(а):
09.01.2021{, 09:43}
Дисплей LCD1602. На нижней строке в определенных режимах отображается время, температура, настройка дней недели. Заметил особенность. Если надпись в предыдущем режиме занимает в строке 16-ть символов, а в последующем режиме надпись в этой же строке меньше 16-ти символов, то остаются непогашенными оставшиеся не занятыми символы предыдущего режима работы.
Какая версия FLProg?
Проект выложите.
Версия 7.3.0

Отправлено спустя 46 секунд:
vovka1973 писал(а):
09.01.2021{, 14:24}
kbplug писал(а):
09.01.2021{, 10:45}
У меня тоже так.
так происходит если платы работают по условию.
По условию это как?
Вложения
Недельный терморегулятор MEGA 2560 9.01.21.flp.zip
(613.39 КБ) 61 скачивание

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

LCD1602 остаются знаки с прошлой строки

#9

Сообщение Dryundel » 09.01.2021{, 17:13}

Aleksandr2 писал(а):
09.01.2021{, 14:50}
По условию это как?
Не стоит блоки дисплея размещать в платах работающих по условию. Это лишает их возможности правильно отрабатывать стирание.

Aleksandr2
Рядовой
Сообщения: 70
Зарегистрирован: 11.05.2020{, 02:12}
Репутация: 3
Откуда: Владимир
Имя: Александр

LCD1602 остаются знаки с прошлой строки

#10

Сообщение Aleksandr2 » 09.01.2021{, 17:31}

Dryundel писал(а):
09.01.2021{, 17:13}
Aleksandr2 писал(а):
09.01.2021{, 14:50}
По условию это как?
Не стоит блоки дисплея размещать в платах работающих по условию. Это лишает их возможности правильно отрабатывать стирание.
Можете объяснить, что такое платы работающие по условию?

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

LCD1602 остаются знаки с прошлой строки

#11

Сообщение Dryundel » 09.01.2021{, 17:44}

Aleksandr2 писал(а):
09.01.2021{, 17:31}
Можете объяснить, что такое платы работающие по условию?
Каждая плата может работать или не работать по определенному условию. (Двойной клик по шапке платы)

Отправлено спустя 2 минуты 55 секунд:
Aleksandr2, в вашем проекте таких плат нет. Проблема со стиранием вероятно связана с использованием пользовательского блока дисплея.

Aleksandr2
Рядовой
Сообщения: 70
Зарегистрирован: 11.05.2020{, 02:12}
Репутация: 3
Откуда: Владимир
Имя: Александр

LCD1602 остаются знаки с прошлой строки

#12

Сообщение Aleksandr2 » 09.01.2021{, 18:22}

Dryundel писал(а):
09.01.2021{, 17:47}
Aleksandr2 писал(а):
09.01.2021{, 17:31}
Можете объяснить, что такое платы работающие по условию?
Каждая плата может работать или не работать по определенному условию. (Двойной клик по шапке платы)

Отправлено спустя 2 минуты 55 секунд:
Aleksandr2, в вашем проекте таких плат нет. Проблема со стиранием вероятно связана с использованием пользовательского блока дисплея.
Спасибо Андрей!
Наверное Вы правы, тем более, что такое поведение дисплея не у меня одного.

Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 95
Откуда: Bukovyna
Имя: Василий

LCD1602 остаются знаки с прошлой строки

#13

Сообщение Labu559 » 09.01.2021{, 19:04}

Aleksandr2,
Для Вашей ситуации решение находится здесь.
Очистка дисплеев- увеличение в два раза времени обновления данных и без того медленного процесса.
При применении штатного блока LCD HD44780 происходит
очистка дисплея вначале каждого циклаПоказать
ClearDisplay.png
независимо от того находится блок в плате выполняющейся по условию или нет. Дисплей конечно очищается, а переменная с данными дисплея нет, потому при получении разрешения/в порядке очереди старые данные поступают в очищенный дисплей, обновляются и опять идут в дисплей, но уже без очистки (флаг сброшен _isNeedClearDisp1= 0). Можно делать/делают: 1) по детектору изменения данных делать очистку, после слать данные (недостаток выше описан, данные прыгают по дисплею); 2) проверять длинну данных и если меньше предыдущей делать очистку, потом слать данные (недостатки те же) ; 3) формировать данные одной фиксированной длинны/колличества символов/знакомест(не всегда возможно); 4) формировать длинну строк по числу всех знакомест дисплея (блоки по ссылке), для двух последних очистка вообще лишняя процедура, так как новые данные заменяют собой старые полностью. Ваш проект поправить не могу, моя версия 6.3.1 его не открывает.
Удачи!
У Вас в профиле заблокированы личные сообщения.

Aleksandr2
Рядовой
Сообщения: 70
Зарегистрирован: 11.05.2020{, 02:12}
Репутация: 3
Откуда: Владимир
Имя: Александр

LCD1602 остаются знаки с прошлой строки

#14

Сообщение Aleksandr2 » 10.01.2021{, 04:55}

Labu559 писал(а):
09.01.2021{, 19:04}
Aleksandr2,
Для Вашей ситуации решение находится здесь.
Очистка дисплеев- увеличение в два раза времени обновления данных и без того медленного процесса.
При применении штатного блока LCD HD44780 происходит
очистка дисплея вначале каждого циклаПоказать
ClearDisplay.png
независимо от того находится блок в плате выполняющейся по условию или нет. Дисплей конечно очищается, а переменная с данными дисплея нет, потому при получении разрешения/в порядке очереди старые данные поступают в очищенный дисплей, обновляются и опять идут в дисплей, но уже без очистки (флаг сброшен _isNeedClearDisp1= 0). Можно делать/делают: 1) по детектору изменения данных делать очистку, после слать данные (недостаток выше описан, данные прыгают по дисплею); 2) проверять длинну данных и если меньше предыдущей делать очистку, потом слать данные (недостатки те же) ; 3) формировать данные одной фиксированной длинны/колличества символов/знакомест(не всегда возможно); 4) формировать длинну строк по числу всех знакомест дисплея (блоки по ссылке), для двух последних очистка вообще лишняя процедура, так как новые данные заменяют собой старые полностью. Ваш проект поправить не могу, моя версия 6.3.1 его не открывает.
Удачи!
У Вас в профиле заблокированы личные сообщения.
Спасибо Василий!

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

LCD1602 остаются знаки с прошлой строки

#15

Сообщение Dryundel » 10.01.2021{, 09:44}

Labu559 писал(а):
09.01.2021{, 19:04}
Для Вашей ситуации решение находится здесь.
Aleksandr2 писал(а):
10.01.2021{, 04:55}
Спасибо Василий!
Aleksandr2, скорее всего Вам это решение не подойдет. Вы используете русифицирующий блок, а предлагаемый Labu559 блок, не сможет работать с кириллическими символами, т.к. основан на функции length(), которая не умеет этого делать.

Aleksandr2
Рядовой
Сообщения: 70
Зарегистрирован: 11.05.2020{, 02:12}
Репутация: 3
Откуда: Владимир
Имя: Александр

LCD1602 остаются знаки с прошлой строки

#16

Сообщение Aleksandr2 » 10.01.2021{, 14:06}

Dryundel писал(а):
10.01.2021{, 09:44}
Labu559 писал(а):
09.01.2021{, 19:04}
Для Вашей ситуации решение находится здесь.
Aleksandr2 писал(а):
10.01.2021{, 04:55}
Спасибо Василий!
Aleksandr2, скорее всего Вам это решение не подойдет. Вы используете русифицирующий блок, а предлагаемый Labu559 блок, не сможет работать с кириллическими символами, т.к. основан на функции length(), которая не умеет этого делать.
В этот раз я заполнил лишние позиции в строках пробелами. Конечно не слишком изящно в изготовлении устройства, но пользователи (жена и сын) ничего не заметят. Сейчас все работает правильно и никаких лишних символов нет.
Если найдется более красивое решение, то буду рад.
Спасибо!

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

LCD1602 остаются знаки с прошлой строки

#17

Сообщение Dryundel » 10.01.2021{, 14:30}

Aleksandr2 писал(а):
10.01.2021{, 14:06}
Если найдется более красивое решение, то буду рад.
viewtopic.php?t=6899

Aleksandr2
Рядовой
Сообщения: 70
Зарегистрирован: 11.05.2020{, 02:12}
Репутация: 3
Откуда: Владимир
Имя: Александр

LCD1602 остаются знаки с прошлой строки

#18

Сообщение Aleksandr2 » 10.01.2021{, 14:47}

Dryundel писал(а):
10.01.2021{, 14:30}
Aleksandr2 писал(а):
10.01.2021{, 14:06}
Если найдется более красивое решение, то буду рад.
viewtopic.php?t=6899
Андрей!
Блок скачал. Как-нибудь обязательно попробую.
Только этот проект уже оставлю как есть. Устройство собрано и обкатано. Меня устраивает.
А Вам спасибо!
Мне до Вас далеко!
:smile14:

Labu559
Лейтенант
Сообщения: 359
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 95
Откуда: Bukovyna
Имя: Василий

LCD1602 остаются знаки с прошлой строки

#19

Сообщение Labu559 » 10.01.2021{, 15:32}

Aleksandr2 писал(а):
10.01.2021{, 14:06}
Если найдется более красивое решение, то буду рад.
Не знаю на сколько "красивое", но для HD44780 c загруженными пользовательскими знаками (кириллическими символами) в CGRAM необходимо просто отделить/изъять комманду 0х80 доступа к пользовательской памяти от адреса регистра, которых 8-мь (в таком случае функция length() работает как положено) и ес-но такая версия блока тоже имеется на стадии "зависшего" тестирования, хотя мной и проверенная давно, но уже забытая. Если укажете чей/откуда блок с руссификацией используете (не для 7-х версий),- смогу проверить на совместимость. Тут вероятно о универсальности говорить не приходится, у каждого автора свои методы/биб-ки. Если разрешите личные сообщения в своём профиле- предоставлю Вам тест и мою благодарность. В паблик тесты не публикую- не хочу загаживать форум непроверенными блоками.
Если Ваша цель уже достигнута- игнорируйте это сообщение.

Ответить

Вернуться в «Дисплеи, индикаторы и клавиатуры»