Блок для дисплея на чипе HD44780
Блок для дисплея на чипе HD44780
Добрый день, форумчане!
Очень часто в своих проектах приходиться выводить информацию на дисплеи, он есть в стандартных блоках. Для изменения адреса, строки и столбца нужно входить в сам блок и проводить редактирование в нем. Очень хочется делать это с помощью переменных и вносить изменение в ходе проекта с помощью входов на это блок, то есть в проекте 1 блок для дисплея и в зависимости от требований и блока выбора sel я мог бы перемещаться по строкам и столбцам. Такой блок я написал, но есть проблема при обращении к нему он не затирает старые символы, что были записаны ранее. Может кто помочь "допилить" или указать на ошибку?
Очень часто в своих проектах приходиться выводить информацию на дисплеи, он есть в стандартных блоках. Для изменения адреса, строки и столбца нужно входить в сам блок и проводить редактирование в нем. Очень хочется делать это с помощью переменных и вносить изменение в ходе проекта с помощью входов на это блок, то есть в проекте 1 блок для дисплея и в зависимости от требований и блока выбора sel я мог бы перемещаться по строкам и столбцам. Такой блок я написал, но есть проблема при обращении к нему он не затирает старые символы, что были записаны ранее. Может кто помочь "допилить" или указать на ошибку?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Блок для дисплея на чипе HD44780
Если только проблема в очистке, тоnotfun писал(а): 28 июл 2020, 21:54 есть проблема при обращении к нему он не затирает старые символы
Код: Выделить всё
if (En) {
lcd.clear(); // Очистка дисплея
--Stroka;
--Stolbec;
lcd.setCursor(Stolbec, Stroka); // Установка курсора в начало первой строки
lcd.print(D); // Набор текста на первой строке
}
Блок для дисплея на чипе HD44780
я так пробовал, не работает, так как при 1 на входе En - в каждом цикле программы будет происходить очистка дисплея. По логике, нужно очистить при каждом новом обращении. Возможно добавить вход "Clr" и перед ним детектор изменения числа
Блок для дисплея на чипе HD44780
Вроде получилось, спасибо. добавил вход Clr, и условие при 1 на вход очистит дисплей, буду использовать в связке с rtrig и входом En
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Блок для дисплея на чипе HD44780
А для чего, тогда по Вашему вход Еn, что-бы блок бомбил в каждом цикле при статичных данных? Ставьте детектор изменения данных на вход Еn- это и есть его основное назначение. Очистка дисплея необходима если предыдущие данные длиннее текущих, её менее ресурсозатратно сделать всякий раз при смене данных, чем анализировать эти данные.notfun писал(а): 28 июл 2020, 23:12 так как при 1 на входе En - в каждом цикле программы будет происходить очистка дисплея
Блок для дисплея на чипе HD44780
Например я хочу вводить номер телефона в епром используя дисплей и енкодер. Получается на каждый символ мне придется ставить свой дисплей с фиксированной строкой и столбцом. А могу использовать счетчик для перемещения по строке, значение с счетчика прицепить к входу блока дисплея "stolbec" и крутя энкодер двигаться по номеру для редактирования нужного числаav писал(а): 28 июл 2020, 23:23 [ref]notfun[/ref], а почему вы не используете хоть на каждый символ строк по блоку ? Понимаю что блоков будет куча и не красиво, но новый добавленный блок не займет слишком много памяти (допустим выводите слово из пяти символов одним блоком или пять символов пятью блоками разница будет небольшой). Единственная проблема в управлении этими блоками когда на какой блок нужно подать сигнал на вывод на дисплей или отключить вывод на дисплей.
Отправлено спустя 4 минуты 22 секунды:
Я пробовал добавить как Вы написали, наблюдал мерцание дисплея, для себя сделал вывод, что очистка в каждом циклеLabu559 писал(а): 28 июл 2020, 23:28А для чего, тогда по Вашему вход Еn, что-бы блок бомбил в каждом цикле при статичных данных? Ставьте детектор изменения данных на вход Еn- это и есть его основное назначение. Очистка дисплея необходима если предыдущие данные длиннее текущих, её менее ресурсозатратно сделать всякий раз при смене данных, чем анализировать эти данные.notfun писал(а): 28 июл 2020, 23:12 так как при 1 на входе En - в каждом цикле программы будет происходить очистка дисплея
-
- Полковник
- Сообщения: 4009
- Зарегистрирован: 12 фев 2016, 11:40
- Откуда: Шатура
- Имя: Энвер
- Благодарил (а): 137 раз
- Поблагодарили: 153 раза
Блок для дисплея на чипе HD44780
У стандартного блока есть совокупность достоинств, но есть и недостатки:
1. Он "тормозит" работу основной программы. Порой существенно.
2. Он работает со строковыми переменными - это и память, и время, и сложность формирования поля при изменении параметров.
3.
В основном эти проблемы решены блоками и библиотекой ecoins. Поддерживает русификацию для дисплеев с прошитой кириллицей.
Но там иные походы работы по сравнению со стандартным блоком.
1. Он "тормозит" работу основной программы. Порой существенно.
2. Он работает со строковыми переменными - это и память, и время, и сложность формирования поля при изменении параметров.
3.
-----------------------notfun писал(а): 28 июл 2020, 21:54 Для изменения адреса, строки и столбца нужно входить в сам блок и проводить редактирование в нем. Очень хочется делать это с помощью переменных и вносить изменение в ходе проекта с помощью входов на это блок, то есть в проекте 1 блок для дисплея и в зависимости от требований и блока выбора sel я мог бы перемещаться по строкам и столбцам. Такой блок я написал, но есть проблема при обращении к нему он не затирает старые символы, что были записаны ранее. Может кто помочь "допилить" или указать на ошибку?
В основном эти проблемы решены блоками и библиотекой ecoins. Поддерживает русификацию для дисплеев с прошитой кириллицей.
Но там иные походы работы по сравнению со стандартным блоком.
Блок для дисплея на чипе HD44780
Спасибо, посмотрю в этом направленииecoins писал(а): 28 июл 2020, 23:42 В основном эти проблемы решены блоками и библиотекой ecoins. Поддерживает русификацию для дисплеев с прошитой кириллицей.
Но там иные походы работы по сравнению со стандартным блоком.
Буду экспериментировать, спасибо за совет. Но в случае с номером телефона затрется все, кроме текущей выводимой позиции. Пока использую вход En с rtrig для первоначальной очистки.av писал(а): 28 июл 2020, 23:42 Сделайте в коде по условию "if" сравнение старого значения на входе и нового, а так же сравнение старых координат с новыми и если они не равны очищайте командой очистки и выводите новое значение или старое значение но по новым координатам.
Блок для дисплея на чипе HD44780
Прямо сейчас думаю над этим вопросом, в мыслях после достижения определенной ячейки будет сообщение о сохранении номера, если подтверждаю, то собранная из строки UlongInt запишу в епром, если нет счетчик возвращается в 1 ячейку с номеромav писал(а): 29 июл 2020, 00:03 Если да, тогда следующий вопрос как вы раскладываете строку для последующего ее изменения ?
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость