| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
LCD1602A сделать backspace
15.08.2016, 00:08
|
#1
|
|
Прописка
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
|
LCD1602A сделать backspace
Привет. Прикрутил матричную клаву к stm32, и повесил дисплей. Вывожу на экран то что набираю на клаве. Вопрос, как организовать, когда нажимаешь на звёздочку, что бы напечатанный символ стирался ну и соответственно курсор возвращался на 1 место назад. Мои мысли такие:
при нажатии на *
1. Узнать текущий адрес курсора
2 Сделать минус на 1 ячейку.
3. Очистить только эту ячейку (остальные не трогать)
4. Поставить курсор на 1 поз назад.
Я не знаю только как делать пункты 1 и 3.
Не подскажете?
|
|
|
|
15.08.2016, 00:51
|
#2
|
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,762
Сказал спасибо: 76
Сказали Спасибо 1,840 раз(а) в 668 сообщении(ях)
|
Re: LCD1602A сделать backspace
Сообщение от supercelt
|
Вопрос, как организовать, когда нажимаешь на звёздочку, что бы напечатанный символ стирался ну и соответственно курсор возвращался на 1 место назад. Мои мысли такие:
при нажатии на *
1. Узнать текущий адрес курсора
2 Сделать минус на 1 ячейку.
3. Очистить только эту ячейку (остальные не трогать)
4. Поставить курсор на 1 поз назад.
|
Можно сделать гораздо проще, например так:
1) Сдвигаем курсор влево, команда = 10h.
2) Печатаем пробел (очищаем знакоместо), код символа = 20h.
3) Снова сдвигаем курсор влево, команда = 10h.
Вот и всё, удачи!
..
Последний раз редактировалось RECTO; 15.08.2016 в 01:09.
|
|
|
|
15.08.2016, 09:56
|
#3
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
|
Re: LCD1602A сделать backspace
Хранить строку на дисплее? Зачем? Какой практический смысл?
|
|
|
|
17.08.2016, 21:46
|
#4
|
|
Прописка
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
|
Re: LCD1602A сделать backspace
Сообщение от RECTO
|
Можно сделать гораздо проще, например так:
1) Сдвигаем курсор влево, команда = 10h.
2) Печатаем пробел (очищаем знакоместо), код символа = 20h.
3) Снова сдвигаем курсор влево, команда = 10h.
Вот и всё, удачи!
..
|
RECTO!!! Ну... просто, от души!!!! ))
|
|
|
|
17.08.2016, 22:32
|
#5
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
|
Re: LCD1602A сделать backspace
Ну а если хранить строки дисплея в оперативке МК в виде массива символов char Str1[16], то тогда достаточно в указанном месте записать в строку символ ' ' (пробел, код 0x20).
pointer-- ;
Str1[pointer] = ' ' ;
и отправить всю строку на дисплей. Особенно хорошо это работает при аппаратном выводе на дисплей.
|
|
|
|
18.08.2016, 01:14
|
#6
|
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,762
Сказал спасибо: 76
Сказали Спасибо 1,840 раз(а) в 668 сообщении(ях)
|
Re: LCD1602A сделать backspace
Сообщение от NewWriter
|
|
Ну а если хранить строки дисплея в оперативке МК в виде массива символов char Str1[16], то тогда достаточно в указанном месте записать в строку символ ' ' (пробел, код 0x20).
|
Ну, ещё нужно курсор (точнее, позицию вывода следующего символа) туда будет адресовать, поскольку при этом она должна сдвигаться влево.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:53.
|
|