Post on 15-Oct-2015
transcript
Conectarea unui modul GPS la un microcontroler 8051
Caracteristici: Se va realiza conectarea la GPS fie prin implementarea protocolului, fie prin conectarea microcontrolerului 8051 la un circuit ce implementeaz respectivul protocol printr-o interfa existent (SPI, UART, USB, CAN etc). Se va asigura afisarea strii de conectat (afiaje cu segmente sau matrice de LEDuri sau afisaj LCD). Se va preciza performana conexiunii. Codul surs va trebui s in cont n redactare de constrngerile specifice care pot aprea n cadrul unui sistem ncorporat.
GPS-ul a devenit un tool eficient in domeniul stiintific, al comertului, al supravegherii si urmaririi. Acest proiect prezinta o mica aplicatie bazate pe Global Positioning System. Aceasta depisteaza utilizarea GPS-ului modul/receiver pentru a determina latitudinea and longitudinea locatiei sale. Datele obtinute de la GPS receiver sunt procesate de microcontroller pentru a extrage latitudinea si longitudinea.Modulul GPS transmite continuu date seriale (protocolul RS232 ) in conformitate cu standardele NMEA Valorile latitudine si longitudine ale locatiei sunt continute in sintaxa GPGGA. In acest program, aceste valori sunt extrase din sintaxa GPGGA si afisate pe LCD.
Datele seriale sunt preluate din modulul GPS prin intermediul MAX232in registrul SBUF al controller-ului 8051 . Datele seriale de la receiver-ul GPS sunt preluate folosind Intreruperile Serialeale controller-ului. Aceste date sunt compuse dintr-o secventa NMEA din care secventa GPGGA este identificata si procesata.
Extragerea valorilor ce indica locatia se face in felul urmator : Primii sase biti ai datelor primite sunt comparate cu sirul pre-stocat ($GPGGA) si daca coincid atunci data este prelucrata in continuare; altfel, procesul se repeta din nou. Virgula delimiteaza sirul GPGGA , iar pozitiile ce indica latitudinea si longitudinea sunt extrase gasind virgula respectiva si extragand datele.Pozitiile ce indica latitudinea si longitudinea sunt afisate pe LCD care este interfatat cu AT89C51.
Conexiunile circuitului sunt:Receiver-ul1 (R1) al MAX232 a fost utilizat pentru comunicarea seriala. Pinul pentru receiver-ul de GPS este conectat la R1IN (pin13) al MAX232 . R1OUT (pin 12) al MAX232 este conectat la RxD (P3.0) al AT89C51.
Pinii 1-3 al portului P1 (P1.0, P1.1 & P1.2 respectiv) al AT89C51 sunt conectate la pinii de control (RS, R/W& EN) al LCD-ului. Pinii de date al LCD-ului sunt conectati la Portul P2 al controller-ului. Latitudinea si longitudinea sunt afisate pe LCD.
Codul:/* Programul de baza care arata cum sunt extrase latitudinea si longitudinea din datele GPGGA si sunt afisate pe LCD*/#include#define port2 P2sbit rs = P1^0;sbit rw = P1^1;sbit e = P1^2;char info[70];char test[6]={"$GPGGA"};char comma_position[15];unsigned int check=0,i;unsigned char a;void receive_data();void lcd_latitude();void lcd_longitude();//DELAY FUNCTIONvoid delay(unsigned int msec){int i,j ;for(i=0;i 24 MHz)Crystal 2
19Crystal 1
20Ground (0V)Ground
21Pinii pe 8 biti ai portului (P2) de input/output /Adresele bitilor cei mai semnificativi cand interfateaza cu memoria externaP2.0/ A8
22P2.1/ A9
23P2.2/ A10
24P2.3/ A11
25P2.4/ A12
26P2.5/ A13
27P2.6/ A14
28P2.7/ A15
29Program store enable;Citeste din memoria externa a programuluiPSEN
30Address Latch EnableALE
Programul introduce input-uri in cursul programarii FlashProg
31External Access Enable; Vcc pentru executiile programului internEA
Programming enable voltage; 12V (during Flash programming)Vpp
32Pinii pe 8 biti ai portului (P0) de input/output /Adresele bitilor cei mai putin semnificativi cand interfateaza cu memoria externa P0.7/ AD7
33P0.6/ AD6
34P0.5/ AD5
35P0.4/ AD4
36P0.3/ AD3
37P0.2/ AD2
38P0.1/ AD1
39P0.0/ AD0
40Tensiunea de alimentare; 5V (pana la 6.6V)Vcc
LCDCP045
LCD (Liquid Crystal Display) este un modul electronic de display si se gaseste intr-o gama larga de aplicatii. Un display de LCD 16x2 este un modul de baza si este foarte folosit in diverse circuite si device-uri.Aceste module sunt preferate in raport cu ledurile multi segment . Motivele: LCD-urile sunt mai economice, usor programabile, nu exista limitari in afisarea caracterelor speciale , a animatiilor , etc.
Un 16x2 LCDinseamna ca poate afisa 16 caractere pe linie si ca exista 2 astfel de linii.Pe acest LCD fiecare caracter este afisat intr-o matrice de pixeli de dimensiuni 5x7. Acest LCD are doua registre numite Command (Comanda) si Data (Date).Registrul Command stocheaza instructiunile de comanda trimise LCD-ului. O comanda este o instructiune data LCD-ului pentru a executa un anumit task precum stergerea ecranului, initializarea acestuia, pozitionarea cursorului, etc. Registrul de date stocheaza datele pentru a fi afisate pe LCD . Datele sunt valori ASCII al caracterelor ce vor fi afisate pe LCD.Diagrama Pinilor:
Descrierea Pinilor:Pin NoFunctionName
1Ground (0V)Ground
2Tensiunea de alimentare; 5V (4.7V 5.3V)Vcc
3Ajustarea contrastului, printr-un rezistor variabil
VEE
4Selecteaza registrul de comanda cand sunt valori mici; si registrul de date cand sunt valori mariRegister Select
5Valori mici pentru a scrie in registru; Valori mari pentru a citi din registruRead/write
6Trimite date la pinii de date cand este dat un impuls descrescatorEnable
7Pinii de date pe 8 bitiDB0
8DB1
9DB2
10DB3
11DB4
12DB5
13DB6
14DB7
15Backlight VCC(5V)Led+
16Backlight Ground (0V)Led-