Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

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

 
Опции темы
Непрочитано 15.08.2016, 00:08  
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  
RECTO
Супер-модератор
 
Регистрация: 09.06.2011
Сообщений: 2,659
Сказал спасибо: 74
Сказали Спасибо 1,801 раз(а) в 653 сообщении(ях)
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  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: LCD1602A сделать backspace

Хранить строку на дисплее? Зачем? Какой практический смысл?
Easyrider83 вне форума  
Непрочитано 17.08.2016, 21:46  
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  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: LCD1602A сделать backspace

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

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

и отправить всю строку на дисплей. Особенно хорошо это работает при аппаратном выводе на дисплей.
NewWriter вне форума  
Непрочитано 18.08.2016, 01:14  
RECTO
Супер-модератор
 
Регистрация: 09.06.2011
Сообщений: 2,659
Сказал спасибо: 74
Сказали Спасибо 1,801 раз(а) в 653 сообщении(ях)
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, время: 21:16.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot