GPS Send Data to LCD using AVR:
#define F_CPU 8000000UL
#include <util/delay.h>
#define rs 0
#define rw 1
#define en 2
#include <avr/io.h>
#include <avr/interrupt.h>
#include<string.h>
//#include"serial_header.h"
//function declaration
void recgps(void);
void delay(int);
void cmden();
void lcdcmd(char);
void lcdinit(void);
void daten(void);
void lcddata(char);
void txdata(char);
unsigned char rxu0(void);
void serial_init();
static unsigned char lat[10];
static unsigned char lon[11];
unsigned char maps_link[50]="www.maps.google.com/";
void cmnd()
{
PORTB&=(~(1<<rs));
PORTB&=(~(1<<rw));
PORTB|=(1<<en);
_delay_ms(50);
PORTB&=(~(1<<en));
}
void lcdcmd(char ch)
{
PORTB=ch & 0xf0;
cmnd();
PORTB=(ch<<4) & 0xf0;
cmnd();
}
void lcdinit()
{
lcdcmd(0x02);
lcdcmd(0x28);
lcdcmd(0x01);
lcdcmd(0x0e);
}
void data()
{
PORTB|=(1<<rs);
PORTB&=(~(1<<rw));
PORTB|=(1<<en);
_delay_ms(50);
PORTB&=(~(1<<en));
}
void lcddata(char ch)
{
PORTB=ch & 0xf0;
data();
PORTB=(ch<<4) & 0xf0;
data();
}
void lcdstring(char *str)
{
while(*str)
{
lcddata(*str);
str++;
}
}
void serial_init()
{
UCSRB=0x18;
UCSRC=0x86;
UBRRL=0X33;
}
char uart_read()
{
while(!(UCSRA & (1<<RXC)));
return UDR;
}
void txstring(char *str)
{
while(*str)
{
txdata(*str);
str++;
_delay_ms(20);
}
}
void txdata(char ch)
{
UDR=ch;
while(!(UCSRA & (1<<UDRE)));
_delay_ms(10);
}
void recgps()
{
unsigned char p;
int gps=0;
int i;
while(gps==0)
{
p=uart_read();
while(p!='$')
{
p=uart_read();
}
p=uart_read();
if(p=='G')
{
}
else
continue;
p=uart_read();
if(p=='P')
{
}
else
continue;
p=uart_read();
if(p=='G')
{
}
else
continue;
p=uart_read();
if(p=='G')
{
}
else
continue;
p=uart_read();
if(p=='A')
{
while(p!=',')
{
p=uart_read();
}
p=uart_read();
while(p!=',')
{
p=uart_read();
}
for(i=0;i<9;i++)
{
lat[i]=uart_read();
}
p=uart_read();
while(p!=',')
{
p=uart_read();
}
p=uart_read();
while(p!=',')
{
p=uart_read();
}
for(i=0;i<10;i++)
{
lon[i]=uart_read();
}
lat[9]='\0';
lon[10]='\0';
gps=0;
}
else
continue;
}
}
int main()
{
int i;
DDRB=0XFF;
lcdinit();
serial_init();
lcdcmd(0x80);
lcdstring("Send on LCD ");
lcdcmd(0x01);
lcdstring(" Ready... ");
while(1)
{
lcdcmd(1);
recgps();
lcdstring("Lat:");
lcdstring(lat);
lcdcmd(0xc0);
lcdstring("Lon:");
lcdstring(lon);
_delay_ms(3000);
}
}
0 comments:
Post a Comment
if you have any doubt please let me know