Страница 1 из 1

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

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

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

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

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

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

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

Добавлено: 09.01.2021{, 12:29}
Phazz
можно делать длину строки всегда 16 символов. Недостающее добивать пробелами.

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

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

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

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

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

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

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

Добавлено: 09.01.2021{, 14:49}
Aleksandr2
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}
У меня тоже так.
так происходит если платы работают по условию.
По условию это как?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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