Подключение матричной клавиатуры

Документация

Матричная клавиатура Слева представлена схема матричной клавиатуры, кнопки показаны в виде кружков. При нажатии кнопка замыкает строку на стобец.

Количество выходов микроконтроллера, необходимых для подключения такой клавиатуры определяется перемножением количества  строк на количество столбцов. Для подключения клавиатуры из 4 строк и 3 столбцов будут задействованы 4x3=12 выходов.

Столбцы подключаются к одной группе выходов микроконтроллера ("сканирующий" порт), строки к другой группе выходов ("считывающий порт").

Выводы сканирующего порта настроены как выходы (DDR=1), выводы считывающего порта настроены как входы с подтяжкой (DDR=0;PORT=1)

На одном из выходов сканирующего порта находится лог.0, на остальных лог.1. Когда нажимается кнопка, то соответствующая строка оказывается замкнута на 0, и на соответствующем выводе считывающего порта тоже появляется лог.0.  Затем лог.0 нужно выставить на следующем выводе сканирующего порта и повторить процедуру сканирования.

Эта программа постоянно сканирует состояние клавиатуры и включает лампочку на выходе С.0, если была нажата "1", и выключает её, если на клавиатуре был нажат "0":

char a[3][4]={
{'1','4','7','*'},
{'2','5','8','0'},
{'3','6','9','#'}
};      

int i=0;  
int j=0;

int main() {
DDRB=0xFF;
PORTB=0xFF;

DDRD=0x00;
PORTD=0x0F;   

DDRC.0=1;
 
 while(1) {
        
       for (i=0;i<sizeof(a)/sizeof(a[0]);i++)
      {
          PORTB&=~(1<<i);
          for (j=0;j<sizeof(a[i])/sizeof(a[i][0]); j++)
          {
             if (!(PIND & (1<<j)))    
             {
               switch (a[i][j])
               {
               case '1':
               PORTC.0=1;
                break;   
                
                case '0':
               PORTC.0=0;
                break;
               }
                    
             }
          }
          PORTB|=(1<<i);    
      }
 
  }
 
  return 0;
}

Чтобы избежать короткого замыкания при одновременном нажатии 2-х кнопок в одной строке, в схему необходимо ввести диоды


Если у вас есть какие-то замечания по этому документу или что-то осталось непонятно, то вы можете оставить свой отзыв или вопрос

Комментарии (1)

avatar

Герундий

  • 06 Март 2011, 19:30

ответить

Диоды-то куда ставить? На линии сканирующего порта?

Анонимная отправка сообщений запрещена! Пожалуйста зарегистрируйтесь