8051 interfacing with keypad
/*
developed by S4silver
license type - open source
created on - 11/12/2014
modified on - 11/14/2014
modification details - refactored
developer - Frank Hust Jincson
contact mail id - silverembeddedsolutions@gmail.com
web link - http://s4silver.blogspot.in/p/programmers-colony.html
*/
#include <REGX51.H>
sbit RS = P3^6;
sbit EN = P3^7;
void keypad_routine(void );
void delay(unsigned char del)
{
unsigned int i,j;
for(i=0;i<del;i++)
for(j=0;j<250;j++);
}
void lcd_cmd(unsigned char cmd)
{
P1 = cmd;
RS=0;
EN=1;
delay(2);
EN=0;
}
void lcd_data(unsigned char dat)
{
P1 = dat;
RS=1;
EN=1;
delay(2);
EN=0;
}
int main()
{
unsigned int i;
unsigned char c;
SCON=0x50; TMOD=0x20;
TH1=-6; // 0xFD=253 9600
TR1=1;
P2=0x0F;
P1=0x00;
RS=0;
EN=0;
lcd_cmd(0x38); // 2 line 8 bit mode
lcd_cmd(0x01); // Reset LCD Display
lcd_cmd(0x06); // Shift Display Right
lcd_cmd(0x0C); // Display ON cursor Blinking
lcd_cmd(0x80); // First Line First Display
lcd_data('A');
SBUF='A';
while(!TI);
TI=0;
while(1)
{
keypad_routine();
}
}
void keypad_routine()
{
unsigned int j;
P2=0x7E; //row 0 selected 0111 1110
if((!P2_4)&&(P2_5)&&(P2_6))
{
lcd_data('1');
delay(100);
}
else if((P2_4)&&(!P2_5)&&(P2_6))
{
lcd_data('2');
delay(100);
}
else if((P2_4)&&(P2_5)&&(!P2_6))
{
lcd_data('3');
delay(100);
}
P2=0x7D; //row 1 selected 0111 1101
if((!P2_4)&&(P2_5)&&(P2_6))
{
lcd_data('4');
delay(100);
}
else if((P2_4)&&(!P2_5)&&(P2_6))
{
lcd_data('5');
delay(100);
}
else if((P2_4)&&(P2_5)&&(!P2_6))
{
lcd_data('6');
delay(100);
}
P2=0x7B; //row 2 selected 0111 1011
if((!P2_4)&&(P2_5)&&(P2_6))
{
lcd_data('7');
delay(100);
}
else if((P2_4)&&(!P2_5)&&(P2_6))
{
lcd_data('8');
delay(100);
}
else if((P2_4)&&(P2_5)&&(!P2_6))
{
lcd_data('9');
delay(100);
}
P2=0x77; //row 3 selected 0111 0111
if((!P2_4)&&(P2_5)&&(P2_6))
{
// lcd_cmd(0x01);lcd_cmd(0x80);
lcd_data('*');
delay(100);
}
else if((P2_4)&&(!P2_5)&&(P2_6))
{
lcd_data('0');
delay(100);
}
else if((P2_4)&&(P2_5)&&(!P2_6))
{
lcd_data('#');
delay(100);
}
}
developed by S4silver
license type - open source
created on - 11/12/2014
modified on - 11/14/2014
modification details - refactored
developer - Frank Hust Jincson
contact mail id - silverembeddedsolutions@gmail.com
web link - http://s4silver.blogspot.in/p/programmers-colony.html
*/
#include <REGX51.H>
sbit RS = P3^6;
sbit EN = P3^7;
void keypad_routine(void );
void delay(unsigned char del)
{
unsigned int i,j;
for(i=0;i<del;i++)
for(j=0;j<250;j++);
}
void lcd_cmd(unsigned char cmd)
{
P1 = cmd;
RS=0;
EN=1;
delay(2);
EN=0;
}
void lcd_data(unsigned char dat)
{
P1 = dat;
RS=1;
EN=1;
delay(2);
EN=0;
}
int main()
{
unsigned int i;
unsigned char c;
SCON=0x50; TMOD=0x20;
TH1=-6; // 0xFD=253 9600
TR1=1;
P2=0x0F;
P1=0x00;
RS=0;
EN=0;
lcd_cmd(0x38); // 2 line 8 bit mode
lcd_cmd(0x01); // Reset LCD Display
lcd_cmd(0x06); // Shift Display Right
lcd_cmd(0x0C); // Display ON cursor Blinking
lcd_cmd(0x80); // First Line First Display
lcd_data('A');
SBUF='A';
while(!TI);
TI=0;
while(1)
{
keypad_routine();
}
}
void keypad_routine()
{
unsigned int j;
P2=0x7E; //row 0 selected 0111 1110
if((!P2_4)&&(P2_5)&&(P2_6))
{
lcd_data('1');
delay(100);
}
else if((P2_4)&&(!P2_5)&&(P2_6))
{
lcd_data('2');
delay(100);
}
else if((P2_4)&&(P2_5)&&(!P2_6))
{
lcd_data('3');
delay(100);
}
P2=0x7D; //row 1 selected 0111 1101
if((!P2_4)&&(P2_5)&&(P2_6))
{
lcd_data('4');
delay(100);
}
else if((P2_4)&&(!P2_5)&&(P2_6))
{
lcd_data('5');
delay(100);
}
else if((P2_4)&&(P2_5)&&(!P2_6))
{
lcd_data('6');
delay(100);
}
P2=0x7B; //row 2 selected 0111 1011
if((!P2_4)&&(P2_5)&&(P2_6))
{
lcd_data('7');
delay(100);
}
else if((P2_4)&&(!P2_5)&&(P2_6))
{
lcd_data('8');
delay(100);
}
else if((P2_4)&&(P2_5)&&(!P2_6))
{
lcd_data('9');
delay(100);
}
P2=0x77; //row 3 selected 0111 0111
if((!P2_4)&&(P2_5)&&(P2_6))
{
// lcd_cmd(0x01);lcd_cmd(0x80);
lcd_data('*');
delay(100);
}
else if((P2_4)&&(!P2_5)&&(P2_6))
{
lcd_data('0');
delay(100);
}
else if((P2_4)&&(P2_5)&&(!P2_6))
{
lcd_data('#');
delay(100);
}
}
No comments:
Post a Comment