Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

Ответ
Опции темы

LCD1602A сделать backspace

Непрочитано 15.08.2016, 00:08   #1
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию LCD1602A сделать backspace

Привет. Прикрутил матричную клаву к stm32, и повесил дисплей. Вывожу на экран то что набираю на клаве. Вопрос, как организовать, когда нажимаешь на звёздочку, что бы напечатанный символ стирался ну и соответственно курсор возвращался на 1 место назад. Мои мысли такие:

при нажатии на *
1. Узнать текущий адрес курсора
2 Сделать минус на 1 ячейку.
3. Очистить только эту ячейку (остальные не трогать)
4. Поставить курсор на 1 поз назад.

Я не знаю только как делать пункты 1 и 3.
Не подскажете?
Реклама:
supercelt вне форума   Ответить с цитированием
Непрочитано 15.08.2016, 00:51   #2
RECTO
Супер-модератор
 
Регистрация: 09.06.2011
Сообщений: 2,762
Сказал спасибо: 76
Сказали Спасибо 1,840 раз(а) в 668 сообщении(ях)
RECTO на пути к лучшему
По умолчанию Re: LCD1602A сделать backspace

Сообщение от supercelt Посмотреть сообщение
Вопрос, как организовать, когда нажимаешь на звёздочку, что бы напечатанный символ стирался ну и соответственно курсор возвращался на 1 место назад. Мои мысли такие:

при нажатии на *
1. Узнать текущий адрес курсора
2 Сделать минус на 1 ячейку.
3. Очистить только эту ячейку (остальные не трогать)
4. Поставить курсор на 1 поз назад.
Можно сделать гораздо проще, например так:

1) Сдвигаем курсор влево, команда = 10h.
2) Печатаем пробел (очищаем знакоместо), код символа = 20h.
3) Снова сдвигаем курсор влево, команда = 10h.

Вот и всё, удачи!
..

Последний раз редактировалось RECTO; 15.08.2016 в 01:09.
RECTO вне форума   Ответить с цитированием
Сказали "Спасибо" RECTO
supercelt (17.08.2016)
Непрочитано 15.08.2016, 09:56   #3
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: LCD1602A сделать backspace

Хранить строку на дисплее? Зачем? Какой практический смысл?
Easyrider83 вне форума   Ответить с цитированием
Непрочитано 17.08.2016, 21:46   #4
supercelt
Прописка
 
Регистрация: 29.03.2007
Сообщений: 185
Сказал спасибо: 11
Сказали Спасибо 1 раз в 1 сообщении
supercelt на пути к лучшему
По умолчанию Re: LCD1602A сделать backspace

Сообщение от RECTO Посмотреть сообщение
Можно сделать гораздо проще, например так:

1) Сдвигаем курсор влево, команда = 10h.
2) Печатаем пробел (очищаем знакоместо), код символа = 20h.
3) Снова сдвигаем курсор влево, команда = 10h.

Вот и всё, удачи!
..
RECTO!!! Ну... просто, от души!!!! ))
supercelt вне форума   Ответить с цитированием
Непрочитано 17.08.2016, 22:32   #5
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: LCD1602A сделать backspace

Ну а если хранить строки дисплея в оперативке МК в виде массива символов char Str1[16], то тогда достаточно в указанном месте записать в строку символ ' ' (пробел, код 0x20).

pointer-- ;
Str1[pointer] = ' '
;

и отправить всю строку на дисплей. Особенно хорошо это работает при аппаратном выводе на дисплей.
NewWriter вне форума   Ответить с цитированием
Непрочитано 18.08.2016, 01:14   #6
RECTO
Супер-модератор
 
Регистрация: 09.06.2011
Сообщений: 2,762
Сказал спасибо: 76
Сказали Спасибо 1,840 раз(а) в 668 сообщении(ях)
RECTO на пути к лучшему
По умолчанию Re: LCD1602A сделать backspace

Сообщение от NewWriter Посмотреть сообщение
Ну а если хранить строки дисплея в оперативке МК в виде массива символов char Str1[16], то тогда достаточно в указанном месте записать в строку символ ' ' (пробел, код 0x20).
Ну, ещё нужно курсор (точнее, позицию вывода следующего символа) туда будет адресовать, поскольку при этом она должна сдвигаться влево.
RECTO вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книги dosikus Электронная библиотека 11242 29.12.2015 23:45
Как сделать сопротивление из нихрома на 0.22 Ома Immortal44-88 Делимся опытом 8 20.11.2010 17:43
Сравнение массивов .Как лучше сделать? Zemlyanov Микроконтроллеры, АЦП, память и т.д 4 04.03.2010 11:48
Помогите сделать генератор на основе микроконтроллера Piroknight Микроконтроллеры, АЦП, память и т.д 11 13.11.2009 15:18
Как узнать стоимость того, чего я хочу сделать ? expolit Делимся опытом 3 29.12.2007 14:15


Часовой пояс GMT +4, время: 10:53.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.