基于單片機GPS定位信息顯示系統(tǒng)設計_第1頁
基于單片機GPS定位信息顯示系統(tǒng)設計_第2頁
基于單片機GPS定位信息顯示系統(tǒng)設計_第3頁
基于單片機GPS定位信息顯示系統(tǒng)設計_第4頁
基于單片機GPS定位信息顯示系統(tǒng)設計_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、目錄一、系統(tǒng)整體概述2(一)主要內(nèi)容2(二)系統(tǒng)方案的總體設計2二、硬件設計3(一)硬件總體結(jié)構(gòu)框圖3(二)單片機的介紹41. STC89C52的簡介42. STC89C52引腳圖4(三)GPS(UBLOX NEO 6M)模塊介紹41. UBLOX NEO 6M簡介42. UBLOX NEO 6M性能和管腳定義5(四)LCD(12864)模塊介紹61. LCD(12864)簡介62. LCD(12864)引腳介紹63. LCD(12864)操作時序6(五)硬件電路PCB板的繪制71. 原理圖的繪制72. PCB板的繪制73. 實際硬件電路8三、軟件設計9(一)軟件設計思路9(二)模塊化軟件設計

2、91. GPS接收模塊設計92. 單片機模塊設計113. 顯示模塊設計11四、系統(tǒng)調(diào)試與結(jié)果13(一)硬件調(diào)試13(二)軟件調(diào)試13(三)設計結(jié)果14五、總 結(jié)16參考文獻17附錄18一、系統(tǒng)整體概述(一)主要內(nèi)容在學習C51系列單片機和GPS定位原理以及GPS相關(guān)知識的理論知識基礎上,我們需要在種類繁多的單片機和GPS類型中選擇合適的單片機和GPS模塊,GPS模塊的作用是用來接收衛(wèi)星信號然后提取相應的信息,單片機作為本次設計系統(tǒng)的控制核心,對GPS模塊接收到的信息進行處理,然后用液晶顯示屏實時顯示預設的數(shù)據(jù)信息。系統(tǒng)的具體實現(xiàn)主要由軟硬件設計結(jié)合完成。硬件設計核心是單片機最小系統(tǒng)的設計,然后

3、在最小系統(tǒng)的基礎上設計本次設計所需的外圍電路,借助成品GPS模塊,完成硬件電路的焊接,該設計硬件電路設計并不復雜,而且體積小便于攜帶。軟件設計的核心內(nèi)容是實現(xiàn)GPS模塊與單片機的通信進而完成系統(tǒng)設計的要求,因為模塊化設計具有功能清晰、調(diào)試方便等優(yōu)點,而且在不同平臺上移植方便,所以這次設計的思路是采用模塊化設計,整個軟件開發(fā)環(huán)境用Keil軟件,采用C語言編程,硬件則為使用Altium Designer。(二)系統(tǒng)方案的總體設計本次設計的目標是要在單片機的基礎上完成GPS定位信息顯示系統(tǒng)設計。根據(jù)設計預設的要求,我們設計是以單片機為控制核心,控制GPS接收模塊,最后利用液晶顯示設備就可以實現(xiàn)系統(tǒng)設

4、計目標。市場上單片機種類很多,C51系列單片機,STM系列單片機等等。通過考慮單片機的普適性、所具備的功能、具體I/0口的性能以及價格是否經(jīng)濟實用等因素,本次設計采用C51系列單片機。系統(tǒng)整體是由硬件設計和軟件設計兩部分設計而成,采用C51系列單片機、GPS定位模塊、LCD液晶顯示模塊設計而成。硬件設計主要由單片機(STC89C52)、GPS模塊(UBLOX NEO 6M)、LCD12864液晶顯示模塊等組成;接收GPS模塊傳送的數(shù)據(jù)信息是軟件設計的重點,進而獲得當前所處位置的經(jīng)緯度、航向和海拔等信息。二、硬件設計(一)硬件總體結(jié)構(gòu)框圖 硬件總體結(jié)構(gòu)框圖如圖2-1所示。液晶顯示電路 STC89

5、C52GPS接收模塊GPS信號 電源 圖2-1 硬件總體結(jié)構(gòu)框圖本次設計系統(tǒng)的硬件電路主要由下面幾部分構(gòu)成:第一,接收模塊電路。GPS模塊負責鎖定衛(wèi)星,然后把信息傳送給單片機。第二,控制模塊電路。以STC89C52單片機為控制核心,讀取GPS模塊傳送的數(shù)據(jù),然后把讀取的數(shù)據(jù)送到液晶顯示屏即實現(xiàn)了單片機的控制作用。第三,液晶顯示電路。51單片機控制液晶顯示電路,在液晶顯示屏進而可以顯示GPS模塊讀取的數(shù)據(jù)信息。第四,電源部分電路。整個系統(tǒng)的正常工作需要電源部分為其提供電源。此外,硬件電路中還會涉及一些使單片機正常工作的外圍電路,以保證單片機正常工作。(二)單片機的介紹1. STC89C52的簡介

6、STC89C52是STC公司生產(chǎn)的一種控制器。MCS-51內(nèi)核是該單片機的經(jīng)典內(nèi)核,而且在STC89C52上做了很多的創(chuàng)新,使其不僅具有傳統(tǒng)51單片機所具有的功能,而且引進了很多創(chuàng)新的功能,使STC89C52的應用范圍更加廣泛。STC89C52具體的使用標準可以查閱相關(guān)書籍和芯片技術(shù)手冊,更多資料不再說明。2. STC89C52引腳圖 圖2-2 STC89C52引腳圖(三)GPS(UBLOX NEO 6M)模塊介紹 1. UBLOX NEO 6M簡介本次課程設計使用的GPS(UBLOX NEO 6M)模塊是一個完整的成品接收模塊,具有高性能、低功耗的優(yōu)點,能滿足我們本次設計定位的要求。GPS模

7、塊實物圖如圖2-2所示。 圖2-3 GPS模塊實物2. UBLOX NEO 6M性能和管腳定義(1) 定位時間(TTFF):精準的定位時間和當前環(huán)境有關(guān)。 (2)靈敏度 Min Lyp Max 單位 跟蹤 -160 dBm 捕獲 -147 dBm表2-4 GPS靈敏度(3)精度2D平面:2.5m平均 漂移:<0.02m/s2D平面:2m平均,有WAAS輔助 授時精度:1us(4)UBLOX NEO 6M管腳定義見表2-5所示。 序號 名稱 I/O 描述 特性 1 VCC 1 模塊主電源,直流輸入 DC3.0V-5.2V 2 GND 0 接地 3 TX 0 UART接口OH>=2.1

8、375V,OL<=0.7125V 4 RX 1 UART接口 3.15V>=OH>=1.995V -0.3V<=OL<=0.855V 5 PPS 0 模塊定位脈沖OH>=2.1375V,OL<=0.7125V表2-5 GPS管腳定義(更加詳細資料可參考UBLOX NEO 6M數(shù)據(jù)手冊)(四)LCD(12864)模塊介紹1. LCD(12864)簡介LCD(12864)液晶顯示模塊類型屬于漢字圖形類型的液晶模塊,可在顯示屏上顯示數(shù)字、符號和漢字等字符??膳cCPU直接連接,設有串行和并行這兩種控制方式。具有多種功能可供使用,具體使用哪種功能可查閱芯片資料。

9、2. LCD(12864)引腳介紹D0D7是數(shù)據(jù)口,RS(CS)是數(shù)據(jù)/命令選擇端(串片選),R/W(SID)端口是讀/寫選擇端(串數(shù)據(jù)口),E(SCLK)是使能信號(串同步時鐘信號),PSB端口是串/并選擇端口,RST是我們熟悉而且常用的復位端口(低電平有效),BLA與BLK則是并不常用的背光電源正極端和負極端。LCD(12864)的引腳如圖2-6所示。 圖2-6 LCD12864引腳3. LCD(12864)操作時序12864控制可使用兩種時序,分別為并行操作時序和串行操作時序。(具體內(nèi)容太多,可參考12864數(shù)據(jù)手冊。)(五)硬件電路PCB板的繪制大二時由于自學過Altium Desig

10、ner,又參加飛思卡爾智能車競賽繪制電路板,加上平時經(jīng)常繪制一些較為復雜的PCB,所以此系統(tǒng)所有硬件由Altium Designer設計完成。 1. 原理圖的繪制根據(jù)系統(tǒng)要求繪制的硬件原理圖如圖2-6所示。其中包括了單片機最小系統(tǒng)電路(復位、震蕩、程序下載接口等電路)、電源電路、12864顯示屏接口電路和led指示燈電路。 圖2-7 硬件電路原理圖 2. PCB板的繪制根據(jù)系統(tǒng)要求及原理圖繪制的PCB圖如圖2-8所示。 圖2-8 硬件電路PCB圖3. 實際硬件電路 由于資金原因,設計好的PCB并沒有送某寶賣家打印,實際電路板由洞洞板焊接而成,如圖2-9所示。圖2-9 實際硬件圖三、軟件設計(一

11、)軟件設計思路實現(xiàn)GPS接收模塊與單片機的通信是軟件設計的核心模塊,然后可以實現(xiàn)在液晶顯示屏上實時顯示當前的數(shù)據(jù)信息。整個編程是用keil軟件,采用C語言編程。功能清晰、調(diào)試方便等特點是軟件模塊化設計所具有的優(yōu)點,所以采用模塊化設計,GPS數(shù)據(jù)接收模塊、單片機模塊、LCD模塊和實時顯示模塊是軟件程序設計的四個組成部分。程序的設計思路是GPS模塊接收信息,然后向單片機發(fā)送固定格式的數(shù)據(jù),單片機通過串口接收數(shù)據(jù),并對數(shù)據(jù)進行解析,最終實現(xiàn)在LCD顯示屏上顯示時間、經(jīng)緯度和高度等信息。詳細源代碼見附錄。(2) 模塊化軟件設計1. GPS接收模塊設計 首先在搜索衛(wèi)星時顯示“華水課程設計”、“江濤201

12、412712”和“GPS顯示項目”,然后進行識別判斷GPS模塊收到的信息是否完成發(fā)送給單片機的操作,若有信息發(fā)送給單片機,但接收到的信息我們并不是全部需要,所以需要進行識別判斷相應語句的操作,然后把需要的信息存入到GPRMC語句中。GPS接收模塊程序流程圖如圖3-1所示。結(jié) 束 圖3-1GPS接收模塊流程圖2. 單片機模塊設計GPS模塊接收到數(shù)據(jù)信息后,需要把信息傳送到單片機,單片機經(jīng)過分析以及對數(shù)據(jù)信息進行篩選處理,然后送到液晶顯示屏實時顯示相應的位置信息,具體主要通過兩個界面顯示。單片機模塊程序設計流程圖如圖3-2所示。 圖3-2 單片機模塊流程圖3. 顯示模塊設計GPS模塊接收信息后,把

13、信息傳送給單片機,單片機首先對數(shù)據(jù)進行篩選和處理等操作,然后就可以把信息送到液晶顯示模塊,就實現(xiàn)了在液晶顯示屏實時顯示當前位置我們所需的信息。液晶顯示屏主要分為兩個界面顯示,界面一實時顯示當前的日期、時間和經(jīng)緯度信息,界面二實時顯示當前所處位置的速度、航向、高度和海拔。顯示模塊程序設計流程圖如圖3-3所示。界面一顯示設置界面二顯示設置 圖3-3 顯示模塊流程圖四、系統(tǒng)調(diào)試與結(jié)果(一)硬件調(diào)試檢測電路設計和工藝設計等方面的故障是硬件調(diào)試的主要任務。1. 檢查電路設計中所有元件的焊接以及引腳是否有故障。首先用萬用表逐個檢查焊點,目的是檢測是否出現(xiàn)短路和斷路故障。然后接入電源,觀察電源指示燈的工作狀

14、態(tài),硬件電路加入電源指示燈可以方便的檢測硬件電路焊接是否正常。 2. 進行仿真操作。用單片機控制仿真操作,目的是用來檢查系統(tǒng)所涉及的接口是否達到設計的要求。 把程序下載到單片機上。利用Keil軟件,將已經(jīng)完成的程序進行選擇生成頭文件的操作,然后把文件下載到STC89C52單片機。4. 檢查單個模塊。通過下載51單片機自帶的程序到單片機,然后查看液晶顯示屏(LCD12864)的顯示情況判斷單個模塊是否工作正常。(二)軟件調(diào)試軟件調(diào)試時我們是使用Keil軟件進行仿真和調(diào)試,可以檢查程序是否出錯,而且同時可以糾正程序的錯誤,若硬件設計有問題,就可以檢查出硬件的故障然后我們就可以進行修改。因為程序設計

15、是模塊化的,所以在調(diào)試時可以逐個模塊進行調(diào)試,若模塊調(diào)試結(jié)果正常,就可以進行整個程序的調(diào)試。尤其注意查看各個模塊的語法正確而參數(shù)設計不正確的情況。1. 檢查已經(jīng)編譯完成的LCD(12864)液晶顯示模塊程序,查看液晶顯示屏能否正常顯示。2. 檢查已經(jīng)編譯完成的GPS模塊程序,查看液晶顯示屏顯示的信息和預設結(jié)果的差距進而修改GPS接收模塊程序。3. 運行整個程序,觀察液晶顯示屏的結(jié)果是否實時顯示當前位置我們所設想的信息,通過顯示效果進行相應的軟硬件修改。(三)設計結(jié)果軟件調(diào)試初各個模塊工作正常,但一旦運行整個程序,液晶顯示屏在GPS搜索衛(wèi)星界面后出現(xiàn)亂碼,通過多次的調(diào)試和檢測,原來是晶振不符合要

16、求,更換晶振后,再次進行調(diào)試和檢測,最終液晶顯示屏顯示了預想的結(jié)果,即實現(xiàn)了實時顯示當前位置的日期、時間、緯度、經(jīng)度等信息。調(diào)試結(jié)果初始化界面如圖4-1所示。 圖4-1 初始化界面把當前位置液晶顯示屏顯示的信息與谷歌地圖顯示的位置信息進行對比,日期、時間非常精確,但經(jīng)度與緯度出現(xiàn)了誤差。究其原因:一是由于本次設計所采用的GPS接收模塊精度并不高,不能進行精確定位接收;二是在實驗中不可避免會受障礙物、天氣等因素的干擾,試驗環(huán)境并不理想;三是在谷歌地圖中我們手動點選的位置沒有和GPS測量位置達到同步。但是誤差是在誤差范圍內(nèi),我們是可以接受的。所以本次設計是有意義的,可靠的。即實現(xiàn)了實時顯示當前位置

17、的數(shù)據(jù)信息。界面一和二顯示結(jié)果如圖5-2,5-3所示。 圖4-2 界面一顯示結(jié)果 圖4-3 界面二顯示結(jié)果五、總 結(jié)本次課程設計以單片機為控制核心,控制GPS接收模塊,GPS模塊把接收到的信息傳送給單片機,單片機把數(shù)據(jù)信息送到液晶顯示屏顯示,實現(xiàn)實時顯示當前位置的數(shù)據(jù)信息。通過完成本次的課程設計,做到了單片機的理論知識和實踐相結(jié)合。我們在初學習單片機時,曾把精力主要放在學習單片機的內(nèi)部結(jié)構(gòu)上。可想而知,學起來非常痛苦。實踐證明,這不是正確的方法,我們應該把精力放在單片機的應用上,在掌握應用過程中我們發(fā)現(xiàn)也逐步掌握了單片機的內(nèi)部結(jié)構(gòu),也學會了充分地利用了單片機的資源。通過學習單片機知識,進而了解

18、了計算機的原理和結(jié)構(gòu)。計算機的功能主要體現(xiàn)在控制功能上,比如現(xiàn)在流行的智能家居領(lǐng)域也是單片機控制功能的體現(xiàn)。經(jīng)過本次的單片機課程設計,不僅學習了GPS接收模塊的知識、單片機和液晶顯示模塊相關(guān)知識,也提高了自己的焊接能力,使自己明確了拿到一個課題自己應該從哪著手去做,使自己有明確的系統(tǒng)設計思路,也懂得了當實驗結(jié)果不理想時,該如何去糾錯,如何去尋找問題,解決問題。參考文獻1數(shù)字電子技術(shù)基礎/巖石主編;清華大學電子學教研組編.-5版.-北京:高等教育出版社,2006.52模擬電子技術(shù)基礎/童詩白,華成英主編;清華大學電子學教研組編.-4版.-北京:高等教育出版社,2006.53潘談.基于STC89C

19、58芯片的小型GPS船舶航跡儀的設計J.艦船科學技術(shù),2014,(12):124-127.4杜俊,董松.基于單片機的GPS定位系統(tǒng)的設計與實現(xiàn)J.甘肅科技,2016,(19):25-27.5張亮紅,劉文怡,王紅亮.基于單片機的GPS定位系統(tǒng)的設計與實現(xiàn)J.電子器件,2015,(5):1187-1191.6譚昕.基于單片機的GPS導航裝置分析J.中國新通信,2015,(18):115.7劉穎.基于單片機的GPS導航裝置的設計研究J.科技展望,2015,(18):157.8高芳.單片機在GPS系統(tǒng)中的應用J.電子制作,2013,(19):57.9Guang Li Long.Design of GP

20、S based on Single Chip MicrocomputerJ.Trans Tech期刊,2012:2192-2195.附錄系統(tǒng)設計部分代碼:Main.c/=/ 工程名稱:GPS模塊測試程序/ 文件名稱: main.c/ 功能描述: GPS模塊接收定位信息,在LCD上顯示/ 組成文件:main.c LCD.c GPS.c display.c / 頭文件: LCD.h GPS.h display.h/ 程序分析:GPS模塊通過串口向單片機發(fā)送固定格式的數(shù)據(jù)/單片機的串口接收到數(shù)據(jù)后,進行解析,在LCD上顯示/定位信息包括:日期時間,經(jīng)緯度,速度,角度,高度/=#include <

21、;reg52.h>#include <stdio.h>#include <string.h>#include "GPS.h"#include "LCD.h"#include "display.h"sbit led1 = P23; /接收數(shù)據(jù)指示燈sbit led2 = P24; /GPRMC數(shù)據(jù)有效指示燈sbit led3 = P25; /GPGGA數(shù)據(jù)有效指示燈#define REV_YES led1 = 0#define REV_NO led1 = 1#define RMC_YES led2 = 0#

22、define RMC_NO led2 = 1#define GGA_YES led3 = 0#define GGA_NO led3 = 1char xdata rev_buf80; /接收緩存uchar xdata rev_start = 0; /接收開始標志uchar xdata rev_stop = 0; /接收停止標志uchar xdata gps_flag = 0; /GPS處理標志uchar xdata change_page = 0; /換頁顯示標志uchar xdata num = 0; /extern GPS_INFO GPS; /在display.c中定義,使用時要加exte

23、rnuchar code inf = " 華水江濤 "void Uart_Init(void)TMOD = 0x21;/0010 0001PCON=0X00;TH0=0x3c;TL0=0xb0;TH1=0xfd; /TL1=0xfd;/TR1=1; /開啟定時器1REN=1; /允許接收數(shù)據(jù) SM0=0;SM1=1;TI=0;RI=0;EA=1; /開總中斷ES=1; /串口1中斷允許ET0 = 1; /定時器1中斷允許/*主函數(shù)/*/void main(void)uchar error_num = 0;Uart_Init(); /初始化串口Lcd_Init(); /初始化

24、LCDGPS_Init(); /初始化GPSrev_stop=0;REV_NO;while(1)if (1) /如果接收完一行TR0 = 1; /開啟定時器REV_YES;if (change_page % 2 = 1) /換頁if (GPS_GGA_Parse(rev_buf, &GPS) /解析GPGGAGGA_YES;GPS_DisplayTwo(); /顯示第二頁信息error_num = 0;gps_flag = 0;rev_stop = 0;REV_NO;elseerror_num+;if (error_num >= 20) /如果數(shù)據(jù)無效超過20次GGA_NO;er

25、ror_num = 20;GPS_Init(); /返回初始化gps_flag = 0;rev_stop = 0;REV_NO;elseif (GPS_RMC_Parse(rev_buf, &GPS) /解析GPRMCRMC_YES;GPS_DisplayOne(); /顯示GPS第一頁信息error_num = 0;gps_flag = 0;rev_stop = 0;led1 = 1;elseerror_num+;if (error_num >= 20) /如果數(shù)據(jù)無效超過20次RMC_NO;error_num = 20;GPS_Init(); /返回初始化gps_flag =

26、 0;rev_stop = 0;REV_NO;/定時器0服務函數(shù)void timer0(void) interrupt 1static uchar count = 0;TH0 = 0x3c;TL0 = 0xb0;count+;if (count = 200) /2*5秒鐘count = 0;change_page+; /換頁if (change_page = 10)change_page = 0;/串口接受中斷服務函數(shù)void Uart_Receive(void) interrupt 4uchar ch;ES = 0;led1 = led1;if (RI)ch = SBUF;if (ch =

27、'$') && (gps_flag = 0) /如果收到字符'$',便開始接收rev_start = 1;rev_stop = 0;if (rev_start = 1) /標志位為1,開始接收rev_bufnum+ = ch; /字符存到數(shù) 組中if (ch = 'n') /如果接收到換行rev_bufnum = '0'rev_start = 0;rev_stop = 1;gps_flag = 1;num = 0;RI = 0; /RI清0,重新接收ES = 1;=GPS.c#include "GPS.h

28、"#include "LCD.h"#include <string.h>uchar code init1 = " 華水課程設計 "uchar code init2 = " 江濤 201412712 "uchar code init3 = " GPS顯示項目 "uchar code init4 = "搜索定位衛(wèi)星."static uchar GetComma(uchar num,char* str);static double Get_Double_Number(char *

29、s);static float Get_Float_Number(char *s);static void UTC2BTC(DATE_TIME *GPS);void GPS_Init(void)Lcd_DispLine(0, 0, init1);Lcd_DispLine(1, 0, init2);Lcd_DispLine(2, 0, init3);Lcd_DispLine(3, 0, init4);int GPS_RMC_Parse(char *line,GPS_INFO *GPS)uchar ch, status, tmp;float lati_cent_tmp, lati_second_t

30、mp;float long_cent_tmp, long_second_tmp;float speed_tmp;char *buf = line;ch = buf5;status = bufGetComma(2, buf);if (1) /如果第五個字符是C,($GPRMC)if (status = 'A') /如果數(shù)據(jù)有效,則分析GPS -> NS = bufGetComma(4, buf);GPS -> EW = bufGetComma(6, buf);GPS->latitude = Get_Double_Number(&bufGetComma(3

31、, buf);GPS->longitude = Get_Double_Number(&bufGetComma( 5, buf); GPS->latitude_Degree = (int)GPS->latitude / 100; /分離緯度lati_cent_tmp = (GPS->latitude - GPS->latitude_Degree * 100);GPS->latitude_Cent = (int)lati_cent_tmp;lati_second_tmp = (lati_cent_tmp - GPS->latitude_Cent)

32、* 60;GPS->latitude_Second = (int)lati_second_tmp;GPS->longitude_Degree = (int)GPS->longitude / 100;/分離經(jīng)度long_cent_tmp = (GPS->longitude - GPS->longitude_Degree * 100);GPS->longitude_Cent = (int)long_cent_tmp; long_second_tmp = (long_cent_tmp - GPS->longitude_Cent) * 60;GPS->l

33、ongitude_Second = (int)long_second_tmp;speed_tmp = Get_Float_Number(&bufGetComma(7, buf); /速度(單位:海里/時)GPS->speed = speed_tmp * 1.85; /1海里=1.85公里GPS->direction = Get_Float_Number(&bufGetComma(8, buf); /角度GPS->D.hour = (buf7 - '0') * 10 + (buf8 - '0');/時間GPS->D.minu

34、te = (buf9 - '0') * 10 + (buf10 - '0');GPS->D.second = (buf11 - '0') * 10 + (buf12 - '0');tmp = GetComma(9, buf);GPS->D.day = (buftmp + 0 - '0') * 10 + (buftmp + 1 - '0'); /日期GPS->D.month = (buftmp + 2 - '0') * 10 + (buftmp + 3 - '

35、0');GPS->D.year = (buftmp + 4 - '0') * 10 + (buftmp + 5 - '0')+2000;UTC2BTC(&GPS->D);return 1;return 0;int GPS_GGA_Parse(char *line,GPS_INFO *GPS)uchar ch, status;char *buf = line;ch = buf4;status = bufGetComma(2, buf);if (ch = 'G') /$GPGGAif (status != ',&#

36、39;)GPS->height_sea = Get_Float_Number(&bufGetComma(9, buf);GPS->height_ground = Get_Float_Number(&bufGetComma(11, buf);return 1;return 0;static float Str_To_Float(char *buf)float rev = 0;float dat;int integer = 1;char *str = buf;int i;while(*str != '0')switch(*str)case '0&

37、#39;:dat = 0;break;case '1':dat = 1;break;case '2':dat = 2;break;case '3':dat = 3;break;case '4':dat = 4;break;case '5':dat = 5;break;case '6':dat = 6;break;case '7':dat = 7;break;case '8':dat = 8;break;case '9':dat = 9;break;ca

38、se '.':dat = '.'break;if(dat = '.')integer = 0;i = 1;str +;continue;if( integer = 1 )rev = rev * 10 + dat;elserev = rev + dat / (10 * i);i = i * 10 ;str +;return rev;static float Get_Float_Number(char *s)char buf10;uchar i;float rev;i=GetComma(1, s);i = i - 1;strncpy(buf, s,

39、i);bufi = 0;rev=Str_To_Float(buf);return rev;static double Str_To_Double(char *buf)double rev = 0;double dat;int integer = 1;char *str = buf;int i;while(*str != '0')switch(*str)case '0':dat = 0;break;case '1':dat = 1;break;case '2':dat = 2;break;case '3':dat =

40、 3;break;case '4':dat = 4;break;case '5':dat = 5;break;case '6':dat = 6;break;case '7':dat = 7;break;case '8':dat = 8;break;case '9':dat = 9;break;case '.':dat = '.'break;if(dat = '.')integer = 0;i = 1;str +;continue;if( integer = 1 )rev = rev * 10 + dat;elserev = rev + dat / (10 * i);i = i * 10 ;str +;return rev;static double Get_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論