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

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

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

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

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

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

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

 
Опции темы
Непрочитано 30.11.2006, 13:22  
sma-etu
Частый гость
 
Регистрация: 20.11.2006
Сообщений: 19
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
sma-etu на пути к лучшему
По умолчанию mega128

Народ есть задача сделать набор текста который будет выводиться на жк панель. Набор осуществляеться как в телефоне 4 буквы на кнопке.
Контроллер mega 128. Подключил клавиатуру 4х4 и жк дисплей добился того что бы при нажатии на кнопку выводилась 1 букве.
Теперь пытаюсь сделать что бы при нажатии на 1 кнопку можно было выбрать букву (перебором) что то ни как не выходит.
Ни кто подобной штуки не делал?
Поделитесь соображениями как реализовать можно!!!
Зараннее извиняюсь за глуппый вопрос но контроллерами начал заниматься недавно((
Реклама:
sma-etu вне форума  
Непрочитано 30.11.2006, 15:18  
AndryG
Вид на жительство
 
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
AndryG на пути к лучшему
По умолчанию

Как вариант:
каждая кнопка имеет номер кратный 4 (младшие 2 бита 00)
при первом нажатии обнуляем внутренний счетчик
при повторном - добаляем в счетчик единичку
при подготовке результа - (кнопка AND NOT 0x03) OR (счетчик AND 0x03) в младшие два бита номера кнопки ставим к-во нажатий на нее...таким таким образом получим номер буквы.

Как отработать нажатие, последующее нажатие, выдачу результата после некоторого "ненажимания" -- посмотри тему "AVR+KEY" только утром разбирали... должно прокатить и здесь.
И еще вот здесь https://kazus.ru/forum/topics/f_23791.html#23791
AndryG вне форума  
Непрочитано 30.11.2006, 17:18  
AndryG
Вид на жительство
 
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
AndryG на пути к лучшему
По умолчанию

Каждая кнопка может иметь 4 значения.
В прерывании функция get_bt передает номер последней нажатой кнопки с времени последнего вызова функции.
Номер кнопки должен быть кратен 4-ем... таким образом в младших двух битах будет указываться вариантная часть кнопки.
НАПРИМЕР:
кнопка имеет номер 0x04
возможные варианты результата: 0x04,0x05,0x06,0x07.

При наборе текста возможны два варианта:
1 - новый символ
2 - заменить последний введенный на новый "вместо предыдущего" (причем новый здесь - это всегда вариантная часть кнопки)

Второй вариант еще можно показать как два символа: BS и символ ..."предыдущий стереть и новый на его место".

В нашем примере флагом "BS" служит условие, что младшие два бита в результате не равны нулям... если они не равны, значит это вариантная часть, значит нужно прошлый символ убрать и новый поставить.

Код:
#define TIME 0x80     //Время TimeOut
unsigned char pr_k,   //предыдущая нажатая кнопка
              count,  //к-во нажатий на кнопку
              time;   //время между нажатиями
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
 unsigned char k,r;
 TCNT0=0xFC;
 k = get_bt(); //Получаю номер кнопки нажатой с двумя битами младшими "00"

 if (time ‹ TIME) //Дабы избежать переполнения
  time++;

 if(time ‹ TIME) //Светодиод показывает исход времени
   PORTD |= 1;
  else
   PORTD &= ~1;
 
 if (k == 0) //ничего не нажато - выходим
  return;

 if ((k == pr_k) &&(time ‹ TIME)) //нажали старую и время не вышло
   count++;   //Номер варианта кнопки +1
  else //новая или время вышло
   count = 0;
      
 time =0; 
 pr_k = k; //Запоминаем старуя кнопку
 r = r|(k & ~0x03)|(count & 0x03); //собираем результат 
 if (r)
  putchar(r);
}
Полный пример с демо в Proteus
www.AndryG.ho.com.ua/bt_4.txt -›RAR-архив
AndryG вне форума  
Непрочитано 30.11.2006, 18:36  
sma-etu
Частый гость
 
Регистрация: 20.11.2006
Сообщений: 19
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
sma-etu на пути к лучшему
По умолчанию

а что то скачать не могу что бы в протеусе гдануть
поссылке захожу там кодировка не понятная
sma-etu вне форума  
Непрочитано 01.12.2006, 09:50  
pigtail
Временная регистрация
 
Регистрация: 22.06.2006
Сообщений: 82
Сказал спасибо: 5
Сказали Спасибо 9 раз(а) в 8 сообщении(ях)
pigtail на пути к лучшему
По умолчанию

поменяйте расширение на rar и тогда все откроется
pigtail вне форума  
Непрочитано 01.12.2006, 10:30  
AndryG
Вид на жительство
 
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
AndryG на пути к лучшему
По умолчанию

У меня просто фильтры не пропускают архивы ... а на форум окромя архивов ничего положить нельзя - вот и изврат выходит.

И еще ... недочет заметил.
Код:
r = r|(k & ~0x03)|(count & 0x03); //собираем результат 

ЧИТАТЬ КАК

r = (k & ~0x03)|(count & 0x03); //собираем результат
Это я раньше флаг "BS" выставлял в старшем бите ... пока не заметил, что "флагом" может служить другое условие.
AndryG вне форума  
Непрочитано 01.12.2006, 11:14  
sma-etu
Частый гость
 
Регистрация: 20.11.2006
Сообщений: 19
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
sma-etu на пути к лучшему
По умолчанию

а расширение менял пишет: Запрошенная страница http://www.andryg.ho.com.ua/bt_4.rar не найдена на этом сервере.
может не так меняю как то я?
sma-etu вне форума  
Непрочитано 01.12.2006, 11:49  
AndryG
Вид на жительство
 
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
AndryG на пути к лучшему
По умолчанию

Скачайте файлик bt_4.txt
Поменйте расширение
Откройте файл
AndryG вне форума  
Непрочитано 01.12.2006, 12:00  
sma-etu
Частый гость
 
Регистрация: 20.11.2006
Сообщений: 19
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
sma-etu на пути к лучшему
По умолчанию

Большое спасибо за помощь дальше думаю разберусь
sma-etu вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AT Mega128 ISP проблема odn2003 Микроконтроллеры, АЦП, память и т.д 3 16.04.2008 21:02
Проблема с Mega128 AVK74 Микроконтроллеры, АЦП, память и т.д 0 13.01.2008 11:45
использование BootLoader для Mega128 korobov_michael Микроконтроллеры, АЦП, память и т.д 0 25.06.2007 09:24
avrcrumb128 ну или mega128 не работает USART0 Mozart Микроконтроллеры, АЦП, память и т.д 2 01.06.2007 17:13


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


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