►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

Mon Aug 01 2016, 03:25 PM
Manu Mishra
hi guys if u need c code for SD card interfacing with p89v51rd2 8051 controller system u can see the video of the project and the download the c code form blog http://embeddedinrajasthan.blogspot.in/?view=classic
Mon Aug 01 2016, 03:23 PM
Manu Mishra
hi guys if u need c code for finger print security system u can see the video of the project and the download the c code form blog http://embeddedinrajasthan.blogspot.in/?view=classic
ExperimenterUK
Tue Jul 19 2016, 05:59 PM
@mhammad 64 bits is 8 bytes.
Tue Jul 19 2016, 07:56 AM
mhammad kassem
hello! i want to know how to use UART in mikroc , I want to receive 64 bits from another microcontroller and i dont know how to start my code to receive the 64 bits...any help?
ExperimenterUK
Mon Jul 18 2016, 08:32 PM
@meena.. are you still having trouble ?
Sat Jul 16 2016, 10:19 AM
Meena
problem in loading email address while registering.Please help
Sun Jul 10 2016, 02:50 PM
shockwave
could you please provide a sample code that controling LED using bluetooth HC-05 interfacing pic16f877a thank you!
Sun Jul 10 2016, 02:49 PM
shockwave
Help!
ExperimenterUK
Sat Jul 09 2016, 05:25 PM
@Santhana krishnan post in forum to discuss your problem
Thu Jul 07 2016, 09:26 AM
Santhana krishnan
Hi i program atmega 32 it was functiining corectly but now aref pins voltage 2.56 is droped to .85 volts also a ports input viltage also dropped so anologe inpit not funcitonig please help me to find out the problem

Downloads

Comments

martinsnc115877
Sat Aug 20 2016, 01:44 PM
rajavarmanslr
Thu Aug 18 2016, 12:24 PM
mariahcarey
Sat Aug 06 2016, 11:38 AM
dann11
Thu Jul 28 2016, 09:43 PM
adithyapaip
Thu Jul 21 2016, 05:45 PM
celu
Thu Jul 21 2016, 05:27 PM
Aiko
Wed Jul 20 2016, 01:51 PM
JorgeG
Sat Jul 16 2016, 07:19 PM

Online

Guests: 49, Members: 0 ...

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

Members: 37779
Newest member: martinsnc115877
Forum Activity
rajavarmanslr Avatar
Posted By rajavarmanslr
Thu Aug 18 2016, 01:40 PM
I have two 8051 that interfaces with nRF24l01. One...
rajavarmanslr Avatar
Posted By rajavarmanslr
Thu Aug 18 2016, 12:31 PM
I have two 8051 that interfaces with nRF24l01. One...
ExperimenterUK Avatar
Posted By ExperimenterUK
Mon Aug 01 2016, 05:26 AM
is working nowugoo5000Great, thanks for letting u...
ugoo5000 Avatar
Posted By ugoo5000
Sat Jul 30 2016, 07:31 AM
is working noworg 00hmov p1,#11111111bmov p3,#1111...
ugoo5000 Avatar
Posted By ugoo5000
Sat Jul 30 2016, 06:40 AM
when i press a button in p3.0,the counter will st...
ugoo5000 Avatar
Posted By ugoo5000
Sat Jul 30 2016, 06:30 AM
proteus file Attachment ...
ExperimenterUK Avatar
Posted By ExperimenterUK
Fri Jul 29 2016, 11:34 PM
Your code does not count at all, it produces a one...
ugoo5000 Avatar
Posted By ugoo5000
Fri Jul 29 2016, 07:49 PM
i want the the counter to be counting in secs with...
ExperimenterUK Avatar
Posted By ExperimenterUK
Fri Jul 29 2016, 07:31 PM
HiYour Proteus file did not upload, be sure to zip...
ugoo5000 Avatar
Posted By ugoo5000
Fri Jul 29 2016, 11:50 AM
below is the proteus file