Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

miniproject on 8051

Status
Not open for further replies.

noddy

Newbie level 4
Joined
Nov 29, 2011
Messages
5
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Location
bangalore
Activity points
1,310
can someone help me to implement a simple calculator using 8051:idea:
 

its pretty simple , will upload soon:-D
 

hello noddy,
simple calculator means 4x4 keypad
here iam 4x4 keypad with 16x2 LCD is interfacing with 8051(AT89C51)


#include<reg51.h>
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;
sbit c4=P1^7;

sfr lcd=0xA0;//lcd data pins
sbit RS=P3^0;
sbit RW=P3^1;
sbit EN=P3^2;

void delay(unsigned int t)
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<1000;j++);
}

void lcd_cmd(char cmd)
{
P2=cmd;
RS=0;
RW=0;
EN=1;
delay(50);
EN=0;
}

void lcd_data(char dat)
{
P2=dat;
RS=1;
RW=0;
EN=1;
delay(50);
EN=0;
}

void lcd_init()
{
lcd_cmd(0x38);
lcd_cmd(0x0c);
lcd_cmd(0x01);
lcd_cmd(0x06);
lcd_cmd(0x80);
}

void main()
{
unsigned int i;
lcd_init();
while(1)
{
for(i=0;i<4;i++)
{
if(i==0)
{
r1=0;
r2=r3=r4=1;
if(c1==0)
{
lcd_data('7');
delay(100);
}
else if(c2==0)
{
lcd_data('8');
delay(100);
}
else if(c3==0)
{
lcd_data('9');
delay(100);
}
else if(c4==0)
{
lcd_data('/');
delay(100);
}
}

if(i==1)
{
r1=r3=r4=1;
r2=0;
if(c1==0)
{
lcd_data('4');
delay(100);
}
else if(c2==0)
{
lcd_data('5');
delay(100);
}
else if(c3==0)
{
lcd_data('6');
delay(100);
}
else if(c4==0)
{
lcd_data('*');
delay(100);
}
}

if(i==2)
{
r1=r2=r4=1;
r3=0;
if(c1==0)
{
lcd_data('1');
delay(100);
}
else if(c2==0)
{
lcd_data('2');
delay(100);
}
else if(c3==0)
{
lcd_data('3');
delay(100);
}
else if(c4==0)
{
lcd_data('-');
delay(100);
}
}

if(i==3)
{
r1=r2=r3=1;
r4=0;
if(c1==0)
{
lcd_cmd(0x01);
delay(100);
}
else if(c2==0)
{
lcd_data('0');
delay(100);
}
else if(c3==0)
{
lcd_data('=');
delay(100);
}
else if(c4==0)
{
lcd_data('+');
delay(100);
}
}
}
}
}
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top