| ??? 10/27/09 04:23 Read: times Msg Score: -1 -1 Didn't Search First |
#170081 - c code help for GPS interfacing |
..#include"89c51.h"
#define c=17;
unsigned char j=0;
unsigned char a[10];
unsigned char i=1;
unsigned char temp1;
unsigned char temp2;
unsigned char mybyte;
unsigned char temp3;
unsigned char temp4;
unsigned char temp5;
void lcdcmd(unsigned char);
void lcddata(unsigned char);
void lcdready();
void MSdelay(unsigned char);
sfr ldata = 0x90;
sbit rs = P2^0;
sbit rw = P2^1;
sbit en = P2^2;
sbit busy = P1^7;
unsigned char k;
void serial(void)interrupt 4
{
if(RI==1)
{
i++;
if(i==254)
{
i=1;
}
mybyte=SBUF;
if(mybyte=='R')
{
temp1=i;
temp2=temp1+c;
temp3=temp2+1;
temp4=temp3+9;
temp5=temp4+1;
}
RI=0;
}
}
void main(void)
{
SCON=0x50;
TMOD=0x20;
TH1=0xFD;
EA=1;
ES=1;
TR1=1;
while(1)
{
if(i==temp2)
{
a[j]=mybyte;
j++;
temp2=0;
}
if(i==temp3)
{
a[j]=mybyte;
j++;
temp3=0;
}
if(i==temp4)
{
a[j]=mybyte;
j++;
k=j;
temp4=0;
}
if(i==temp5)
{
a[j]=mybyte;
lcdcmd(0x38);
lcdcmd(0x0C);
lcddata('L');
lcddata('A');
lcddata('T');
lcddata('=');
for(j=0;j<=k;j++)
{
lcddata(a[j]);
}
lcdcmd(0x02);
lcdcmd(0x08);
/*
MSdelay(40);
lcdcmd(0x01);
MSdelay(40);
lcdcmd(0x08);
j=0;
temp5=0;*/
}
}
}
void lcdcmd(unsigned char value)
{
lcdready();
ldata=value;
rs=0;
rw=0;
en=1;
en=0;
}
void lcddata(unsigned char value)
{
lcdready();
ldata=value;
rs=1;
rw=0;
en=1;
en=0;
}
void lcdready()
{
busy=1;
rs=0;
rw=1;
while(busy==1)
{
en=0;
MSdelay(2);
en=1;
}
}
void MSdelay(unsigned char time)
{
unsigned char i;
for(i=0;i<time;i++)
{
TMOD=0x01;
TL0=0xFD;
TH0=0x4B;
TR0=1;
while(TF0==0);
TR0=0;
TF0=0;
}
}
I have made this code on keil compiler for displaying only latitude value after getting RMC message. but i am facing some problem on second part in LCD to display longitude in another line. Is my above code is correct? |
| Topic | Author | Date |
| c code help for GPS interfacing | 01/01/70 00:00 | |
What do you think? | 01/01/70 00:00 |



