►Introduction

Keypads are a part of HMI or Human Machine Interface and play really important role in a small embedded system where human interaction or human input is needed. Martix keypads are well known for their simple architecture and ease of interfacing with any microcontroller. In this part of tutorial we will learn how to interface a 4x4 matrix keypad with AVR and 8051 microcontroller. Also we will see how to program then in Assembly and C.


►Constructing a Matrix Keypad

Constuction of a keypad is really simple. As per the outline shown in the figure below we have four rows and four columns. In between each overlapping row and column line there is a key.


4x4 matrix Keypad outline

So keeping this outline we can constuct a keypad using simple SPST Switches as shown below:


4x4 matrix Keypad schematic

Now our keypad is ready, all we have to do is connect the rows and columns to a port of microcontroller and program the controller to read the input.


►Scanning a Matrix Keypad

There are many methods depending on how you connect your keypad with your controller, but the basic logic is same. We make the coloums as i/p and we drive the rows making them o/p, this whole procedure of reading the keyboard is called scanning.


In order to detect which key is pressed from the matrix, we make row lines low one by one and read the coloums. Lets say we first make Row1 low, then read the columns. If any of the key in row1 is pressed will make the corrosponding column as low i.e if second key is pressed in Row1, then column2 will give low. So we come to know that key 2 of Row1 is pressed. This is how scanning is done.


So to scan the keypad completely, we need to make rows low one by one and read the columns. If any of the button is pressed in a row, it will take the corrosponding column to a low state which tells us that a key is pressed in that row. If button 1 of a row is pressed then Column 1 will become low, if button 2 then column2 and so on...


Now lets move on to the programming part of keypad in our next section.

◄ Back to Index  |  Connecting a Keypad ►

Conversation

ElectronicManiac
Tue Mar 31 2015, 03:33 PM
anyone?
ElectronicManiac
Tue Mar 31 2015, 03:33 PM
Please Reply me on Scrolling Dot Matrix LED Display using 8051
Tue Mar 31 2015, 10:32 AM
Akshayy
Can you please provide the proteus file
ajay_bhargav
Tue Mar 31 2015, 04:14 AM
@Peter james, we have many projects related to this, Please refer download section and tutorials or post in forum for specific questions.
Mon Mar 30 2015, 04:51 PM
Peter james
can any one provide me an assembly language program to interface with 16x2 LCD, 4X4 Keypad and a GSM Module to recieve message and display it.
ajay_bhargav
Mon Mar 23 2015, 04:22 AM
You can only simulate simple 8051. RD2 support is not there in proteus. However there are similar atmel varient which can be used instead.
Sun Mar 22 2015, 07:24 PM
Aryan Nath
How can i Simulate microcontroller project in Proteus that uses P89V51RD2
Thu Mar 19 2015, 02:45 PM
Peter Mann
I have tried to register on the site, but it keeps saying I've entered two different email adresses - but I haven't!
ajay_bhargav
Sun Mar 15 2015, 08:25 PM
I did not get new message indication.. strange..
ExperimenterUK
Sun Mar 15 2015, 08:18 PM
slight delay, my connection failed

Downloads

Comments

sund1212
Tue Mar 31 2015, 04:47 PM
ElectronicManiac
Tue Mar 31 2015, 03:21 PM
harix
Sun Mar 29 2015, 07:11 PM
marti
Fri Mar 27 2015, 03:07 PM
iamalien
Thu Mar 26 2015, 07:27 AM
Ankit30
Wed Mar 25 2015, 02:35 PM
wai1023
Wed Mar 25 2015, 06:27 AM
StrangerDanger
Tue Mar 24 2015, 12:40 PM

Online

Guests: 35, Members: 0 ...

most ever online: 182184
(Members: , Guests: 182184) on 06 Aug 2010: 05:37 AM

Members: 37613
Newest member: sund1212
Forum Activity
diana1234 Avatar
Posted By diana1234
Tue Mar 31 2015, 11:17 AM
Thank you sir for the reply,As you give the LED ex...
mayank058 Avatar
Posted By mayank058
Tue Mar 31 2015, 06:44 AM
Dear Iamalien, Thank you ...
mayank058 Avatar
Posted By mayank058
Tue Mar 31 2015, 06:33 AM
Thanks to all of u for showing your interest in my...
iamalien Avatar
Posted By iamalien
Tue Mar 31 2015, 04:43 AM
here you go a 227 variable array in the ram and st...
ajay_bhargav Avatar
Posted By ajay_bhargav
Tue Mar 31 2015, 04:33 AM
Can you post Keil compiler output?
iamalien Avatar
Posted By iamalien
Tue Mar 31 2015, 04:31 AM
i have already compiled the program in keil thats ...
ajay_bhargav Avatar
Posted By ajay_bhargav
Tue Mar 31 2015, 04:29 AM
Its in nature of resistor to reduce the current wh...
ajay_bhargav Avatar
Posted By ajay_bhargav
Tue Mar 31 2015, 04:10 AM
256 bytes ram for 200 char display... I think you ...
diana1234 Avatar
Posted By diana1234
Mon Mar 30 2015, 08:12 AM
Dear sir,How a resistor can be used as a current l...
ExperimenterUK Avatar
Posted By ExperimenterUK
Mon Mar 30 2015, 05:13 AM
The processor on the MCB2300 has a built in DAC.Cr...