Professional Documents
Culture Documents
Microcontroller Tutorial: Charles Vanpariya U17EE054
Microcontroller Tutorial: Charles Vanpariya U17EE054
Microcontroller Tutorial: Charles Vanpariya U17EE054
TUTORIAL
Charles Vanpariya
U17EE054
#include<reg51.h>
void main()
num/=0x0a;
P0 = dec[0];
P1 = dec[1];
P2 = dec[2];
while(1);
}
#include<reg51.h>
bit action_flag = 0;
void toisr(void);
void main()
TMOD = 0X01;
TH0 = msb;
TL0 = lsb;
IE = 0X82;
TR0 = 1;
while(1)
if(action_flag == 1)
action_flag = 0;
if((num&1) == 1)
out = 1;
else out = 0;
num = num>>1;
}
#include<reg51.h>
}
#include <string.h>
#include <reg51.h>
bit action_flag=0;
sbit in0= P1^0;
sbit in1= P1^1;
void main(void)
in0=1;
in1=1;
P0=0;
l1=strlen(str1);
l2=strlen(str2);
l3=strlen(str3);
l4=strlen(str4);
IE=0X82;
TMOD=0X01;
TH0=MSB;
TL0=LSB;
TR0=1;
while(1)
{
if(in1==0 && in0==0)
for(i=0;i<l1;i++)
while (action_flag==0);
action_flag=0;
P0=str1[i];
{
for(i=0;i<l2;i++)
while (action_flag==0);
action_flag=0;
P0=str2[i];
for(i=0;i<l3;i++)
while (action_flag==0);
action_flag=0;
P0=str3[i];
for(i=0;i<l4;i++)
while (action_flag==0);
action_flag=0;
P0=str4[i];
TH0=MSB;
TL0=LSB;
action_flag=1;
return;
}
#include <reg51.h>
out=0;
for(i=0;i<10;i++)
sum=sum+d[i];
send =sum;
If(sum>0x4A)
send=~sum;
send=send+1;
for(i=0;i<16;i++)
while(action_flag==0);
action_flag=0;
if(check==0)
out =0;
else
out=1;
send=send>>1;
while(1);
TH0=MSB;
TL0=LSB;
action_flag=1;
}
#include<reg51.h>
#include<math.h>
sbit ALE=P3^1;
sbit EOC=P3^2;
sbit OE=P3^3;
sbit SOC=P3^4;
sbit a=P3^5;
sbit b=P3^6;
sbit c=P3^7;
sbit rs = P2^7;
sbit rw = P2^6;
sbit en = P2^5;
sbit busy = P0^7;
bit takesample = 1;
double volt,sqV=0,current,sqC=0;
unsigned char nv=0,nc=0;
unsigned int finalV,finalC;
void adc(bit,bit,bit,bit);
void calculate(void);
void lcdinit(void);
void display(void);
void t0_isr(void);
void main()
unsigned char i;
P1 = 0xff;
EOC = 1;
ALE = 0;
SOC = 0;
OE = 0;
TH0 = 0X10;
TL0 = 0X00;
IE = 0X82;
lcdinit();
lcdcmd(0x80);
for(i=0 ; i< 7 ; i++)
lcddata(str1[i]);
lcdcmd(0xC0);
lcddata(str2[i]);
TR0 = 1;
calculate();
display();
while(1);
a = x;
b = y;
c = z;
delay(1);
ALE = 1;
delay(1);
SOC = 1;
delay(1);
ALE = 0;
SOC = 0;
while(EOC == 1);
OE = 1;
delay(1);
value = P1;
OE = 0;
if(VorI == 0)
sqV += volt;
else
current = current*current;
sqC += current;
return;
void calculate(void)
unsigned char i;
sqV = sqV/nv;
sqV = sqrt(sqV);
finalV = sqV*1000;
V[i-1] = finalV%10;
finalV/=10;
I[i-1] = finalC%10;
finalC/=10;
return;
TR0 = 0;
takesample = 0;
return;
ready();
P0 = cmd;
rs = 0; rw
= 0; en =
1;
delay(1);
en = 0;
return;
ready();
P0 = d;
rs = 1;
rw = 0;
en = 1;
delay(1);
en = 0;
return;
void ready(void)
busy = 1;
rs = 0; rw = 1;
while(busy == 1)
en = 0;
delay(1);
en = 1;
return;
}
void lcdinit(void)
lcdcmd(0x38);
lcdcmd(0x01);
lcdcmd(0x0c);
lcdcmd(0x06);
void display(void)
lcdcmd(0x87);
lcddata(V[0] + 0x30);
lcddata('.');
lcddata(V[1] + 0x30);
lcddata(V[2] + 0x30);
lcddata(V[3] + 0x30);
lcdcmd(0xC7);
lcddata(I[0] + 0x30);
lcddata('.');
lcddata(I[1] + 0x30);
lcddata(I[2] + 0x30);
lcddata(I[3] + 0x30);
return;
}
#include<reg51.h>
#include<math.h>
sbit ALE=P3^1;
sbit EOC=P2^0;
sbit OE=P2^1;
sbit SOC=P3^4;
sbit a=P3^5;
sbit b=P3^6;
sbit c=P3^7;
sbit rs = P2^7;
sbit rw = P2^6;
sbit en = P2^5;
sbit busy = P0^7;
void adc(bit,bit,bit);
void calculate(void);
void lcdinit(void);
void display(void);
void ex0_isr(void);
void t0_isr(void);
void ex1_isr(void);
void t1_isr(void);
void main()
P1 = 0xff;
EOC = 1;
ALE = 0;
SOC = 0;
OE = 0;
TH0 = 0XC4;
TL0 = 0X00;
TH1 = 0XC4;
TL1 = 0X00;
IE0 = 1;
IE1 = 1;
lcdinit();
while(1)
{
while(flag<2);
flag = 0;
calculate();
display();
TR0 = 1;
return;
}
void t0_isr(void) interrupt 1
adc(0,0,0);
vm = value*(5/255);
TR0 = 0;
flag++;
return;
TR1 = 1;
return;
TR1 = 0;
adc(1,0,0);
im = value*(5/255);
flag++;
return;
a = x;
b = y;
c = z;
delay(1);
ALE = 1;
delay(1);
SOC = 1;
delay(1);
ALE = 0;
SOC = 0;
while(EOC == 1);
OE = 1;
delay(1);
value = P1;
OE = 0;
return;
}
void calculate(void)
unsigned char i;
vrms = vm*1000/sqrt(2);
irms = im*1000/sqrt(2);
V[i-1] = vrms%10;
vrms/=10;
I[i-1] = irms%10;
irms/=10;
return;
ready();
P0 = cmd;
rs = 0;
rw = 0;
en = 1;
delay(1);
en = 0;
return;
}
void lcddata(unsigned char d)
ready();
P0 = d;
rs = 1;
rw = 0;
en = 1;
delay(1);
en = 0;
return;
void ready(void)
busy = 1;
rs = 0; rw = 1;
while(busy == 1)
{
en = 0;
delay(1);
en = 1;
return;
void lcdinit(void)
unsigned char i;
lcdcmd(0x38);
lcdcmd(0x01);
lcdcmd(0x0c);
lcdcmd(0x06);
lcdcmd(0x80);
lcddata(str1[i]);
lcdcmd(0xC0);
lcddata(str2[i]);
return;
}
void display(void)
lcdcmd(0x87);
lcddata(V[0] + 0x30);
lcddata('.');
lcddata(V[1] + 0x30);
lcddata(V[2] + 0x30);
lcddata(V[3] + 0x30);
lcdcmd(0xC7);
lcddata(I[0] + 0x30);
lcddata('.');
lcddata(I[1] + 0x30);
lcddata(I[2] + 0x30);
lcddata(I[3] + 0x30);
return;
}
void delay(unsigned int n)
}
#include<reg51.h>
#include<math.h>
sbit ALE=P3^1;
sbit EOC=P3^2;
sbit OE=P3^3;
sbit SOC=P3^4;
sbit a=P3^5;
sbit b=P3^6;
sbit c=P3^7;
sbit rs = P2^7;
sbit rw = P2^6;
sbit en = P2^5;
sbit busy = P0^7;
bit takesample = 1;
unsigned char value,V[4], I[4];
unsigned char str1[7] = "Vrms : ";
unsigned char str2[7] = "Irms : ";
double volt,current;
void calculate(void);
void lcdinit(void);
void display(void);
void main()
unsigned char i;
P1 = 0xff;
EOC = 1;
ALE = 0;
SOC = 0;
OE = 0;
lcdinit();
while(1)
adc(0,0,0);
volt = (value*5)/(255*0.9);
vrms = volt*1000;
adc(1,0,0);
current = (value*5)/(255*0.9);
irms = current*1000;
calculate();
{
a = x;
b = y;
c = z;
delay(1);
ALE = 1;
delay(1);
SOC = 1;
delay(1);
ALE = 0;
SOC = 0;
while(EOC == 1);
OE = 1;
delay(1);
value = P1;
OE = 0;
return;
void calculate(void)
unsigned char i;
V[i-1] = vrms%10;
vrms/=10;
I[i-1] = irms%10;
irms/=10;
return;
ready();
P0 = cmd;
rs = 0;
rw = 0;
en = 1;
delay(1);
en = 0;
return;
ready();
P0 = d;
rs = 1;
rw = 0;
en = 1;
delay(1);
en = 0;
return;
void ready(void)
{
busy = 1;
rs = 0; rw = 1;
while(busy == 1)
en = 0;
delay(1);
en = 1;
return;
void lcdinit(void)
unsigned char i;
lcdcmd(0x38);
lcdcmd(0x01);
lcdcmd(0x0c);
lcdcmd(0x06);
lcdcmd(0x80);
lcddata(str1[i]);
lcdcmd(0xC0);
lcddata(str2[i]);
}
void display(void)
lcdcmd(0x87);
lcddata(V[0] + 0x30);
lcddata('.');
lcddata(V[1] + 0x30);
lcddata(V[2] + 0x30);
lcddata(V[3] + 0x30);
lcdcmd(0xC7);
lcddata(I[0] + 0x30);
lcddata('.');
lcddata(I[1] + 0x30);
lcddata(I[2] + 0x30);
lcddata(I[3] + 0x30);
return;
}
#include<reg51.h>
#include<math.h>
sbit ALE=P3^1;
sbit EOC=P2^0;
sbit OE=P2^1;
sbit SOC=P3^4;
sbit a=P3^5;
sbit b=P3^6;
sbit c=P3^7;
sbit rs = P2^7;
sbit rw = P2^6;
sbit en = P2^5;
sbit busy = P0^7;
void adc(bit,bit,bit);
void calculate(void);
void lcdinit(void);
void display(void);
void ex0_isr(void);
void t0_isr(void);
void ex1_isr(void);
void t1_isr(void);
void main()
P1 = 0xff;
EOC = 1;
ALE = 0;
SOC = 0;
OE = 0;
TH0 = 0XC4;
TL0 = 0X00;
TH1 = 0XC4;
TL1 = 0X00;
IE0 = 1;
IE1 = 1;
lcdinit();
while(1)
{
while(flag<3);
flag = 0;
calculate();
display();
TR0 = 1;
return;
adc(0,0,0);
vm = value*(5/255);
adc(1,0,0);
imcp = value*(5/255);
TR0 = 0;
flag++;
return;
TR1 = 1;
adc(0,0,0);
vmsp = value*(5/255);
flag++;
return;
TR1 = 0;
adc(1,0,0);
im = value*(5/255);
flag++;
}
a = x;
b = y;
c = z;
delay(1);
ALE = 1;
delay(1);
SOC = 1;
delay(1);
ALE = 0;
SOC = 0;
while(EOC == 1);
OE = 1;
delay(1);
value = P1;
OE = 0;
return;
void calculate(void)
unsigned char i;
z0 = (vm*100)/im;
x0 = (vmsp*100)/im;
r0 = sqrt(vm*vm - vmsp*vmsp)*100/im;
pf0 = imcp*100/im;
return;
Z[i-1] = z0%10; X[i-1] = x0%10;
z0/=10; x0/=10;
r0/=10; pf0/=10;
ready();
P0 = cmd;
rs = 0;
rw = 0;
en = 1;
delay(1);
en = 0;
return;
ready();
P0 = d;
rs = 1;
rw = 0;
en = 1;
delay(1);
en = 0;
return;
void ready(void)
busy = 1;
rs = 0; rw = 1;
while(busy == 1)
en = 0;
delay(1);
en = 1;
return;
void lcdinit(void)
unsigned char i;
lcdcmd(0x38);
lcdcmd(0x01);
lcdcmd(0x0c);
lcdcmd(0x06);
lcdcmd(0x80);
{
lcddata(str1[i]);
lcdcmd(0x88);
lcddata(str2[i]);
lcdcmd(0xC0);
lcddata(str3[i]);
lcdcmd(0xC8);
for(i=0 ; i< 4 ; i++)
lcddata(str4[i]);
void display(void)
lcdcmd(0x83);
lcddata(R[0] + 0x30);
lcddata('.');
lcddata(R[1] + 0x30);
lcddata(R[2] + 0x30);
lcdcmd(0x8B);
lcddata(X[0] + 0x30);
lcddata('.');
lcddata(X[1] + 0x30);
lcddata(X[2] + 0x30);
lcdcmd(0xC3);
lcddata(Z[0] + 0x30);
lcddata('.');
lcddata(Z[1] + 0x30);
lcddata(Z[2] + 0x30);
lcdcmd(0xCC);
lcddata(PF[0] + 0x30);
lcddata('.');
lcddata(PF[1] + 0x30);
lcddata(PF[2] + 0x30);
return;
}
void delay(unsigned int n)
}
#include<reg51.h>
#include<math.h>
sbit ALE=P3^1;
sbit EOC=P3^2;
sbit OE=P3^3;
sbit SOC=P3^4;
sbit a=P3^5;
sbit b=P3^6;
sbit c=P3^7;
sbit rs = P2^7;
sbit rw = P2^6;
sbit en = P2^5;
sbit busy = P0^7;
bit takesample = 1;
void adc(bit,bit,bit);
void calculate(void);
void lcdinit(void);
void display(void);
void t0_isr(void);
void main()
P1 = 0xff;
EOC = 1;
ALE = 0;
SOC = 0;
OE = 0;
lcdinit();
TR0 = 1;
adc(0 , 0 , 0);
sqV1 += volt;
adc(1 , 0 , 0);
volt = (value - 128)*(2.5/127); //5 volt corresponds to 255 value
volt = volt*volt;
sqV2 += volt;
adc(0 , 1 , 0);
sqV3 += volt;
n++;
calculate();
display();
while(1);
a = x;
b = y;
c = z;
delay(1);
ALE = 1;
delay(1);
SOC = 1;
delay(1);
ALE = 0;
SOC = 0;
while(EOC == 1);
OE = 1;
delay(1);
value = P1;
OE = 0;
return;
void calculate(void)
unsigned char i;
sqV1 = sqV1/n;
sqV1 = sqrt(sqV1);
arms = sqV1*100;
sqV2 = sqV2/n;
sqV2 = sqrt(sqV2);
brms = sqV2*100;
sqV3 = sqV3/n;
sqV3 = sqrt(sqV3);
crms = sqV3*100;
V1[i-1] = arms%10;
arms/=10;
V2[i-1] = brms%10;
brms/=10;
V3[i-1] = brms%10;
brms/=10;
return;
{
TR0 = 0;
takesample = 0;
return;
ready();
P0 = cmd;
rs = 0;
rw = 0;
en = 1;
delay(1);
en = 0;
return;
ready();
P0 = d;
rs = 1; rw
= 0; en =
1;
delay(1);
en = 0;
return;
void ready(void)
busy = 1;
rs = 0; rw = 1;
while(busy == 1)
en = 0;
delay(1);
en = 1;
return;
void lcdinit(void)
unsigned char i;
lcdcmd(0x38);
lcdcmd(0x01);
lcdcmd(0x0c);
lcdcmd(0x06);
lcdcmd(0x80);
{
lcddata(str1[i]);
lcdcmd(0x85);
lcddata(str2[i]);
lcdcmd(0x8A);
lcddata(str3[i]);
return;
}
void display(void)
lcdcmd(0xC0);
lcddata(V1[0] + 0x30);
lcddata('.');
lcddata(V1[1] + 0x30);
lcddata(V1[2] + 0x30);
lcdcmd(0xC5);
lcddata(V2[0] + 0x30);
lcddata('.');
lcddata(V2[1] + 0x30);
lcddata(V2[2] + 0x30);
lcdcmd(0xCA);
lcddata(V3[0] + 0x30);
lcddata('.');
lcddata(V3[1] + 0x30);
lcddata(V3[2] + 0x30);
return;