Выравнивание символов по правому краю

Сдвиг числа влево для дисплея 1602,2004

Вопросы от новичков
Ответить
MTSnik
Рядовой
Сообщения: 60
Зарегистрирован: 28.09.2017{, 12:14}
Репутация: 1
Откуда: Tashkent

Выравнивание символов по правому краю

#1

Сообщение MTSnik » 27.12.2019{, 18:28}

Всем привет. Возможно плохо искал, но не смог найти на форуме как сдвинуть число влево при подсчете на один символ. Накидал схемку, работает. Единицы,десятки,сотни,тысячи. Но в схеме идет привязка к нескольким блокам дисплеев. Возможно ли как-то по-другому собрать схему чтоб был один блок дисплея и сдвиг осуществлялся через вход?
Вложения
сдвиг.flp
.
(116.48 КБ) 45 скачиваний

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

Сдвиг числ влево.

#2

Сообщение edyapd » 27.12.2019{, 18:55}

Кое-как понял, что вы написали. Сказали бы проще "Как выравнять строку по правому краю на дисплее HD44780?"
Если честно, то я не знаю. Но вашу схему я бы маленько упростил. После поиска длины строки поставил DMS (демультиплексор). И с его помощью выбирал экран.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Сдвиг числ влево.

#3

Сообщение Sancho » 27.12.2019{, 19:13}

MTSnik, Скажите, Эдуард, edyapd, правильно уловил Вашу затею?
Если да, тоя где-то выкладывал блок.
Но можно и штатными средствами.

Отправлено спустя 2 минуты 3 секунды:
Нарисуйте хотя-бы от руки на бумаге , сфоткайте и выложите зодумку.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

MTSnik
Рядовой
Сообщения: 60
Зарегистрирован: 28.09.2017{, 12:14}
Репутация: 1
Откуда: Tashkent

Сдвиг числ влево.

#4

Сообщение MTSnik » 27.12.2019{, 19:32}

Верно.
То есть идет перебор чисел. Например единицы (числа от 0...9) располагаются на 16столбце, при переходе с10 до 99 идет отображение 15,16 столбце. Сотни 14,15,16. Тысячи 13,14,15,16 и т.д.

Отправлено спустя 3 минуты 13 секунд:
____________5
___________23
__________100
_________3890
Так

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Сдвиг числ влево.

#5

Сообщение Sancho » 27.12.2019{, 19:38}

MTSnik, Понял, сейчас набросаю штатными блоками...

Отправлено спустя 16 минут 55 секунд:
Типа так

Отправлено спустя 2 минуты 54 секунды:
Это для неспешных проектов.
Вложения
Дополняем строку слева пробелами_v01.flp
(90.26 КБ) 45 скачиваний
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

MTSnik
Рядовой
Сообщения: 60
Зарегистрирован: 28.09.2017{, 12:14}
Репутация: 1
Откуда: Tashkent

Сдвиг числ влево.

#6

Сообщение MTSnik » 28.12.2019{, 05:52}

:smile9: проверил , работает. СПАСИБО. :smile9:
Вложения
20191228_074508.gif
.
20191228_074508.gif (1.62 МБ) 554 просмотра

MTSnik
Рядовой
Сообщения: 60
Зарегистрирован: 28.09.2017{, 12:14}
Репутация: 1
Откуда: Tashkent

Сдвиг числ влево.

#7

Сообщение MTSnik » 28.12.2019{, 06:11}

По совету Edyapd переделал свой проект, добавил [dms] пришлось еще добавить блок (вычитание). Без него число начинало показ с 19Го столбца.

Отправлено спустя 5 минут 11 секунд:
Как-то так.
Вложения
сдвиг2.flp
.
(100.99 КБ) 37 скачиваний

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

Сдвиг числ влево.

#8

Сообщение edyapd » 28.12.2019{, 07:26}

MTSnik, уберите блок вычитания. А на первый дисплей возьмите с Q1, второй с Q2 и т.д.

MTSnik
Рядовой
Сообщения: 60
Зарегистрирован: 28.09.2017{, 12:14}
Репутация: 1
Откуда: Tashkent

Сдвиг числ влево.

#9

Сообщение MTSnik » 28.12.2019{, 07:56}

Понятно. Исправил.
Вложения
сдвиг3.flp
.
(77.67 КБ) 43 скачивания

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Сдвиг числ влево.

#10

Сообщение Sancho » 28.12.2019{, 08:26}

MTSnik, edyapd, По моему - неправильна сама идея по сути в том формате, в котором сейчас есть блок для дисплея. Код - просто монстр...
Если у блока дисплея появится вход позиции - тогда да!
Сама плата №2 в посте 5 имеет всего
несколько строк цикла. И всё.

Код: Выделить всё

//Плата:2
//Наименование:Дополняем пробелами слева
//Комментарии:Значение - сколько хотим получить символов всего
while (_gtv2 != 5) {
_gtv1 = ((String("")) + (_gtv1));
_gtv2 = (_gtv2)+(1);
}
//Плата:3
При желании можно ускорить проект, добавив детектор изменения и обработку переменной при этом.
ИМХО.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

Сдвиг числ влево.

#11

Сообщение edyapd » 28.12.2019{, 08:39}

Sancho, я разве спорю? Даже более, на основе вашего решения хотел сделать ПБ. Просто если это будет единичный случай, то не хочется заморачиваться. А если это супер нужная вещь, то стоит просить автора программы, чтобы добавил возможность выбора координат через вход.
MTSnik, возможно просто не решился добавлять ещё две дополнительные платы.
Просто вы смотрите на код, а он на визуальное восприятие схемы(моё мнение).

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Сдвиг числ влево.

#12

Сообщение Sancho » 28.12.2019{, 09:03}

edyapd писал(а):
28.12.2019{, 08:39}
хотел сделать ПБ
Не нашёл сначала...
Но там немного по другому.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

Сдвиг числ влево.

#13

Сообщение edyapd » 28.12.2019{, 09:49}

Интересно, а так будет работать? У меня такого дисплея нет, чтобы проверить.
сдвиг3_1.flp
(69.66 КБ) 34 скачивания
Отправлено спустя 2 минуты 33 секунды:
Если так не заработает, тогда надо добавить мультиплексору ещё один вход. На всех входах константу увеличить на один пробел. А вывод на дисплей сдвинуть на одну позицию влево.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Сдвиг числ влево.

#14

Сообщение Sancho » 28.12.2019{, 10:18}

edyapd писал(а):
28.12.2019{, 09:52}
Интересно, а так будет работать?
Будет. Только нужно корректно вставить константы :)
Или, что-бы не запутаться, вот так:
Вложения
сдвиг3_2.flp
(87.33 КБ) 36 скачиваний
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

Сдвиг числ влево.

#15

Сообщение edyapd » 28.12.2019{, 10:48}

Так я посмотрел, что топикстартер использует только четырёхзначные числа, поэтому и сделал такие константы.
У меня просто сомнения были, что будет на выходе у MUX(а соответственно на входе строкового сумматора), когда на входе будет 4.
Если там будет null, то это как раз то, что надо.
Sancho, а ваш проект получается для пятизначных цифр.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Сдвиг числ влево.

#16

Сообщение Sancho » 28.12.2019{, 10:53}

edyapd писал(а):
28.12.2019{, 10:48}
а ваш проект получается для пятизначных цифр.
как-бы да, но это только как пример, как идея не запутаться. но есть ещё отрицательные числа, у нас ведь int, а не uint, -12345, а это шесть символов :)
Под каждый конкретный случай делать необходимое - и будет ок.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

MTSnik
Рядовой
Сообщения: 60
Зарегистрирован: 28.09.2017{, 12:14}
Репутация: 1
Откуда: Tashkent

Сдвиг числ влево.

#17

Сообщение MTSnik » 28.12.2019{, 11:39}

Я привел пример для теста, дальше лень было делать. Поэтому только на 4 цифры. Сборка ув. Sancho на 5, после идет счет сначала.

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Сдвиг числ влево.

#18

Сообщение Sancho » 28.12.2019{, 12:19}

Решил, таки, допилить :)
Каждый переделает или сделает дополнительные под свои нужду, при необходимости.
Вложения
Дополняем строку слева пробелами_v02.flp
(62.5 КБ) 48 скачиваний
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

Сдвиг числ влево.

#19

Сообщение edyapd » 28.12.2019{, 12:28}

Sancho писал(а):
28.12.2019{, 10:53}
но это только как пример, как идея не запутаться ....
Под каждый конкретный случай делать необходимое
Но тогда и в блоке дисплея надо было исправить. Вывод должен начинаться с 16-го знакоместа.
А так да, мы любую программу делаем под конкретный случай. :yes:
И тогда пожалуй я бы внёс ещё одно исправление. После блока "Вычитание", я бы поставил переменную. И уже эту переменную подавал на блок MUX. Как мне кажется скорость маленько должна была бы возрасти. Иначе длина строки высчитывается для каждого входа MUX.
СпойлерПоказать
Не по теме
Вот ещё бы попросить автора программы изменить код MUX и DMS. Сделать вместо конструкции if - else if. Скорость выполнения могла бы слегка увеличиться.

Ответить

Вернуться в «Начинающим»