Hello everyone, I hope you all are doing great. Today, I am going to share a very basic tutorial on PIC Microcontroller, which is Interfacing of Keypad with PIC Microcontroller. I have designed this simulation of Keypad with PIC Microcontroller in Proteus ISIS and the simulation along with code is given below for download. But I would suggest you to read it first and then design it on your own so that you learn most out of it.
In today's tutorial, I am not gonna discuss the details of How keypad works because I have discussed it in detail in my old tutorial Interfacing of Keypad with Arduino so if you don't have much idea about working of keypad then I would recommend you to read that tutorial first, before proceeding with today's tutorial. I have also interface this Keypad with 8051 Microcontroller, so today we are gonna interface this keypad with PIC Microcontroller. I have written programming code for this project in MikroC Pro For PIC. So, let's get started with Interfacing of Keypad with PIC Microcontroller:
Interfacing of Keypad with PIC Microcontroller
First of all, you can download the Simulation for this project along with programming code by clicking the below button:
First of all, design a simple simulation in Proteus software as shown in below figure:
Now paste the below programming code in MikroC Pro For PIC.
In this Programming code, the key pressed on keypad will be displayed on the LCD.
So, when you press any button on the keypad, it will appear on the LCD.
Here's the code which you need to use in MikroC Pro For PIC:
unsigned short kp, cnt, oldstate = 0;
char txt[6];
char keypadPort at PORTD;
sbit LCD_RS at RB0_bit;
sbit LCD_EN at RB1_bit;
sbit LCD_D4 at RB2_bit;
sbit LCD_D5 at RB3_bit;
sbit LCD_D6 at RB4_bit;
sbit LCD_D7 at RB5_bit;
sbit LCD_RS_Direction at TRISB0_bit;
sbit LCD_EN_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB4_bit;
sbit LCD_D7_Direction at TRISB5_bit;
void main() {
cnt = 0;
Keypad_Init();
Lcd_Init();
Lcd_Cmd(_LCD_CLEAR);
Lcd_Cmd(_LCD_CURSOR_OFF);
Lcd_Out(3, 2, "The Engineering");
Lcd_Out(4, 5, "Projects");
Lcd_Out(1, 1, "Key Pressed:");
do {
kp = 0;
do
kp = Keypad_Key_Click();
while (!kp);
switch (kp) {
case 10: kp = 42; break; // '*'
case 11: kp = 48; break; // '0'
case 12: kp = 35; break; // '#'
case 1: kp = 49; break; // 1
case 2: kp = 50; break; // 2
case 3: kp = 51; break; // 3
case 4: kp = 65; break; // A
case 5: kp = 52; break; // 4
case 6: kp = 53; break; // 5
case 7: kp = 54; break; // 6
case 8: kp = 66; break; // B
case 9: kp = 55; break; // 7
case 10: kp = 56; break; // 8
case 11: kp = 57; break; // 9
case 12: kp = 67; break; // C
case 13: kp = 42; break; // *
case 14: kp = 48; break; // 0
case 15: kp = 35; break; // #
case 16: kp = 68; break; // D
}
Lcd_Chr(1, 14, kp);
} while (1);
}
Now get your hex file and upload it in your Proteus Simulation.
Run your simulation and if everything goes fine then you will get results as shown in below figure:
So, in the above figure, I have pressed button 5 on the keypad and it is shown on the LCD.
Here's the video demonstration which will help you better in understanding this project:
So, that's how we can interface our Keypad with PIC Microcontroller. If you got into any trouble following this tutorial then ask your problems in the comments and I will help you out. That's all for today, I hope you guys can now interface keypad with PIC Microcontroller easily. :)
syedzainnasir
I am Syed Zain Nasir, the founder of The Engineering Projects (TEP). I am a
programmer since 2009 before that I just search things, make small projects and now I am sharing my
knowledge through this platform. I also work as a freelancer and did many projects related to
programming and electrical circuitry. My Google Profile+Follow
Get Connected
Comments on ‘’ Interfacing of Keypad with PIC Microcontroller ‘’ ( 3 )
0
anish
Says:
hello sir,
Thank you for shearing this project, I am new in coding i try to make a code lock system by your concept but i am facing some problem in keypad program. can you please shear a keypad_Key_Click() code.
Thank You
Reply
100
1
ezeikechukwu1
Says:
I followed the this tutorial. I noticed that the screen, the microcontroller and the button are not connected. So will it work like that?
Reply
100
2
syedzainnasir1
Says:
Hi,
These are connector Pins, and they have same name on both ends. It's like a wireless connection in Proteus :P just to make simulation clear.
Thanks.
Reply