реклама на сайте
подробности

 
 
> Подключение клавиатуры, Не получается
SergeyM
сообщение Jun 15 2005, 17:09
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 68
Регистрация: 1-05-05
Из: Снежинск
Пользователь №: 4 654



Всем привет wink.gif
Решил усовершенствовать свой проект и добавить клаву 4х4. Прочел AVR240 вроде так называлась статья, но реализовывал используя ЖК а не светодиодный индикатор. К тому же клаву подключил к одному порту, ЖК к другому и програмно отправляю символ нажатой клавиши. Все вроде работает но не доконца smile.gif символы выводятся но только по первому столбцу т.е. 7, 4, 1, С (это символы первого столбца в моей клаве). Пробовал по разному делать задержку для антидребезга, но чето никак. Вообще реализую так:
на порт выдаю 0xF0 и с помощью прерываний проверяю число на PIN если не равно 240, то значит нажали на кнопку и отправляюсь в функцию обработки нажатия:
Код
KeyPress(void){
//delay_ms(20); пробовал ее везде пихать :)
switch (PINB) {
   case 224: key = 0;
       delay_ms(10);
       break;
   case 208: key = 4;
       delay_ms(10);
       break;
   case 176: key = 8;
       delay_ms(10);
       break;
   case 112: key = 12;
       delay_ms(10);
       break;  
   };
PORTB = 0x0F;
DDRB = 0xF0;
delay_us(10);
switch (PINB) {
   case 7: key += 0;
       delay_ms(10);
       break;
   case 11: key += 1;
       delay_ms(10);
       break;
   case 13: key += 2;
       delay_ms(10);
       break;
   case 14: key += 3;
       delay_ms(10);
       break;  
   };
PORTB = 0xF0;
DDRB = 0x0F;
PORTA.2 = 1; типа флаг нажати ниче более мудрого сразу не пришло :)

}


Далее в бесконечном цикле проверяю флаг нажатия и отправляю на экран символ из "таблицы" в качестве которой использовал массив символов, а key это номер символа в массиве. Разумеется после отправки флаг сбрасываю.

PS Сильно не ругайте, а вот за дельный совет всегда благодарен буду.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Jun 17 2005, 10:08
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Вот вам мой модуль для обслуживания клавиатуры 2х3 с автоповтором.
Отличия от того, что я описывал выше.
- сканирующие линии имеют активный высокий (а не низкий) уровень, соответственно стоят pull-down, а не pull-up резисторы как на сканирующих, так и на считывающих линиях;
- матрица не 2х4, а 2х3, но легко расширяется до 2Х4 изменением одной константы MAX_KEY_NUM. Если же нужно 4Х4, то кроме этого нужно некоторые переменные объявить как unsigned int, а не unsigned char;
- допускает одновременное нажатие нескольких кнопок. При этом коды нажатых кнопок помещаются в буфер в порядке их сканирования;
- допускается нажатие любой кнопки при уже нажатой одной или нескольких;
- имеет автоповтор последней нажатой клавиши с задержкой и паузой.
Еще раз обращаю внимание, что пример для MSP430, а не AVR. Сканирующие линии эмулируют сигналы с активной единицей и Z-состоянием в качестве лог.нуля.
P.S. Функция сканирования вызывается из прерывания с периодом 10ms.
Прикрепленные файлы
Прикрепленный файл  kbd.zip ( 2.56 килобайт ) Кол-во скачиваний: 225
 
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- SergeyM   Подключение клавиатуры   Jun 15 2005, 17:09
- - rezident   Немного не так это делается. По крайней мере я не ...   Jun 15 2005, 17:57
|- - Make_Pic   Цитата(rezident @ Jun 15 2005, 20:57)Немного ...   Jun 15 2005, 18:11
|- - SergeyM   Цитата(rezident @ Jun 15 2005, 20:57)Немного ...   Jun 16 2005, 05:01
|- - yung   Обычно делается так. Строки определяются как выход...   Jun 16 2005, 05:21
|- - rezident   Цитата(SergeyM @ Jun 16 2005, 11:01)А какое у...   Jun 16 2005, 15:52
|- - SergeyM   Цитата(rezident @ Jun 16 2005, 18:52)Обычно и...   Jun 16 2005, 16:07
|- - SergeyM   Цитата(rezident @ Jun 16 2005, 18:52)Вот вам ...   Jun 17 2005, 14:09
- - vet   Цитата(SergeyM @ Jun 15 2005, 21:09) на мой в...   Jun 15 2005, 18:24
|- - yung   а в процедуре опроса клавиш гасил бы столбцы поо...   Jun 16 2005, 04:41
|- - SergeyM   Цитата(vet @ Jun 15 2005, 21:24)Код//коды кла...   Jun 16 2005, 16:17
|- - rezident   Цитата(SergeyM @ Jun 16 2005, 22:17)Цитата(ve...   Jun 16 2005, 16:29
|- - vet   Цитата(rezident @ Jun 16 2005, 20:29)Цитата(S...   Jun 16 2005, 16:35
|- - SergeyM   Цитата(rezident) Ниче страшного самое главное сут...   Jun 16 2005, 16:43
|- - rezident   Цитата(SergeyM @ Jun 16 2005, 22:43)Цитата(re...   Jun 16 2005, 18:29
- - AndyBig   Я делаю по тому же принципу, что описал vet: Цитат...   Jun 16 2005, 20:00


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 17:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.02138 секунд с 7
ELECTRONIX ©2004-2016