8051 2 DIGIT CALCULATOR C PROGRAM

8051 keypad and lcd

8051 2 DIGIT CALCULATOR C PROGRAM:

#include<reg51.h>

#include<string.h>
#include<stdio.h>
sbit rs   = P2^5;
sbit en   = P2^6;
unsigned char val[] = {’0′,’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9′,’+',’-'};
unsigned char co=0,co1=0;
unsigned int result,kc=0,ki=0,kk=0,kj=0;
void delay()
{
int i = 00,j;
for(i = 0;i < 175;i++)
for(j=0;j<498;j++);
}
void lcd_comm()
{
rs   = 0;
}
void lcd_en ()
{
en  = 1;
en  = 0;
}
void delay_lcd ()
{
int i = 00,j;
for(i = 0;i < 15;i++)
for(j=0;j<498;j++);
}
void timer_delay(int z)
{
int i;
for(i=0;i<z;i++)
{
TMOD=0×10;//1 sec delay
TH1=0×01;
TL1=0×08;
TR1=0;
while(TF1==0);
TF1=0;
TR1=0;
}
}
void init_lcd()
{
lcd_comm();
P0     = 0×38;
lcd_en ();
delay_lcd ();
lcd_comm();
P0      = 0×0c;
lcd_en ();
delay_lcd ();
lcd_comm();
P0       = 0×01;
lcd_en ();
delay_lcd ();
lcd_comm();
P0       = 0×06;
lcd_en ();
delay_lcd ();
lcd_comm();
P0 = 0×81;
lcd_en ();
delay_lcd ();
}
void disp(unsigned char n)
{
rs=1;
P0=val[n/100];
printf(”%d”, n);
// n=n/10;
lcd_en();
lcd_en();
delay_lcd ();
P0=val[(n/10)%10];
lcd_en();
lcd_en();
delay_lcd ();
P0=val[n%10];
lcd_en();
lcd_en();
delay_lcd ();
}
void display(char *name)
{
int l,i;
l=strlen(name);
for(i=0;i<l;i++)
{
rs=1;
//  delay_lcd ();
P0=name[i];
lcd_en();
delay();
}
}
/******************************************************************************************
Keyboard Routine
******************************************************************************************/
unsigned char kb()
{
unsigned char li=0,lj=0xee,lk,lr=45;
for(li=0;li<4;li++)
{
P1=lj;
// delay();
lk=P3;
delay_lcd ();
lk &= 0×38;
if(lk!=0×38)
{
if(lk==0×30)
lr=0+(li*3);
if(lk==0×28)
lr=1+(li*3);
if(lk==0×18)
lr=2+(li*3);
}
lj = (lj<<1)+1;
}
return(lr);
}
//******************************************************************************************//
/*Main Function Routine*/
//******************************************************************************************//
void main()
{
init_lcd();
result = 45;
while(1)
{
result = kb();
if(result!=45)
{
if(result == 10 && co ==2)
{
// kk = ki + kj;
co1=1;  
co = 3;
display(”+”);
}
else if(result == 11 && co ==2)
{
// kk = ki – kj;    
co = 3;
co1 = 2;
display(”-”);
}
else if(result>=0 && result<10)
{
if(co==0)
{
init_lcd();
ki = result;
disp(ki);
co++;
//result = 0;
}
else if(co==1)
{
init_lcd();
ki = (ki*10) + result;
disp(ki);
co++;
//result = 0;
}
else if(co==3)
{
lcd_comm();
P0      = 0×87;
lcd_en ();
delay_lcd ();
kj = result;
disp(kj);
co++;
//result = 0;
}
else if(co==4)
{
lcd_comm();
P0      = 0×87;
lcd_en ();
delay_lcd ();
kj = (kj*10) + result;
disp(kj);
co++;
kc=99;
//result = 0;
}
else
{
init_lcd();
display(”VALUE OVERLOADED”);
ki = kj=kk=0;
co=0;
}
}
delay();
delay();
}
else
{
kc++;
}
if(kc==100)
{
if(co1==1)
{
kk = ki + kj;
lcd_comm();
P0      = 0xc2;
lcd_en ();
delay_lcd ();
disp(kk);
ki=0,kk=0,kj=0,co=0,co1=0,kc=0;
}
else if(co1==2)
{
kk = ki – kj;
lcd_comm();
P0      = 0xc2;
lcd_en ();
delay_lcd ();
disp(kk);
ki=0,kk=0,kj=0,co=0,co1=0,kc=0;
}
}
}
}
//*******************************************End of Main Program******************************************//

#include<reg51.h>

#include<string.h>

#include<stdio.h>

sbit rs   = P2^5;

sbit en   = P2^6;

unsigned char val[] = {’0′,’1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9′,’+',’-'};

unsigned char co=0,co1=0;

unsigned int result,kc=0,ki=0,kk=0,kj=0;

void delay()

{

int i = 00,j;

for(i = 0;i < 175;i++)

for(j=0;j<498;j++);

}

void lcd_comm()

{

rs   = 0;

}

void lcd_en ()

{

en  = 1;

en  = 0;

}

void delay_lcd ()

{

int i = 00,j;

for(i = 0;i < 15;i++)

for(j=0;j<498;j++);

}

void timer_delay(int z)

{

int i;

for(i=0;i<z;i++)

{

TMOD=0×10;//1 sec delay

TH1=0×01;

TL1=0×08;

TR1=0;

while(TF1==0);

TF1=0;

TR1=0;

}

}

void init_lcd()

{

lcd_comm();

P0     = 0×38;

lcd_en ();

delay_lcd ();

lcd_comm();

P0      = 0×0c;

lcd_en ();

delay_lcd ();

lcd_comm();

P0       = 0×01;

lcd_en ();

delay_lcd ();

lcd_comm();

P0       = 0×06;

lcd_en ();

delay_lcd ();

lcd_comm();

P0 = 0×81;

lcd_en ();

delay_lcd ();

}

void disp(unsigned char n)

{

rs=1;

P0=val[n/100];

printf(”%d”, n);

// n=n/10;

lcd_en();

lcd_en();

delay_lcd ();

P0=val[(n/10)%10];

lcd_en();

lcd_en();

delay_lcd ();

P0=val[n%10];

lcd_en();

lcd_en();

delay_lcd ();

}

void display(char *name)

{

int l,i;

l=strlen(name);

for(i=0;i<l;i++)

{

rs=1;

//  delay_lcd ();

P0=name[i];

lcd_en();

delay();

}

}

/******************************************************************************************

Keyboard Routine

******************************************************************************************/

unsigned char kb()

{

unsigned char li=0,lj=0xee,lk,lr=45;

for(li=0;li<4;li++)

{

P1=lj;

// delay();

lk=P3;

delay_lcd ();

lk &= 0×38;

if(lk!=0×38)

{

if(lk==0×30)

lr=0+(li*3);

if(lk==0×28)

lr=1+(li*3);

if(lk==0×18)

lr=2+(li*3);

}

lj = (lj<<1)+1;

}

return(lr);

}

//******************************************************************************************//

/*Main Function Routine*/

//******************************************************************************************//

void main()

{

init_lcd();

result = 45;

while(1)

{

result = kb();

if(result!=45)

{

if(result == 10 && co ==2)

{

// kk = ki + kj;

co1=1;  

co = 3;

display(”+”);

}

else if(result == 11 && co ==2)

{

// kk = ki – kj;    

co = 3;

co1 = 2;

display(”-”);

}

else if(result>=0 && result<10)

{

if(co==0)

{

init_lcd();

ki = result;

disp(ki);

co++;

//result = 0;

}

else if(co==1)

{

init_lcd();

ki = (ki*10) + result;

disp(ki);

co++;

//result = 0;

}

else if(co==3)

{

lcd_comm();

P0      = 0×87;

lcd_en ();

delay_lcd ();

kj = result;

disp(kj);

co++;

//result = 0;

}

else if(co==4)

{

lcd_comm();

P0      = 0×87;

lcd_en ();

delay_lcd ();

kj = (kj*10) + result;

disp(kj);

co++;

kc=99;

//result = 0;

}

else

{

init_lcd();

display(”VALUE OVERLOADED”);

ki = kj=kk=0;

co=0;

}

}

delay();

delay();

}

else

{

kc++;

}

if(kc==100)

{

if(co1==1)

{

kk = ki + kj;

lcd_comm();

P0      = 0xc2;

lcd_en ();

delay_lcd ();

disp(kk);

ki=0,kk=0,kj=0,co=0,co1=0,kc=0;

}

else if(co1==2)

{

kk = ki – kj;

lcd_comm();

P0      = 0xc2;

lcd_en ();

delay_lcd ();

disp(kk);

ki=0,kk=0,kj=0,co=0,co1=0,kc=0;

}

}

}

}

//*******************************************End of Main Program******************************************//

24 bit ADC LTC2400 C Code

LTC2400

#include<REGLV51RD2.h> //Header file for Philips microcontroller 89v51RD2BN Version
#include<stdio.h> //Header file for standard input output
#include<string.h>//Header file for string manipulation
sbit ADC_CS=P1^4;//ADC Chip select is connected with 8051 port pin P1.5
sbit ADC_SD0=P1^6;//ADC serial data out signal is connected with 8051 port pin P1.6
sbit ADC_SCK=P1^7;//ADC serial clock signal is connected with 8051 port pin P1.7
xdata char *ptr_cmd = (xdata char *)0×0FFF8; // LCD comm, 0×0FFF8 is memory address for LCD comm write
xdata char *ptr_en = (xdata char *)0×0FFF9; //LCD Enable, 0×0FFF9 is memory address for LCD data write
unsigned long x1,x2,x3,x4,x5,s;//Global Declaration
unsigned long filter_ADC(void);//Protype Declaration for ADC conversion
unsigned long read_ADC1(void);//Protype Declaration for ADC conversion
void lcd_comm();//prototype Declaration
void delay1(); // ,,
void delay();  //  ,,
void display(char *name);//,,
void disp(long int name1);// ,,
void init_lcd();//,,
void main() //Program starts for main funtion here
{
long d; //Declarations
unsigned long int t;//,,
unsigned char x,y;//,,
init_lcd();
t=s;
d=filter_ADC();        //return 2.5v adc value
printf(”%8ld\n”,s);   //print the adc value display in hyperterminal
display(”24BIT ADC OUTPUT”);//display in LCD
lcd_comm();       // LCD command routine call function
*(ptr_en) = 0xc0;// LCD display for 2nd line 1st location
delay1();   //call for delay routine
{
disp(((s%100000000)/10000000)+48);// LCD display for corresponding digit mask
display(”.”);                    // and convert to ascii 0 for 48
disp(((s%10000000)/1000000)+48);// ,,
disp(((s%1000000)/100000)+48); // ,,
disp(((s%100000)/10000)+48);  // ,,
disp(((s%10000)/1000)+48);   // ,,
disp(((s%1000)/100)+48);    // ,,
disp(((s%100)/10)+48);     // ,,
disp((s%10)+48);          // ,,
}
lcd_comm();//LCD command routine call
*(ptr_en)=0xc8;//LCD 2nd line 8th position
lcd_comm();//LCD command routine call
*(ptr_en) = 0×01;// LCD command for clear the display
delay1();//Delay routine call for some delay
}
unsigned long  filter_ADC(void)//ADC function routine call
{
x5 = x4;
x4 = x3;
x3 = x2;
x2 = x1;
x1 = read_ADC1();
return ((((x1+x2+x3+x4+x5)/5)*148)/100);// x 148 E-9 convert to 2.59V
}
unsigned long read_ADC1(void)//Main funtion for ADC Routine
{
char k;   //Declarations
unsigned long int n;//
n=0;         //intialise n is assign to 0
ADC_CS = 0; //intialise ADC CHIP Select low
for(k=0; k<32; k++)   //32 bits for adc conversion process
{
n<<= 1;             //n value left shift by 1 time
ADC_SCK = 1;       //SCK for HIGH
n |= ADC_SD0;     //SD0 bitwise or with n
ADC_SCK = 0;     // SCK for LOW
}
ADC_CS = 1;     //ADC Chip Select is HIGH
n&=0×01fffffff; // maskout sign bit
n>>=4; // get 24-bit conversion result
s=n; // 24-bit conversion result is stored in temp variable
return n;// return the n value
}
void busy_check()//Function call for busy_check data send or not
{
*ptr_cmd = 0×02;
while((*ptr_en & 0×80) != 0×00){} //condition check for busy flag
}
void delay() //Function call for delay routine
{
unsigned int i =100000;
while(i–);
}
void delay1()  //Function call for delay routine
{
unsigned int i =10;
while(i–);
}
void lcd_comm()
{
*(ptr_cmd)   = 0×00;
}
void init_lcd()//Function call for initialisation for LCD
{
lcd_comm();
*(ptr_en)       = 0×38; //LCD command for 2 lines and 5×7 matrix
delay();
busy_check();
lcd_comm();
*(ptr_en)       = 0×0e; //LCD command for Display on,cursor blinking
busy_check();
delay();
lcd_comm();
*(ptr_en)       = 0×80;//LCD command Force cursor to beginning of 1st line
busy_check();
delay();
lcd_comm();
*(ptr_en) = 0×01;//LCD command for clear display screen
busy_check();
delay();
}
void disp(long int name1)   //LCD display routine for digits display
{
*(ptr_cmd) = 0×01;
*(ptr_en) = name1;
busy_check();
delay1();
}
void display(char *name) //LCD display routine for character display
{
int l = strlen(name);
int i;
for(i = 0;i < l;i++)
{
*(ptr_cmd) = 0×01;
*(ptr_en) = name[i];
busy_check();
delay1();
}
}

24BIT ADC LTC2400 C CODE:

#include<REGLV51RD2.h> //Header file for Philips microcontroller 89v51RD2BN Version

#include<stdio.h> //Header file for standard input output

#include<string.h>//Header file for string manipulation

sbit ADC_CS=P1^4;//ADC Chip select is connected with 8051 port pin P1.5

sbit ADC_SD0=P1^6;//ADC serial data out signal is connected with 8051 port pin P1.6

sbit ADC_SCK=P1^7;//ADC serial clock signal is connected with 8051 port pin P1.7

xdata char *ptr_cmd = (xdata char *)0×0FFF8; // LCD comm, 0×0FFF8 is memory address for LCD comm write

xdata char *ptr_en = (xdata char *)0×0FFF9; //LCD Enable, 0×0FFF9 is memory address for LCD data write

unsigned long x1,x2,x3,x4,x5,s;//Global Declaration

unsigned long filter_ADC(void);//Protype Declaration for ADC conversion

unsigned long read_ADC1(void);//Protype Declaration for ADC conversion

void lcd_comm();//prototype Declaration

void delay1(); // ,,

void delay();  //  ,,

void display(char *name);//,,

void disp(long int name1);// ,,

void init_lcd();//,,

void main() //Program starts for main funtion here

{

long d; //Declarations

unsigned long int t;//,,

unsigned char x,y;//,,

init_lcd();

t=s;

d=filter_ADC();        //return 2.5v adc value

printf(”%8ld\n”,s);   //print the adc value display in hyperterminal

display(”24BIT ADC OUTPUT”);//display in LCD

lcd_comm();       // LCD command routine call function

*(ptr_en) = 0xc0;// LCD display for 2nd line 1st location

delay1();   //call for delay routine

{

disp(((s%100000000)/10000000)+48);// LCD display for corresponding digit mask

display(”.”);                    // and convert to ascii 0 for 48

disp(((s%10000000)/1000000)+48);// ,,

disp(((s%1000000)/100000)+48); // ,,

disp(((s%100000)/10000)+48);  // ,,

disp(((s%10000)/1000)+48);   // ,,

disp(((s%1000)/100)+48);    // ,,

disp(((s%100)/10)+48);     // ,,

disp((s%10)+48);          // ,,

}

lcd_comm();//LCD command routine call

*(ptr_en)=0xc8;//LCD 2nd line 8th position

lcd_comm();//LCD command routine call

*(ptr_en) = 0×01;// LCD command for clear the display

delay1();//Delay routine call for some delay

}

unsigned long  filter_ADC(void)//ADC function routine call

{

x5 = x4;

x4 = x3;

x3 = x2;

x2 = x1;

x1 = read_ADC1();

return ((((x1+x2+x3+x4+x5)/5)*148)/100);// x 148 E-9 convert to 2.59V

}

unsigned long read_ADC1(void)//Main funtion for ADC Routine

{

char k;   //Declarations

unsigned long int n;//

n=0;         //intialise n is assign to 0

ADC_CS = 0; //intialise ADC CHIP Select low

for(k=0; k<32; k++)   //32 bits for adc conversion process

{

n<<= 1;             //n value left shift by 1 time

ADC_SCK = 1;       //SCK for HIGH

n |= ADC_SD0;     //SD0 bitwise or with n

ADC_SCK = 0;     // SCK for LOW

}

ADC_CS = 1;     //ADC Chip Select is HIGH

n&=0×01fffffff; // maskout sign bit

n>>=4; // get 24-bit conversion result

s=n; // 24-bit conversion result is stored in temp variable

return n;// return the n value

}

void busy_check()//Function call for busy_check data send or not

{

*ptr_cmd = 0×02;

while((*ptr_en & 0×80) != 0×00){} //condition check for busy flag

}

void delay() //Function call for delay routine

{

unsigned int i =100000;

while(i–);

}

void delay1()  //Function call for delay routine

{

unsigned int i =10;

while(i–);

}

void lcd_comm()

{

*(ptr_cmd)   = 0×00;

}

void init_lcd()//Function call for initialisation for LCD

{

lcd_comm();

*(ptr_en)       = 0×38; //LCD command for 2 lines and 5×7 matrix

delay();

busy_check();

lcd_comm();

*(ptr_en)       = 0×0e; //LCD command for Display on,cursor blinking

busy_check();

delay();

lcd_comm();

*(ptr_en)       = 0×80;//LCD command Force cursor to beginning of 1st line

busy_check();

delay();

lcd_comm();

*(ptr_en) = 0×01;//LCD command for clear display screen

busy_check();

delay();

}

void disp(long int name1)   //LCD display routine for digits display

{

*(ptr_cmd) = 0×01;

*(ptr_en) = name1;

busy_check();

delay1();

}

void display(char *name) //LCD display routine for character display

{

int l = strlen(name);

int i;

for(i = 0;i < l;i++)

{

*(ptr_cmd) = 0×01;

*(ptr_en) = name[i];

busy_check();

delay1();

}

}

R.F Transmitter Receiver C Code

R.F Transmitter code:

#include “AT89×52.h”
#include “stdio.h”
unsigned char dat[40],i;
bit flag=0,ok=0;
void Delay(unsigned int tick)
{
while(tick–);
}
void Serial(void) interrupt 4 using 1
{
if(RI)
{
EA=RI=0;
dat[i]=SBUF;
if(dat[i]==’\n’) flag=1;
i++;
EA=1;
}
}
void main(void)
{
unsigned char j;
P0=P1=P2=P3=0xFF;
SCON=0×52;
TMOD=0×20;
TH1=TL1=0xFD;
TR1=1;
TI=1;
ES=EA=1;
while(1)
{
if(flag==1)
{
EA=0;
P1_3=0;
P2=’!';
Delay(0xFFFF);
for(j=0;j<i-1;j++)
{
P2=dat[j];
Delay(0xFFFF);
}
P2=’@';
Delay(0xFFFF);
EA=1;
P1_3=1;
flag=j=i=0;
}
}
}

#include “AT89×52.h”

#include “stdio.h”

unsigned char dat[40],i;

bit flag=0,ok=0;

void Delay(unsigned int tick)

{

while(tick–);

}

void Serial(void) interrupt 4 using 1

{

if(RI)

{

EA=RI=0;

dat[i]=SBUF;

if(dat[i]==’\n’) flag=1;

i++;

EA=1;

}

}

void main(void)

{

unsigned char j;

P0=P1=P2=P3=0xFF;

SCON=0×52;

TMOD=0×20;

TH1=TL1=0xFD;

TR1=1;

TI=1;

ES=EA=1;

while(1)

{

if(flag==1)

{

EA=0;

P1_3=0;

P2=’!';

Delay(0xFFFF);

for(j=0;j<i-1;j++)

{

P2=dat[j];

Delay(0xFFFF);

}

P2=’@';

Delay(0xFFFF);

EA=1;

P1_3=1;

flag=j=i=0;

}

}

}

R.F Receiver code:

#include “AT89×52.h”

#include “stdio.h”

bit s,flag,flag1;

unsigned char e,dat[40];

void Delay(unsigned int d)

{

while(d–);

}

void ser(void)interrupt 4 using 1

{

if(RI)

{

EA=RI=0;

e=SBUF;

if(e==’*')

{

P0_0=0;

s=1;

}

EA=1;

}

}

void main(void)

{

unsigned char j,i=0,data1;

P0=P1=P2=P3=0xFF;

TMOD=0×20;

TH1=TL1=0xFD;

SCON=0×52;

TR1=1;

ES=EA=1;

for(i=0;i<4;i++)

{

P0_5=0;

P2=0xFE;

Delay(0xFFFF);

P2=0xFD;

Delay(0xFFFF);

P2=0xFB;

Delay(0xFFFF);

P2=0xF7;

Delay(0xFFFF);

}

while(1)

{

while(P3_2==1);

data1=P1;

if(data1==’!') flag=1;

if(s)

{

Delay(0xFFFF); Delay(0xFFFF);

P0_0=1; s=0;

}

if(flag==1)

{

dat[i]=data1;

i++;

Delay(0xFFFF);

}

if(data1==’@')

{

flag=0;

flag1=1;

}

if(flag1==1)

{

for(j=0;j<i;j++)

{

TI=0;

SBUF=dat[j];

while(TI==0);

}

i=j=flag=flag1=0;

}

}

}

EMBEDDED ‘C’

ARM MICROCONTROLLER BASICS

RFID BASICS

rfid-enabled-receiving-and-dispatch

DOWNLOAD LINK:

RFID BASICS

VXWorks Basics and Programming

RTLInux Basics

rtlinux

DOWNLOAD LINK:

RTLinux basics

LINUX BASICS

linux-logo

DOWNLOAD LINK:

linux basics

DEVICE DRIVER BASICS

DEVICE DRIVER

DOWNLOAD LINK:

DEVICE DRIVER BASICS

free hit counter code
download free hit counter code