Home
Microcontrollers
Abbreviations
Useful Tools
Hot Links
Gallery
Feedback

Abbreviations

A B C D
E F G H
I J K L
M N O P
Q R S T
U V W X
  Y Z  

Microcontrollers
Interfacing LED's
Interfacing 7 segment
Multiplexing 7 segments
PWM Basics
Interfacing Relays
Interfacing 4x4 keypad
8051 Serial port

    Keyboard is a basic and essential element of an embedded or microcontroller system. For small and hobby projects a 4x4 (hex) matrix keyboard is sufficient. The keys in the matrix keyboard are arranged in a matrix arrangement in order to utilize the port pins of the microcontrollers efficiently. Here we can interface 16 keys by using just 8 pins of microcontroller. This is shown in the circuit diagram.

 

    As shown in the circuit diagram, the rows are connected to 4 pins of a port, the columns are connected to other four pins, we configure rows as input and columns as output. By grounding one column and setting high all other columns, now by observing the status of the rows, we can come to know which button is pressed. For example, if we ground the first column and if the first row is low, then the first button is pressed. We know that microcontrollers are really fast, therefore they can detect the key press in microseconds, if we hold the switch for long time (for a microcontroller long time is in milliseconds), the microcontroller is triggered more than once, also there is a problem of switch debounce because of the spring action of the switch. To eliminate these problems we should introduce some amount of delay after every key press. The assembly source code for the circuit is given in the table below.

Circuit diagram for interfacing 4x4 keyboard to 8051(89s52):

My prototype for connecting to the main development board:

The assembly program for interfacing 4x4 keyboard:

;*************************************************
;Program: Blinking LED.
;Author: Srikanth
;Website: http://shree-electronics.com/
;Description: Displays the button pressed on the
;keyboard on a 7 segment display.
;
;keyboard format: 0 1 2 3
;                 4 5 6 7
;                 8 9 A B
;                 C D E F
;*************************************************
;Declarations
rw0 equ P2.0;
rw1 equ P2.1;
rw2 equ P2.2;
rw3 equ P2.3;
cl0 equ P2.4;
cl1 equ P2.5;
cl2 equ P2.6;
cl3 equ P2.7;
;*************************************************
;Main program

org 00h
ljmp main

org 30h
main: mov P2,#0ffh       ;Configure input
      acall scan_key     ;Scan for keypress
      acall display      ;display the key pressed
      sjmp main          ;Loop
 

;*************************************************
;Subroutine to scan keys
scan_key:mov P2,#0ffh
      clr cl0
      mov a, P2
      anl a,#00001111b
      cjne a,#00001111b,Row0
      setb cl0
      clr cl1
      mov a, P2
      anl a,#00001111b
      cjne a,#00001111b,Row1
      setb cl1
      clr cl2
      mov a, P2
      anl a,#00001111b
      cjne a,#00001111b,Row2
      setb cl2
      clr cl3
      mov a, P2
      anl a,#00001111b
      cjne a,#00001111b,Row3
      setb cl3
      ret

row0: mov dptr,#led_data
      mov r6,#04h
      clr c
rww0: rrc a
      jc next0
      sjmp over
next0:inc dptr
      djnz r6,rww0
      sjmp scan_key

row1: mov dptr,#led_data+4h
      mov r6,#04h
      clr c
rww1: rrc a
      jc next1
      sjmp over
next1:inc dptr
      djnz r6,rww1
      sjmp scan_key

row2: mov dptr,#led_data+8h
      mov r6,#04h
      clr c
rww2: rrc a
      jc next2
      sjmp over
next2:inc dptr
      djnz r6,rww2
      sjmp scan_key

row3: mov dptr,#led_data+0ch
      mov r6,#04h
      clr c
rww3: rrc a
      jc next3
      sjmp over
next3:inc dptr
      djnz r6,rww3
      sjmp scan_key

over: ret
;*************************************************
;Display subroutine
display:clr a
      movc a,@a+dptr
      mov P0,a
      ret

;*************************************************
;lookup table
led_data:db 0fch,066h,0feh,09dh; For row1:0 1 2 3
         db 060h,0b6h,0f6h,0fdh; For row2:4 5 6 7
         db 0dah,0beh,0efh,09fh; For row3:8 9 A B
         db 0f2h,0e0h,0ffh,08fh; For row4:C D E F

;*************************************************
end;

BACK

Custom Search

  

 

Home | Microcontrollers | Abbreviations | Useful Tools | Hot Links | Gallery | Feedback

Microcontrollers | Interfacing LED's | Interfacing 7 segment | Multiplexing 7 segments | PWM Basics | Interfacing Relays | Interfacing 4x4 keypad | 8051 Serial port

A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

Email: feedback@shree-electronics.com, Feel free to link to this site.

Disclaimer : I have taken utmost care while composing this site. But neither the author himself nor any of the linked sites can be held responsible for any missing or inaccurate information.

© copyright Srikanth 2008.