microontroller atmel 89c51 project

5
// Program to make a Liquid level indicator using LCD #include<reg51.h> sbit rs=P1^0; //register select pin sbit rw=P1^1; //read/write pin sbit e=P1^2; //enable pin sbit motor=P1^3; sbit quat=P3^0; //pin connected to quater level of tank sbit half=P3^1; //pin connected to half level of tank sbit quat_3=P3^2; //pin connected to three -fourth level of tank sbit full=P3^3; //pin connected to full level of tank sbit spkr_on=P3^4; sbit spkr_off=P3^5; // pin to off speaker void delay(int k) //delay function { int i,j; for(i=0;i<k;i++) for(j=0;j<1275;j++); } void write(int j) //write function { rs=1; //selecting command register rw=0; //selecting to write P2=j; //putting value on the pins e=1; //strobe the enable pin delay(1); e=0;

Upload: abhinav-jain

Post on 20-Jun-2015

373 views

Category:

Education


2 download

DESCRIPTION

waterlevel indicator LCD by using Microontroller ATMEL 89C51

TRANSCRIPT

// Program to make a Liquid level indicator using LCD

#include<reg51.h>

sbit rs=P1^0; //register select pin

sbit rw=P1^1; //read/write pin

sbit e=P1^2; //enable pin

sbit motor=P1^3;

sbit quat=P3^0; //pin connected to quater level of tank

sbit half=P3^1; //pin connected to half level of tank

sbit quat_3=P3^2; //pin connected to three -fourth level of tank

sbit full=P3^3; //pin connected to full level of tank

sbit spkr_on=P3^4;

sbit spkr_off=P3^5; // pin to off speaker

void delay(int k) //delay function

{

int i,j;

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

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

}

void write(int j) //write function

{

rs=1; //selecting command register

rw=0; //selecting to write

P2=j; //putting value on the pins

e=1; //strobe the enable pin

delay(1);

e=0;

return;

}

void cmd(int j) //command function

{

P2=j; //put the value on pins

rs=0; //selecting command register

rw=0; //selecting to write

e=1; //strobe enable pin

delay(1);

e=0;

return;

}

void puts(char *a) //puts function to print a string

{

unsigned int p=0;

for(;a[p]!=0;p++)

write(a[p]);

}

void lcd_init(void) // function to initialise the LCD

{

cmd(0x38); //setting 8-bit interface, 2 lines, 5*7 Pixels

delay(1);

cmd(0x0e); //turning on underline visible cursor

delay(1);

cmd(0x01); //clearing screen

cmd(0x80); //moving cursor to the begining of line 1 of LCD

}

void main()

{

quat=half=quat_3=full=spkr_off=1; //configuring as input pins

quat=half=quat_3=full=spkr_off=0; //lowering input pins

spkr_on=1; // making speaker on pin high,as it works on negative logic

motor=1;

while(1)

{

while(quat==0&&half==0&&quat_3==0&&full==0&&spkr_off==0) //condition when tank is empty

{

lcd_init(); // initialising LCD

puts("VACANT"); //printing VACANT on lcd

motor=1;

delay(200);

}

while(quat==1&&half==0&&quat_3==0&&full==0&&spkr_off==0) //condition when tank is

quater

{ motor=1;

lcd_init();

puts("QUATER"); //printing QUATER on lcd

delay(200);

}

while(quat==1&&half==1&&quat_3==0&&full==0&&spkr_off==0) //condition when tank is

half

{

lcd_init();

puts("HALF"); //printing HALF on lcd

motor=1;

delay(200);

}

while(quat==1&&half==1&&quat_3==1&&full==0&&spkr_off==0) //condition when tank is

three-fourth

{

lcd_init();

puts("3/4 FULL"); //printing 3/4 FULL on lcd

motor=1;

delay(200);

}

while(quat==1&&half==1&&quat_3==1&&full==1&&spkr_off==0) //condition when tank is full

{

lcd_init();

puts("FULL;Motor off "); //printing FULL;CLOSE TAP on lcd

spkr_on=0;// Enabling speaker

motor =0;

delay(200);

}

while(quat==1&&half==1&&quat_3==1&&full==1&&spkr_on==0&&spkr_off==1)//enabling high

speaker_off pin

{

spkr_on=1;//disabling speaker

motor=0;

}

}

}