Skip to main content

Keypad matrix implemented with 7-Segment display with 8051

You have used many Keypads in many day-to-day applications. Keypad consists of 0-9 numbers and '#' and '*' icons too. I have also discussed about the interfacing of keypads with 8051 microcontroller and discussed the rows and columns algorithm which one has to learn before implementation of Keypad matrix. 7-segment LED display consists of 8-LEDs in '8' digit pattern.

Project description:

- Here, we have implemented Keypad matrix with Port P1 of 8051 microcontroller. In this diagram, Keypad is of 4x3 matrix i.e. 4 rows and 3 columns formatting. But, you can built your own Keypad matrix using SPST switches and IxJ matrix can be used according to your need but more ports have to used as 8 pin are maximum in each port of 8051.
Next, 7-segment LED display is interfaced to Port P2, according to the diagram. This interfaced was also discussed in previous posts too. I have used common cathode 7-segment and each case with hex code, has to be defined for each digit which you want to display on this display.

Circuit diagram:

Keypad interfacing with 8051 and display value at 7-segment

Code:

#include"REG52.h"
#define Segment P2
sbit R1=P1^0;
sbit R2=P1^1;
sbit R3=P1^2;
sbit R4=P1^3;
sbit C1=P1^4;
sbit C2=P1^5;
sbit C3=P1^6;

unsigned char sw=0x00;
unsigned char switch1(void);

void main()
{
while(1)
{
P1=0;
sw= switch1();
Segment=sw;
}
}
unsigned char switch1(void)
{
if((R1==0)||(R2==0)||(R3==0)||(R4==0))
{ R1=R2=R3=R4=1;
C1=C2=C3=1;
C1=0;
if (R1==0) return(0x06);                                              //display 1
if (R2==0) return(0x66);                                              //display 4
if (R3==0) return(0x07);                                             //display 7
if (R4==0) return(0x00);                                            //display Nothing
C1=1;
C2=0;
if (R1==0) return(0x5B);                                             //display 2
if (R2==0) return(0x6D);                                            //display 5
if (R3==0) return(0x7F);                                            //display 8
if (R4==0) return(0x3F);                                            //display 0
C2=1;
C3=0;
if (R1==0) return(0x4F);                                            //display 3
if (R2==0) return(0x7D);                                            //display 6
if (R3==0) return(0x6F);                                            //display 9
if (R4==0) return(0x00);                                            //display Nothing
C3=1;
}
else return(0x00);
}

Explanation of code:

- This code can be understand easily, if you have read the project description. Firstly, define Rows and Columns and then, switch debouncing concept has to be implemented if you are working on actual hardware. In this i have not implemented as this is software working so i have directly passed the value.
Next, i have implemented the binary to hex conversion method and then, send the value to display function whenever the switch is pressed on Keypad matrix and in display function, switch case is defined for every numerical digit in hex value format and it is called accordingly and that value is displayed on 7-segment. Using the return() with hex value for 7-segment reduces the code complexity and size.

Comments

Popular posts from this blog

Buzzer interface with 8051 microcontroller

Buzzer  is a electronic device that converts the electronic signal into buzzing noise, that is applied to it. It can be used as electronic bell or as quiz buzzer in many applications around us. Here, i world like to discuss the interfacing of a small buzzer with 8051 microcontroller and how different projects can be constructed. Buzzer Interfacing: This project shows the interface with AT89S52 microcontroller to a buzzer. When a push button is pressed, the buzzer will get ON and OFF ( number of times set in the code ) and then stops. Circuit Diagram: - The port P1 of the microcontroller is connected to buzzer. This type of connection is possible, if the current requirements of the buzzer is not more than 20mA. The output is in current source mode so that buzzer will turn ON when the output of the port is logic LOW. Switch is connected to port P3 which remains at logic HIGH by pull up resistor.  Code: #include "REG52.h" #define buz P1 sbit SW=P3^0; long i...

Comparison Chart Between 8051, 8052, 8031and 8751

8051 is a popular 8-bit microcontroller and has been used in many applications since Intel introduced it. Many 8051 architecture are produced by Triscend, Intel, Atmel, Philips, Infineon (Siemens), ISSI, and Max Corp. Today, 8051 microcontrollers may not be popular but, the 8051 architecture is still popular and employed in thousands of embedded applications. This 8-bit architecture has been different segments such as 8052, 8051, 8751 and 8031 . 8052 is the super-set of 8051 and 8031 is the memory-less microcontroller hence, it has interfaced with external ROM. Whereas, 8751 chip has only 4Kbytes of on chip UV-EPROM. Everyone knows about the general 40-pin microcontroller i.e. 8051 introduced by Intel in 1980s and consists of serial communication pins, Timer, Interrupts, RAM, ROM. It has 4 ports and each port has 8 pins, total 32 pins and other 8 pins for other purposes. 8052 is the super-set of 8051 that consists of 8K bytes of internal RAM (4K in 8051), 256 by...

Different ways to generate delays in 8051

The delay length in 8051 microcontroller depends on three factors: The crystal frequency the number of clock per machine the C compiler. The original 8051 used 1/12 of the crystal oscillator frequency as one machine cycle. In other words, each machine cycle is equal to 12 clocks period of the crystal frequency connected to X1-X2 pins of 8051. To speed up the 8051, many recent versions of the 8051 have reduced the number of clocks per machine cycle from 12 to four, or even one. The frequency for the timer is always 1/12th the frequency of the crystal attached to the 8051, regardless of the 8051 version. In other words, AT89C51, DS5000, and DS89C4x0 the duration of the time to execute an instruction varies, but they all use 1/12th of the crystal's oscillator frequency for the clock source. 8051 has two different ways to generate time delay using C programming, regardless of 8051 version. The first method is simply using Loop   program function in which Delay() funct...