SOURCE CODE
#include<reg52.h>
#include<string.h>
sfr ldata =0xA0;
sfr SBUF0= 0x90;
sfr SBUF1= 0xC1;
sfr SCONO= 0x98;
sfr SCON1= 0xC0;
sbit RIO= 0x98;
sbit RI1= 0xC0;
sbit TI1= 0xC1;
sbit rs = P0^0;
sbit rw = P0^1;
sbit en = P0^2;
char info[32];
char test[6]={"$GPGLL"};
char comma_position[10];
unsigned int check=0,i,j;
// DELAYED FUNCTION
void delay(unsigned int msec)
{
int i,j ;
for(i=0;i<msec;i++)
for(j=0;j<1275;j++);
}
// LCD COMMAND SENDING FUNCTION
void lcd_cmd(unsigned char item)
{
ldata=value;
rs= 0;
rw=0;
e=1;
delay(1);
e=0;
return;
}
// LCD DATA SENDING FUNCTION
void lcd_data(unsigned char item)
{
ldata=value;
rs= 1;
rw=0;
e=1;
delay(1);
e=0;
return;
}
// LCD STRING SENDING FUNCTION
void lcd_string(unsigned char *str)
{
int i=0;
while(str[i]!='\0')
{
lcd_data(str[i]);
i++;
delay(10);
}
return;
}
// SERIAL PORT 0 SETTING
void serial_data0()
{
TMOD=0x20; //MODE=2
TH1=0xfa; // 4800 BAUD
SCON=0x50; // SERIAL MODE 1 ,8- BIT DATA ,1 STOP BIT ,1 START BIT , RECEIVING ON
TR1=1; //TIMER START
}
// SERIAL PORT 1 SETTING
void serial_data1()
{
TMOD=0x20; //MODE=2
TH1=0xfd; // 9600 BAUD
SCON=0x50; // SERIAL MODE 1 ,8- BIT DATA ,1 STOP BIT ,1 START BIT , RECEIVING ON
TR1=1; //TIMER START
}
// FIND THE COMMA FROM THE GPS DATA
void find_comma()
{
unsigned int i,count=0;
for(i=0;i<32;i++)
{
if(info[i]==',')
{
comma_position[count]=i;
count++;
}
}
}
// RECEIVED DATA FUNCTION FOR GPS MODEM
void receive_data0()
{
while(RI0==0);
info[check]= SBUF0;
if(check<6)
{
if(info[check]!= test[check])
check=0;
else
check++;
}
else
check++;
RI0=0;
}
// RECEIVED DATA FUNCTION FOR GSM MODEM
void receive_data1()
{
while(RI1==0);
value= SBUF1;
RI1=0;
}
// TO DISPLAY THE NAME OF THE PLACE
void lcd_place()
{
if(info[32]= "$GPGLL,26o24,N,75o54,E")
lcd_string("BANASTHALI");
else
lcd_string("NOT FOUND");
}
// TO DISPLAY LATITUDE OF THE PLACE
void lcd_latitude()
{
unsigned int c3=comma_position[0];
lcd_cmd(0x01); //Clear LCD display
lcd_cmd(0x84); //Move cursor to position 6 of line 1
lcd_string("LATITUDE"); //Showing latitude
lcd_cmd(0xC0); //Begining of second line
lcd_data(info[c3+1]);
lcd_data(info[c3+2]);
lcd_data(o);
lcd_data(info[c3+3]);
lcd_data(info[c3+4]);
lcd_data(info[c3+5]);
lcd_data(info[c3+6]);
lcd_data(info[c3+7]);
lcd_data(info[c3+8]);
lcd_data(info[c3+9]);
lcd_data(0x27); //ASCII of minute sign(')
lcd_data(info[c3+10]);
lcd_data(info[c3+11]);
delay(250);
}
//TO DISPLAY LONGITUDE OF THA PLACE
void lcd_longitude()
{
unsigned int c5=comma_position[2];
lcd_cmd(0x01); //Clear LCD display
lcd_cmd(0x84); //Move cursor to position 4 of line 1
lcd_string("LONGITUDE"); //Showing longitude
lcd_cmd(0xC0); //Begining of second line
lcd_data(info[c5+1]);
lcd_data(info[c5+2]);
lcd_data(info[c5+3]);
lcd_data(0);
lcd_data(info[c5+4]);
lcd_data(info[c5+5]);
lcd_data(info[c5+6]);
lcd_data(info[c5+7]);
lcd_data(info[c5+8]);
lcd_data(info[c5+9]);
lcd_data(info[c5+10]);
lcd_data(0x27); //ASCII of minute sign(')
lcd_data(info[c5+11]);
lcd_data(info[c5+12]);
delay(250);
}
void compare()
{
IE=0x00;
find_comma();
lcd_latitude();
lcd_longitude();
lcd_place();
check=0;
IE=0x90;
void GPS()
{
serial_data0();
lcd_cmd(0x38); //2 LINE, 5X7 MATRIX
lcd_cmd(0x0e); //DISPLAY ON, CURSOR BLINKING
IE=0x90;
while(check<32)
{
receive_data0();
}
if(check==32)
compare();
}
// TRANSMIT STRING TO GPS MODEMASCII
void sendstr(unsigned char *chrr)
{
while(*chrr!='\0')
{
SBUF1=*chrr;
TI1=0;
while(TI1==0);
chrr++;
}
}
// TRANSMIT A CHARECTER TO GPS MODEM
void sendchr(unsigned char ch)
{
SBUF1=ch;
TI1=0;
while(TI1==0);
}
// TO INITIALIZE GS MODEM
void GSM_ini()
{
serial_data1();
unsigned char msg[2];
sendstr("AT");
for(i=0;i<2;i++)
msg[i]=receive_data1();
if(msg[0]='o'&&msg[1]='k')
lcd_string("working well");
else
lcd_string("not responding");
sendstr("AT+CPIN=");
sendchr(0x22); //ASCII OF SIGN(")
sendstr("3457");
sendchr(ox22);
}
// SEND MESSAGE TO THE PHONE
void sendmsg()
{
unsigned char msg[32];
sendstr("AT+CPMS=");
sendchr(0x22);
sendstr("SM");
sendchr(0x22);
delay(10);
sendstr("AT+CMGF=1");
delay(10);
sendstr("AT+CMGS=");
sendchr(0x22);
sendstr("8058505354");
sendchr(0x22);
for(i=0;i<32;i++)
{
msg[i]=receive_data0();
sendchr('msg[i]');
}
sendchr(0x1a); // ASCII OF CTRL+Z
}
void main()
{
unsigned char msg[12];
GSM_ini();
sendstr("AT+CNMI=1,1,0,0,0");
for(i=0;i<12;i++)
msg[i]=recieve_data1();
if(msg[0]=='+'&&msg[1]=='C'&&msg[2]=='M'&&msg[3]=='T'&&msg[4]=='I'&&msg[5]==':'&&msg[6]=='"'&&msg[7]=='S'
&&msg[8]=='M'&&msg[9]=='3'&&msg[10]==','&&msg[11]=='3)
{
sendstr("AT+CMGR=3");
for(j=0;j<3;j++)
msg[i]=recieve_data1();
if(msg[0]=='7'&&msg[1]=='8';msg[2]=='6')
sendmsg();
else
sendstr("NOT AUTHORISED");
sendstr("AT+CMGD=3");
}
}
The code for the microcontroller was written on the standards of 8051 using Embedded C. The code was compiled and simulated using Keil (ver.

V).
حقيقة لم اعرف ماذا افعل ارجوووو المساعدة وشكراااااا