Skip to main content

The future of AI in business and its potential to transform industries

Interfacing 4x3 Keypad with PIC18F4520 controller

Interfacing 4x3 Keypad with PIC18F4520 controller

nterfacing keypad with PIC18F4520

The keypad is one of the most widely used peripheral devices, from our academics projects to industrial use whenever user interface is required we remember the keypad for our embedded systems. Hence learning how to interface keypad to different-different controllers becomes important.

In this article, we will see how to interface a 4x3 keypad to the PIC18F4520 controller.

We will cover the topics on the following points:-

  • About the project
  • Selecting the required components
  • Circuit diagram
  • Writing the code for the controller
  • Uploading the HEX file to the controller
  • Simulating the project

About the project

In this project, the keypad is connected to Port B and the data pins are connected to the Port D of the PIC controller. Data controlling pin of the LCD are connected to pin 3.0, pin 3.1, pin 3.2 of port C.

In this simple project initially, the LCD display will print the name of this blog page "Code somenplus" and then it will ask to enter the digits from the keypad. Whatever digit you will press it will display on the LCD screen.

Software tools

  • Proteus professional 8 (project simulation)
  • MP Lab IDE (writing code for the controller)

Selecting the required components

For the completion of this project simulation, the components that required are:

  • PIC18F420 controller
  • LM016L 16x2 LCD display
  • 4x3 Phone keypad

Circuit diagram

The circuit diagram for the simulation is given below

keypad interfacing circuit diagram

Please make sure all the pins are connected properly.

Writing the code for the controller

The code for the controller is given below

#include <xc.h>

#define _XTAL_FREQ 20000000


#define rs RC0

#define rw RC1

#define en RC2


#define col0 RB0

#define col1 RB1

#define col2 RB2

#define row0 RB4

#define row1 RB5

#define row2 RB6

#define row3 RB7


void lcd_data(unsigned char data);

void lcd_cmd(unsigned char command);

void lcd_string(const unsigned char *string, unsigned char length);

void lcd_initialize();

void keypad();


void main()

{

    TRISD=0;

    TRISC=0;

    TRISB=0xF0;

    

    lcd_initialize();

    

    lcd_cmd(0x80);

       lcd_string("Code Somenplus",14);

       __delay_ms(2000);

    

       lcd_cmd(0x01);

       lcd_cmd(0x80);

       lcd_string("Enter Digits",12);

       lcd_cmd(0xc0);

    

    while(1)

    {

       keypad();

        

    }

}


void lcd_data(unsigned char data)

{

    PORTD=data;

    rs=1;

    rw=0;

    en=1;

    __delay_ms(5);

    en=0;

}


void lcd_cmd(unsigned char command)

{

    PORTD=command;

    rs=0;

    rw=0;

    en=1;

    __delay_ms(5);

    en=0;

}


void lcd_string(const unsigned char *string, unsigned char length)

{

    unsigned char i;

    for(i=0;i<length;i++)

    {

        lcd_data(string[i]);

    }

}


void lcd_initialize()

{

    lcd_cmd(0x38);

    lcd_cmd(0x06);

    lcd_cmd(0x0c);

    lcd_cmd(0x01);

}


void keypad()

{

    col0=1;

    col1=0;

    col2=0;

    

    if(row0==1)

    {

        lcd_data('1');

        while(row0==1);  

    }

    

    if(row1==1)

    {

        lcd_data('4');

        while(row1==1);

    }

    

    if(row2==1)

    {

        lcd_data('7');

        while(row2==1);   

    }

    

    if(row3==1)

    {

        lcd_data('*');

        while(row3==1);  

    }

    

    col0=0;

    col1=1;

    col2=0;

    

    if(row0==1)

    {

        lcd_data('2');

        while(row0==1);

    }

    

    if(row1==1)

    {

        lcd_data('5');

        while(row1==1);

    }

    

    if(row2==1)

    {

        lcd_data('8');

        while(row2==1); 

    }

    

    if(row3==1)

    {

        lcd_data('0');

        while(row3==1);  

    }

    

    col0=0;

    col1=0;

    col2=1;

    

    if(row0==1)

    {

        lcd_data('3');

        while(row0==1);

    }

    

    if(row1==1)

    {

        lcd_data('6');

        while(row1==1);

    }

    

    if(row2==1)

    {

        lcd_data('9');

        while(row2==1);

    }

    

    if(row3==1)

    {

        lcd_data('#');

        while(row3==1);    

    }

}

After writing the code on MP lab IDE all you need to compile the code and build a hex file for the controller.

Uploading the HEX file to the controller

For uploading the HEX file all you need to double click on the controller and select the HEX file you created.

uploading hex file to PIC controller

After uploading the HEX file don't forget to change the clock frequency from 4MHz to 20MHz.

Simulate the project

For simulating the project all you need to click the play button given on the bottom left of the proteus simulator.

Video


Popular posts from this blog

Top 7 domains to expertise after learning python

Top 7 domains to expertise after learning python Python is one of the most popular programming languages. It is an object-oriented, dynamic semantics and high-level programming language. It's high-level built-in data structure combined with dynamic binding and dynamic typing makes it attractive for rapid application development. Often programmers fall in love with python because of the increased productivity it provides. Python is one of the most readable languages in the world right now. This language is very popular among developers and is widely used by many programmers to create application and programs. The implementation of this programming language is simple and at the same time, the language has a very clean structure as compared to other languages.  So if you mastered your python concepts and skills, you can dominate these 7 domains. Machine learning / Artificial intelligence Desktop GUI Data analytics and data visualization  Web development Game development Mobile ap...

Different domains of Artificial intelligence(AI)

Artificial intelligence is a computer system that is able to perform tasks that ordinarily require human intelligence. Artificial intelligence systems are critical for companies that wish to extract value from data by automating and optimizing processes or producing actionable insights. There are certain domains of artificial intelligence on which we can create our expertise Machine learning Deep learning Robotics Expert systems Fuzzy logic Natural language processing Computer vision  1. Machine learning Machine learning is a subset of artificial intelligence. Machine learning enables computers or machines to make data-driven decisions rather than being explicitly programmed for a certain task. These programs or algorithms are designed in a way that they learn and improve over time when are exposed to new data. Different types of machine learning models Supervised learning Unsupervised learning Reinforcement learning Use cases Product recommendation on a shopping website. spam fil...

Top 5 free machine learning courses with certificate

In the era of 21st-century artificial intelligence, machine learning and data science became the most demanding and highest paying skills. After the covid-19 pandemic situation, the working style of the corporate sectors and the business had completely changed, now most of the business deals are made on the basis of data analysis, or when it comes to making the businesses automation the people hire a  machine learning engineer.    Hence it becomes really important for those who work in the corporate sector or a student pursuing a degree to get a job should update himself with these skills.  So, I listed you Top 5 machine learning courses from one of the leading organisations with completion certificates at free of cost. 1. Machine learning in the cloud with AWS batch About This course describes how to run and accelerate your machine learning applications in the cloud using AWS batch. AWS Batch is a fully managed service that allows you to easily and efficiently run b...