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.
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.

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.
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:
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
Post a Comment