Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

gps smk53 wth pic16f877a

Status
Not open for further replies.

soska2007

Newbie level 1
Joined
Mar 18, 2012
Messages
1
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,303
hi ..
when i try to interface gps smk53 with pic 16f877a to display the latitude and longitude iget sooo many error
plz ineed help .......this is my final year project :( icant find anyone to help me :(

micro c program
with 4Mhz freq


Code C - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#define FREQ 12000000
#define baud 4800
#define spbrg_value (((FREQ/64)/baud)-1)
#define rs LATA.F0
#define rw LATA.F1
#define en LATA.F2
#define lcdport LATB
unsigned char rx_data();
void lcd_ini();
void lcdcmd(unsigned char);
void lcddata(unsigned char);
 
unsigned char longi_data[12];
unsigned char lati_data[12];
unsigned char data,value=0;
unsigned int i=0,pos;
 
void main()
{
    TRISB=0;            // Set Port B as output port
    LATB=0;
    TRISA=0;
    LATA=0;
    SPBRG=spbrg_value;      // Fill SPBRG register to set the baud rate
    RCSTA.SPEN=1;           // To activate serial port (Tx and Rx pins)                                    
    RCSTA.CREN=1;           // To enable continuous reception
    lcd_ini();
    while(1)
    {
        data=rx_data();                     // Check the string '$GPGGA,'
        if(data=='$')
        {
            data=rx_data();
            if(data=='G')
            {
                data=rx_data();
                if(data=='P');
                {
                    data=rx_data();
                    if(data=='G');
                    {
                        data=rx_data();
                        if(data=='G')
                        {
                        data=rx_data();
                        if(data=='A')
                        {
                        data=rx_data();
                        if(data==',')
                        {
                        data=rx_data();
                        while(data!=',')
                        data=rx_data();
                        for(i=0;data!='N';i++)
                        data=rx_data();
                        lati_data[i]=data;  // Store the Latitude data
                        }
                        data=rx_data();
                        if(data==',')
                        {
                        for(i=0;data!='E';i++)
                        {
                        data=rx_data();
                        longi_data[i]=data;  // Store the Longitude data
                        }
                        }
                        i=0;
                        lcdcmd(0x80);
                        while(i<11)
                        {
                        lcddata(lati_data[i]);  // Print the Latitude data
                        i++;
                        }
                        i=0;
                        lcdcmd(0xC0);
                        while(i<12)
                        {
                        lcddata(longi_data[i]);   // Print the Longitude data
                        i++;
                        }
                        }
                        }
                        }
                    }
                }
            }
        }
        Delay_ms(1000);
        for(i=0;i<12;i++)
        {
            data=0;
            lati_data[i]=0;
            longi_data[i]=0;
        }
    }
}
 
unsigned char rx_data(void)
{
    while(PIR1.RCIF==0);        // Wait until RCIF gets low
    return RCREG;           // Store data in Reception register
}
 
void lcd_ini()
{
    lcdcmd(0x38);       // Configure the LCD in 8-bit mode, 2 line and 5x7 font
    lcdcmd(0x0C);       // Display On and Cursor Off
    lcdcmd(0x01);       // Clear display screen
    lcdcmd(0x06);       // Increment cursor
    lcdcmd(0x80);       // Set cursor position to 1st line, 1st column
}
 
void lcdcmd(unsigned char cmdout)
{
    lcdport=cmdout;     //Send command to lcdport=PORTB
    rs=0;                       
    rw=0;
    en=1;
    Delay_ms(10);
    en=0;
}
 
void lcddata(unsigned char dataout)
{
    lcdport=dataout;    //Send data to lcdport=PORTB
    rs=1;
    rw=0;
    en=1;
    Delay_ms(10);
    en=0;
}

 
Last edited by a moderator:

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top