►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 ►
Forum Activity
diana1234 Avatar
Posted By diana1234
Wed Jul 23 2014, 07:20 AM
@ Ajay sirMay be there is power supply problem i t...
pravin_35 Avatar
Posted By pravin_35
Wed Jul 23 2014, 04:29 AM
Hi, Need library or sample code for PIC16f882,, Do...
Anup Teke Avatar
Posted By Anup Teke
Wed Jul 23 2014, 03:28 AM
Sir,I was doing like thisMCP3901_CS = 0;WriteSPI1(0x01);TempData = ReadSPI1( );TempData <<= 8;TempData |= ReadSPI1( );TempData <<= 8;TempData |= ReadSPI1( );MCP3901_CS = 1;and my problem solved by doing like thisMCP3901_CS = 0; WriteSPI1(0x01); TempData = ReadSPI1( ); TempData <<= 8; MCP3901_CS = 1; MCP3901_CS = 0; WriteSPI1(0x03); TempData |= ReadSPI1( ); TempData <<= 8; MCP3901_CS = 1; MCP3901_CS = 0; WriteSPI1(0x05); TempData |= ReadSPI1( ); MCP3901_CS = 1;
pravin_35 Avatar
Posted By pravin_35
Wed Jul 23 2014, 12:57 AM
Can the Pickit3 read the Pics signature bytes and ...
ExperimenterUK Avatar
Posted By ExperimenterUK
Tue Jul 22 2014, 04:24 PM
Can the Pickit3 read the Pics signature bytes and ...
ExperimenterUK Avatar
Posted By ExperimenterUK
Tue Jul 22 2014, 04:16 PM
Does the DS1307 keep time ?That is, if you set it ...
pravin_35 Avatar
Posted By pravin_35
Tue Jul 22 2014, 01:05 PM
hi... i have done with a simple blinky program wi...
pravin_35 Avatar
Posted By pravin_35
Tue Jul 22 2014, 07:23 AM
Autoscale does not know what settings you keep on ...
ajay_bhargav Avatar
Posted By ajay_bhargav
Tue Jul 22 2014, 02:19 AM
[Topic moved to PIC Microcontroller Discussion For...
ajay_bhargav Avatar
Posted By ajay_bhargav
Tue Jul 22 2014, 02:18 AM
[Topic moved to electronics discussion forum]

Conversation

Wed Jul 23 2014, 05:49 AM
R.ABHISHEK
sir,pls message on microcontroller 8051 assambly language new program
Wed Jul 23 2014, 05:47 AM
R.ABHISHEK
sir,pls message on 8051 microcontroller assambly language program new quastions
ajay_bhargav
Tue Jul 22 2014, 09:18 AM
@Pragya Android application is taken from google play. Only Author has its source with him. Application is only used in this project.
Tue Jul 22 2014, 04:58 AM
Pragya
plz send me 8051 code and android code for android based device controller via Bluetooth .Here in this project I am using Hc-06 Bluetooth module
Thu Jul 10 2014, 09:57 AM
Caleb
plz someone mail me the source code for that project
Thu Jul 10 2014, 09:57 AM
Caleb
http://www.8051projects.net/download-d188-control-your-pc-tv-remote.html
ExperimenterUK
Tue Jul 08 2014, 03:25 PM
Post questions in the forum.. this area is for chat
Tue Jul 08 2014, 08:15 AM
P.Panchanyam
Sir i want some new ideas for my final year projects ,which would help for our soceity in future
Tue Jul 08 2014, 01:39 AM
jasvinder
Dear Sir Ref. to the discussion held with under sign, the detail is as under--- We are in weighing scale field since 1986. We are assembling the scales by purchasing the material from out source ( From India and other countries). Now we decide to make our own Card in our decided shape. So we want to develop a universal card , which we can make all types of scales of up 100000 counts with 7 segment LED Display . Also with other features like Printing, Counting, RS232 Etc. And Three Pass words at different levels. And we can edit the Softwear. What else you can provide in this field, also mention. We will pay you the development , softwear and testing charges. And up-gradation charges at time to time. Our web site is modern-scales.com Kindly revert.
Mon Jul 07 2014, 09:20 AM
tadashige matuda
Please tell me about pic instruction ADDWF fileName,f ; fileName=fileName+W. Why twice memory access (1)fileName+W,(2)fileName=fileName+W, be able in one instruction cycle. For MOVWF fileName ; memory access once in an one instruction cycle.

Downloads

Comments

vinosentinal
Mon Jul 21 2014, 08:28 PM
niks_here
Sun Jul 20 2014, 05:38 PM
athiramsankar
Sun Jul 20 2014, 12:00 PM
salemalqahtani
Sun Jul 20 2014, 12:55 AM
nagarajan.electro
Sat Jul 19 2014, 12:49 AM
praru
Sat Jul 12 2014, 07:51 AM
nmcleod1993
Thu Jul 10 2014, 09:02 AM
abdulmannan39
Thu Jul 10 2014, 05:50 AM

Online

Guests: 54, Members: 0 ...

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

Members: 37479
Newest member: vinosentinal