Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » От мигания ЖКИ дисплея после CLS не избавиться?


От мигания ЖКИ дисплея после CLS не избавиться?

Сообщений 1 страница 19 из 19

1

Доброго всем! Простой алгоритм вывода на ЖКИ (винстар):

-do
-произвели все расчёты
-очистили командой CLS
-вывели данные на экран
-задержка
-loop

всегда приведёт к заметному миганию? И чтобы этого не было, нужно не очищать экран, а просто использовать форматированный вывод типа Fusing, чтобы грамотно затирались предыдущие значения на экране?

0

2

beginer написал(а):

Доброго всем! Простой алгоритм вывода на ЖКИ (винстар):
            -do-произвели все расчёты-очистили командой CLS-вывели данные на экран-задержка-loop
            всегда приведёт к заметному миганию?

А разве Cls гасит экран ?
ИМХО, просто очищает позиции.
С равным успехом можно просто печатать пустую строку на всю длину...

beginer написал(а):

И чтобы этого не было, нужно не очищать экран, а просто использовать форматированный вывод типа Fusing, чтобы грамотно затирались предыдущие значения на экране?

А если выводимая информация меняется по смыслу и позиционированию ?
Для каждого раза фузинги подбирать ? ;)

0

3

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

0

4

beginer написал(а):

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

Ну, например в текущей своей разработке я примерно так и делаю.
Только не трачу время на фузинги, а просто добавляю один-два пробела в конце.

0

5

А как быть, если выводится значение от 0 до 999, а после него уже черз одно знакоместо (при трёхзначном значении) - следующие данные? Тут нужно определять длину значения и по ней выводить нужное количество пробелов следом, по скорости не будет ли это сравнимо с Fusing?

0

6

Mrshilov написал(а):

Для таких "следующих данных" существует команда Lcdat.

А если дисплей не графический ?
Или ей по-барабану ?

0

7

beginer написал(а):

А как быть, если выводится значение от 0 до 999, а после него уже черз одно знакоместо (при трёхзначном значении) - следующие данные? Тут нужно определять длину значения и по ней выводить нужное количество пробелов следом, по скорости не будет ли это сравнимо с Fusing?

Если вы можете гарантировать, что новые данные не будут "длиннее" старых, то в чем проблема ?
Кладите сверху новые в эту же позицию и все... ;)

Я добавляю два пробела, т.к. выводятся значения температуры, а тут может и знак "-" появиться, и значение быть двузначным до запятой...
Гарантированно "закрываю" старое значение.

0

8

я делаю как и Nord
сперва подготовьте данные, потом только CLS и Print

0

9

Nord написал(а):

Если вы можете гарантировать, что новые данные не будут "длиннее" старых, то в чем проблема ?
Кладите сверху новые в эту же позицию и все...
Я добавляю два пробела, т.к. выводятся значения температуры, а тут может и знак "-" появиться, и значение быть двузначным до запятой...
Гарантированно "закрываю" старое значение.

Я делал так:
Вы имеете постоянное кол-во символов строке (пусть i=10).
Вычисляем текущую длину string строки командой Len (пусть b=len(Str)).
Далее i=i-b, это количество оставшихся символов (пробелов).
Далее собираете строку Str=str+space(i), ну и далее выводите на LCD str.
Да, возможно не красиво и коряво, но работает.

0

10

Tankor написал(а):

Я делал так:Вы имеете постоянное кол-во символов строке (пусть i=10).Вычисляем текущую длину string строки командой Len (пусть b=len(Str)).Далее i=i-b, это количество оставшихся символов (пробелов).Далее собираете строку Str=str+space(i), ну и далее выводите на LCD str.Да, возможно не красиво и коряво, но работает.

Вариантов будет множество и все подойдут... ;)
Только универсального не будет, т.к. зачастую разные выводы на дисплей...

В одном из участков программы у меня меняются только две позиции, а оставшееся остается...

Отредактировано Nord (2016-02-18 10:45:22)

0

11

Я вывожу на обычный дисплей без очистки. Обрабатываются строки, пустое заполняется пробелами, и не какого мигания нет всё идеально. Для оптимизации выводится строка только если содержимое изменилось не зависимо от вызова функции обработки.

0

12

Оно когда по 7-и проводному интерфейсу выводится - не видно мерцания. По I2C видно и очень напрягает.

0

13

Mrshilov написал(а):

Для таких "следующих данных" существует команда Lcdat.

Гениальное-просто. Только сейчас допёр. Век живи-век учись.

0

14

Можно использовать текстовая_переменная = format(текстовая_переменная, "          ")
(кол-во пробелов длина выводимой инфы)

0

15

Вообще кто нибудь прикрутил LCD 20*4 через I2C корректно на Bascom?
Лично у меня получилось только подкорректировав библиотеку, чтобы ножку не выпаивать.
Но работает очень криво, мерцает и иногда мусор выводит.

0

16

-NMi- юзал, ничего не корректировал.
Глюки были только при управлении ДПТ с реверсом и то, очень редко вылезали кракозябры. Двигатель был непосредственно у дисплея. Списывал на помехи по питанию.
http://s3.uploads.ru/t/OXcCf.jpg

0

17

MACTEPok
Это что за аппарат такой?

0

18

Стенд для проверки кулачковых переключателей. Собран из этих же переключателей ) Кол-во контактов от 2 до 24. Кол-во положений - до 12. На матрице выдает схему переключателя.
http://s2.uploads.ru/t/qlvLQ.jpg

0

19

Вот интересно же, что только народ на Баскоме не делает!
Может и в космос что-то на Баскоме летает?
Наверное нужно галерею наших достижений сделать, чтобы каждый смог выложить своё творение для понимания глубины проникновения баскомизма в наши ряды.

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » От мигания ЖКИ дисплея после CLS не избавиться?