史曉影
(渭南師范學院 物理與電氣工程學院,陜西 渭南 714000)
隨著科技的發(fā)展,移動技術(shù)的不斷成熟,定位導航開辟了一個重要的新興市場。GPS(Global Positioning System)以其高精度、全天候、全天時的特點[1],在定位、導航、測距等領域被廣泛應用,具有測量精度高、速度快、用戶數(shù)量不限、抗干擾能力強等優(yōu)點[2]。不僅用于軍事領域,還廣泛用于工農(nóng)業(yè)生產(chǎn)、交通運輸、野外探險等領域。本系統(tǒng)實現(xiàn)的數(shù)據(jù)采集精確度較高:采集到的位置可以控制在2 m范圍之內(nèi),接收數(shù)據(jù)并處理的時間小于2 s,在精確度和實時性上要優(yōu)于其他數(shù)據(jù)采 集系統(tǒng)[3-10]。
硬件系統(tǒng)中主要由主控制器、液晶顯示模塊和GPS射頻前端,數(shù)據(jù)傳輸單元組成,如圖1所示。
圖1 系統(tǒng)框圖Fig.1 System block diagram
GPS信號通過天線接收值射頻前端模塊,在射頻芯片中實現(xiàn)A/D轉(zhuǎn)換,將模擬中頻信號轉(zhuǎn)化為數(shù)字信號通過串口傳入單片機,單片機接收的數(shù)據(jù)信息經(jīng)過時差,坐標處理等操作,在通過LCD顯示出來。
GPS-OEM板采用NMEA-0183通信格式,可以輸出多種句型,均以“$”開頭。其語句格式如表1所示。
表1 NMEA-0183語句格式Tab.1 NMEA-0183 statement format
輸出的語句按串口通信協(xié)議:1位開始位,8位數(shù)據(jù)位,1位停止位,無奇偶校驗。輸出數(shù)據(jù)采用的是ASCⅡ碼字符,內(nèi)容包含了緯度、經(jīng)度、速度、日期、航向及衛(wèi)星狀況等信息。語句達十余種,其中定位語句$GPRMC其結(jié)構(gòu)為:
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>*hh<CR><LF>
其中:
“GP”—交談識別符;
“RMC”—語句識別符;
“*”—校驗和識別符;
“hh”—為校驗和,其代表了“$”和“*”之間所有字符的按位異或值(不包括這兩個字符)。
$GPRMC語句數(shù)據(jù)區(qū)的內(nèi)容為:
1)定位點的協(xié)調(diào)世界時間(UTC),hhmmss(時分秒)格式;
2)定位狀態(tài),A=有效定位,V=無效定位;
3)定位點緯度,ddmm.mmmmm(度分)格式;
4)緯度半球,N(北半球)或 S(南半球);
5)定位點經(jīng)度,dddmm.mmmmm(度分)格式;
6)經(jīng)度半球,E(東經(jīng))或 W(西經(jīng));
7)地面速度,000.0節(jié)~999.9節(jié);
8)地面航向,000.0度~359.9度;
9)UTC 日期,ddmmyy(日月年)格式;
10)磁偏角,000.0度~180度;
11)磁偏角方向,E(東)或 W(西)。
利用單片機的串行接口接收GPS傳送過來的數(shù)據(jù),其硬件原理如圖2所示,GPS的接口及單片機串口均采用TTL電平傳輸數(shù)據(jù),所以GPS接口引腳4和3可直接與單片機的TXD和RXD引腳相連,無需電平轉(zhuǎn)換,硬件電路圖如圖2所示。
圖2 GPS數(shù)據(jù)接收Fig.2 GPSdata reception
GPS模塊輸出的是數(shù)據(jù)流,每秒鐘更新一次數(shù)據(jù)。必須要用單片機對其輸出的數(shù)據(jù)流中的數(shù)據(jù)進行提取,以方便用戶直接讀取。首先打開串口中斷服務子程序,開始接收數(shù)據(jù),判斷其是否有“$”符號,然后根據(jù)逗號的個數(shù)進行判斷數(shù)據(jù)的類型,然后分別存儲時間、經(jīng)度、緯度、日期等信號,若接收到“﹨n”則接收結(jié)束。
用C語言編程,其程序如下:
void chkzhd()interrupt 4//串口接收中斷
{
uchar ch,num;
p37=!p37;
if(TI==1)TI=0;
if(RI==1)
{
ch=SBUF;
if(ch=='$'){gps_flag=1;num=0;}
if(gps_flag==1)
{
gps_rev[num++]=ch;
if((ch==' ')||(num>79))
{gps_rev[num]=' 集安市| 巫溪县| 徐闻县| 肃宁县| 安乡县| 休宁县| 阿瓦提县| 明光市| 玛多县| 凤翔县| 郧西县| 海丰县| 两当县| 仪陇县| 临泽县| 苏尼特右旗| 永和县| 焦作市| 日喀则市| 潜江市| 泾源县| 仁寿县| 汝城县| 封开县| 诸城市| 广饶县| 咸阳市| 晋城| 云浮市| 鄂托克前旗| 福贡县| 互助| 伊吾县| 惠水县| 台南县| 太谷县| 峨边| 巩义市| 罗江县| 安庆市| 宁河县|