Вы находитесь на странице: 1из 6

#include<avr/io.

h>
#include<avr/interrupt.h>
#include<util/delay.h>
#include "sbit.h"
#include "lcd.h"
#define CRY_FREQ 8000000L
#define BAUD_RATE 9600
#define BAUD_VALUE ((CRY_FREQ/16/BAUD_RATE)-1)
void lcd_latitude();
void lcd_longitude();
void compare();
void satelite_used();
void utc_time();
void send_MSG(char * ptr);
void serial_INIT();
void send_string(char * str);
int v=0;
char test[6]={"$GPGGA"};
char info[70];
char data[70];
char lat[]="LATITUDE";
char lon[]="LONGITUDE"
char comma_position[15];
unsigned char check=0;
void serial_INIT()
of serial
{
UCSRC=0X86;
UCSRB|=0XD8;
UBRRL=(unsigned char) BAUD_VALUE;
UBRRH=(unsigned char) (BAUD_VALUE>>8);
}
void send_string(char * str)
{
unsigned char shifts, length;
length = strlen(str);
for(shifts = 0; shifts < length; shifts++)
{
//
_delay_ms(5);
UDR = str[shifts];
while(!( UCSRA & (1<<UDRE)));
}
}
void send_MSG(char * ptr)
{
char j;
for(j=0;j<20;j++)
{
_delay_ms(1000);
send_string("AT\r");
}

//initialization

_delay_ms(1000);
send_string("AT+CMGF=1\r");
_delay_ms(1000);
send_string("AT+CSCS=\"GSM\"\r");
_delay_ms(1000);
send_string("AT+CMGS=\"+919636780184\"\r");
send_string(ptr);
UDR=26;
}
void find_comma()
on for finding comma position
{
unsigned int i,count=0;
for(i=0;i<70;i++)
{
if(info[i]==',')
{
comma_position[count++]=i;
}
}
}
void compare()
{
cli();
//Interrupt disable
find_comma();
on to detect position of comma in the string
lcd_latitude();
on to show Latitude
_delay_ms(500);
lcd_command(0x01);
_delay_ms(200);
lcd_longitude();
on to show Longitude
_delay_ms(500);
lcd_command(0x01);
satelite_used();
_delay_ms(500);
lcd_command(0x01);
utc_time();
_delay_ms(500);
gsm_init();
sei();
upt enable
}
void lcd_latitude()
splay Latitude
{
unsigned int j,c2=comma_position[1];
lcd_command(0x01);
_delay_ms(200);
lcd_gotoxy(1,5);
position 5 of line 1
lcd_printf("LATITUDE");
lcd_gotoxy(2,2);
ursor to position 3 of line 2

//functi

//Functi
//Functi

//Functi

//Interr

//Function to di
//Position of second comma
//Move cursor to
//Move c

_delay_ms(1000);
for(k=0;lat[k]!='\0';k++,v++)
{
data[v]=lat[k];
}
for(j=1;j<=11;j++,v++)
{
data[v]= info[c2+j];
_delay_ms(20);
lcd_putc(info[c2+j]);
if(j==2)
{
lcd_putbyte('d');
data[v]='d';
}
if(j==7)
{
lcd_putbyte(39);
temp[v]=39;
}
}
cli();
}
void lcd_longitude()
splay Longitude
{
unsigned int j,c2=comma_position[3];
lcd_gotoxy(1,5);
position 5 of line 1
lcd_printf("LONGITUDE");
lcd_gotoxy(2,1);
ursor to position 2 of line 2
_delay_ms(1000);
for(l=0;lon[l]!='\0';l++,v++)
{
data[v]=lon[l];
}
for(j=1;j<=12;j++.v++)
{
_delay_ms(20);
lcd_putc(info[c2+j]);
data[v]=info[c2+j];
if(j==3)
{
lcd_putbyte('d');
data[v]='d';
}
if(j==8)
{
lcd_putbyte(39);
data[v]=39;
}
}data[v]='\0';
}
void satelite_used()
{
int i,c3=comma_position[6];

//Function to di
//Position of fourth comma
//Move cursor to
//Move c

lcd_gotoxy(1,2);
lcd_printf("SATELITE-USED");
lcd_gotoxy(2,1);
_delay_ms(1000);
for(i=1;i<=2;i++)
{
_delay_ms(20);
lcd_putc(info[c3+i]);
}
_delay_ms(500);
if(info[c3+i-1]=='0')
{
lcd_command(0x01);
lcd_gotoxy(1,3);
lcd_printf("SINGNAL LOW");
_delay_ms(1000);
}
}
void utc_time()
{
int j,c4=comma_position[0];
lcd_gotoxy(1,5);
lcd_printf("UTC-TIME");
lcd_gotoxy(2,5);
_delay_ms(1000);
for(j=1;j<=6;j++)
{
_delay_ms(20);
lcd_putc(info[c4+j]);
if(j==2)
{
lcd_putbyte(':');
}
if(j==4)
{
lcd_putbyte(':');
}
}
}
int main(void)
{
DDRD=0x0F;
DDRC=0XFF;
DDRB=0XFF;
serial_INIT();
sei();
lcd_init ();
lcd_command (0x01);
lcd_command (0x02);
_delay_ms(100);
lcd_gotoxy (1,5);
lcd_printf ("WELCOME");
_delay_ms(100);

// Home cursor

lcd_command (0x01);
lcd_gotoxy (1,2);
lcd_printf ("Initialsing )->");
lcd_gotoxy (2,3);
lcd_printf ("starting.......");
_delay_ms(1000);
lcd_command (0x01);
_delay_ms(100);
lcd_command (0x02);
_delay_ms(100);
lcd_gotoxy (1,3);
lcd_printf ("GPS-SYSTEM");

_delay_ms(1000);
lcd_command(0x01);
while(1)
{
_delay_ms(100);
if(check>=60)
{
check = 0;
compare();
d=0;
}
if(d==0)
{
cli();
d=1;
send_MSG(data);
sei();
}
}
}
ISR(USART_RXC_vect)
r ISR
{
cli();
info[check]=UDR;
check++;
if(check<7)
ion to check the required data
{
if(info[check-1]!=test[check-1])
check=0;
}
sei();
}
ISR(USART_TXC_vect)
tter ISR
{
cli();
sei();

//serial receive

//Condit

//serial transmi

Вам также может понравиться