Update

One new tab added. Open in browser view if it is not visible. (25/08/2022 08:48)

Keypad+LCD Interfacing with 8051

1) Keypad.c

  
#include "lcd.h"
sbit r1=P1^4;
sbit r2=P1^5;
sbit r3=P1^6;
sbit r4=P1^7;
sbit c1=P1^0;
sbit c2=P1^1;
sbit c3=P1^2;
void main()
{
	c1=c2=c3=1;
	r1=r2=r3=r4=0;
	lcd_init();
	while(1)
	{
		r1=0;r2=r3=r4=1;
		if(c1==0)	{lcd_disp('1');delay(10);}
		if(c2==0)	{lcd_disp('2');delay(10);}
		if(c3==0)	{lcd_disp('3');delay(10);}
		
		r2=0;r1=r3=r4=1;
		if(c1==0)	{lcd_disp('4');delay(10);}
		if(c2==0)	{lcd_disp('5');delay(10);}
		if(c3==0)	{lcd_disp('6');delay(10);}
		
		r3=0;r2=r1=r4=1;
		if(c1==0)	{lcd_disp('7');delay(10);}
		if(c2==0)	{lcd_disp('8');delay(10);}
		if(c3==0)	{lcd_disp('9');delay(10);}
		
		r4=0;r2=r3=r1=1;
		if(c1==0)	{lcd_disp('*');delay(10);}
		if(c2==0)	{lcd_disp('0');delay(10);}
		if(c3==0)	{lcd_disp('#');delay(10);}
	}
}

    

2) LCD Header File (lcd.h)

  
#include <reg51.h>
sbit rs=P3^4;
sbit rw=P3^5;
sbit en=P3^6;
void delay(int n)
{
	int i=0;
	for(;i<n*1000;i++);
}
void lcd_command(char c)
{
	P0=c;
	rs=0;
	rw=0;	// write
	en=1;
	delay(1);
	en=0;
	delay(1);	
}
void lcd_disp(char d)
{
	P0=d;
	rs=1;
	rw=0;	// write
	en=1;
	delay(1);
	en=0;
	delay(1);	
}
void lcd_init()
{
	lcd_command(0x01);
	lcd_command(0x38);
	lcd_command(0x06);
	lcd_command(0x0C);
	lcd_command(0x80);
}
    


Proteus Simulation






No comments: