Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

#include<REGX52.

h>
#define dataport P0
unsigned char timcnt;
unsigned char cnt;
unsigned char rcnt;
unsigned char outcnt;
unsigned char bdata outen;
unsigned char bdata outrun;
bit rdir;
sbit visen=outen^1;
sbit exen=outen^2;
sbit hornen=outen^3;
sbit mgunen=outen^4;
sbit amben=outen^5;
sbit polen=outen^6;
sbit fsen=outen^7;
sbit visrn=outrun^1;
sbit exrn=outrun^2;
sbit hornrn=outrun^3;
sbit mgunrn=outrun^4;
sbit ambrn=outrun^5;
sbit polrn=outrun^6;
sbit fsrn=outrun^7;
sbit trig=P3^5;
sbit dls=P3^7;
sbit rs=P3^1;
sbit rw=P3^3;
sbit e=P3^4;
sbit ut=P2^3;
sbit bth=P2^4;
sbit exct=P2^5;
sbit act=P2^6;
sbit vct=P2^7;
sbit dlsct=P3^6;
sbit mgun=P2^0;
sbit asirn=P2^1;
sbit fsirn=P2^2;
sbit horn=P1^0;
sbit audioon=P1^1;
sbit mdir=P1^4;
sbit drmot=P1^5;
sbit vismot=P1^6;
sbit usrct=P1^7;

void delay(unsigned int msec)


{
int i,j;
for(i=0;i<msec;i++)
for(j=0;j<1275;j++);
}
void timsec(unsigned int sec)
{
unsigned int i;
unsigned char j;
TMOD=0x01;
for(i=0;i<=sec*14;i++)
{
for(j=0;j<=250;j++);
{
TH0=0x00;
TL0=0x00;
TR0=0;
TF0=0;
TR0=1;
while(!TF0);
}
}
}

void lcd_cmd(unsigned char item) // Function to send command to LCD


{
dataport = item;
rs= 0;
rw=0;
e=1;
delay(1);
e=0;
return;
}
void lcd_data(unsigned char item) // Function to send data to LCD
{
dataport = item;
rs= 1;
rw=0;
e=1;
delay(1);
e=0;
return;
}
void lcd_data_string(unsigned char *str) // Function to send string to LCD
{
int i=0;
while(str[i]!='\0')
{
lcd_data(str[i]);
i++;
delay(1);
}
return;
}
void send_pulse(void)
{
TH0=0x00;TL0=0x00;
trig=1; //Sending trigger pulse
delay(5); //Wait for about 10us
trig=0; //Turn off trigger
}
void chaser(void)
{
lcd_cmd(0xC0);
lcd_data_string("chaser");
outcnt=outcnt+1;
if(outcnt>14)
outcnt=0;
switch(outcnt)
{
case 0:
outrun=0x80;
break;
case 1:
outrun=0x42;
break;
case 2:
outrun=0x84;
break;
case 3:
outrun=0x10;
break;
case 4:
outrun=0x40;
break;
case 5:
outrun=0x12;
break;
case 6:
outrun=0x14;
break;
case 7:
outrun=0x82;
break;
case 8:
outrun=0x20;
break;
case 9:
outrun=0x0A;
break;
case 10:
outrun=0x24;
break;
case 11:
outrun=0x0C;
break;
case 12:
outrun=0x08;
break;
case 13:
outrun=0x22;
break;
case 14:
outrun=0x44;
break;
default:
outrun=0x80;
}
exen=!exct;
hornen=!act;
mgunen=!act;
amben=!act;
polen=!act;
fsen=!act;
visen=!vct;
outrun=outrun & outen;

if(fsrn)
{
mgun=1;
asirn=1;
fsirn=0;
audioon=0;
timsec(3);
audioon=1;
fsirn=1;
}
else if(polrn)
{
mgun=1;
asirn=1;
fsirn=1;
audioon=0;
timsec(3);
audioon=1;
}
else if(ambrn)
{
mgun=1;
fsirn=1;
asirn=0;
audioon=0;
timsec(3);
audioon=1;
asirn=1;
}
else if(mgunrn)
{
fsirn=1;
asirn=1;
mgun=0;
audioon=0;
timsec(3);
audioon=1;
mgun=1;
}
else if(hornrn)
{
horn=0;
timsec(2);
horn=1;
}
if(exrn)
{
for(cnt=0;cnt<10;cnt++)
{
mdir=1;
drmot=0;
delay(35);
drmot=1;
mdir=0;
drmot=0;
delay(35);
drmot=1;
}
}
if(visrn)
{
mdir=1;
vismot=0;
delay(20);
vismot=1;
for(cnt=0;cnt<5;cnt++)
{
mdir=0;
vismot=0;
delay(10);
vismot=1;
mdir=1;
vismot=0;
delay(10);
vismot=1;
}
mdir=0;
vismot=0;
delay(20);
vismot=1;
}
}

void rotate(void)
{
if (rcnt>=30)
{
rcnt=0;
rdir=!rdir;
}
mdir=rdir;
usrct=0;
delay(4);
usrct=1;
rcnt=rcnt+1;
}

void main()
{
long int timer_val;
EA=0;
P0=0x00;
P1=0xFF;
P2=0xFF;
P3=0x00;
timsec(1);
lcd_cmd(0x38);
lcd_cmd(0x0c);
delay(2);
lcd_cmd(0x01);
delay(2);
lcd_cmd(0x81);
delay(2);
lcd_data_string("start");
timsec(2);

if(!bth)
{
senseb: while((!dlsct&dls))
{
lcd_cmd(0x01);
lcd_data_string("bright sun");
}
lcd_cmd(0x01);
delay(2);
lcd_data_string("usense&tim");
TMOD=0x09;//timer0 in 16 bit mode with gate enable
TR0=1;//timer run enabled
TH0=0x00;
TL0=0x00;
P3|=0x04;//setting pin P3.2
send_pulse();
while(!INT0); //Waiting until echo pulse is detected
while(INT0|!TF0); //Waiting until echo pulse changes its state
timer_val=(TH0<<8)+TL0;
if(timer_val<2000) //This value can be changed to vary the range
{
lcd_cmd(0xC0);
delay(2);
timcnt=0;
lcd_data_string("target detected");
delay(2);
chaser();
goto senseb;
}
else
{
lcd_cmd(0xC0);
delay(2);
lcd_data_string("nothing");
delay(2);
timcnt=timcnt+1;
if(timcnt>25)
chaser();
rotate();
goto senseb;
}
}
else if(ut)
{
senseu: while((!dlsct&dls))
{
lcd_cmd(0x01);
lcd_data_string("bright sun");
}
lcd_cmd(0x01);
delay(2);
lcd_data_string("usense only");
TMOD=0x09;//timer0 in 16 bit mode with gate enable
TR0=1;//timer run enabled
TH0=0x00;
TL0=0x00;
P3|=0x04;//setting pin P3.2
send_pulse();
while(!INT0); //Waiting until echo pulse is detected
while(INT0|!TF0); //Waiting until echo pulse changes its state
timer_val=(TH0<<8)+TL0;
if(timer_val<2000) //This value can be changed to vary the range
{
lcd_cmd(0xC0);
delay(2);
lcd_data_string("target detected");
delay(2);
chaser();
goto senseu;
}
else
{
lcd_cmd(0xC0);
delay(2);
lcd_data_string("nothing");
delay(2);
rotate();
goto senseu;
}
}
else
{
lcd_cmd(0x01);
delay(2);
lcd_data_string("timer only");
while(1)
{
while((!dlsct&dls))
{
lcd_cmd(0x01);
lcd_data_string("bright sun");
}
timsec(15);
chaser();
}
}
}

You might also like