在本文中,我將向您展示一種使用PIC微控制器從GPS模塊獲取時間和日期的方法。
要求
帶有MPLABX和XC8編譯器的計算機。
PICKIT3.5或同等PIC編程器。
一個GPS模塊,用于發(fā)送NMEA語句。
面包板和跳線、液晶顯示器和一個5K電位器。
零件清單中的零件。
介紹
在之前的文章使用Arduino制作GPS時鐘和使用PICAXE制作GPS時鐘中,我已經(jīng)使用Arduino和PICAXE制作了GPS時鐘。在本文中,我使用的是PIC16F628A。有關GPS和導航的簡要介紹,請閱讀第一個鏈接中的文章。
在本文中,我使用的GPS模塊與之前的文章中使用的不同。波特率是9600,所以我必須配置uart端口來匹配這個。為了讀出時間,我將使用GPRMC語句。這句話看起來像這樣:
$GPRMC,161229.487,A,3723.2475,N,12158.3416,W,0.13,309.62,120598,,*10
GPRMC語句和其他語句每秒發(fā)送一次。該軟件將搜索正確的并使用其中的信息。
硬件
以下原理圖建立在面包板上。注意顯示LCD輸出模塊。D6和D7連接到PIC引腳12和13。這恰好是編程引腳PGC和PGD。我不會從LCD上讀取數(shù)據(jù),所以我將RW引腳接地。我也將D0-D3接地。像這樣將未使用的引腳接地是一種很好的做法,但是如果我要向項目添加更多功能,我喜歡將安裝在PCB上的PIC上未使用的引腳路由到焊盤以便于訪問。這里不是這種情況,因為電路是面包板的。
點擊圖片為全尺寸。
零件清單
以下是EagleCAD中BOMulp的編輯列表。
軟件
該軟件已被評論,但我將在這里大致介紹它。
首先是包含庫、配置位、變量聲明和函數(shù)原型。然后我有驅動液晶顯示器的功能。要使LCD顯示屏正常工作,您必須遵循特定的方法。之后是uart函數(shù)和兩個函數(shù),用于在接收到的時間和日期無效時顯示消息。
主程序以一些指令開始:關閉比較器,為端口設置正確的方向,并將所有端口設置為低。然后初始化LCD端口和uart端口。在主while循環(huán)中,RX接收到的每個字節(jié)都放在一個變量中。比較變量以查看它是否是美元符號$。如果它是一個美元符號,我現(xiàn)在知道我在NMEA句子的開頭,但我不知道是哪一個。然后它讀取接下來的六個字節(jié)并將它們放入一個數(shù)組中。然后將該數(shù)組與預定義的數(shù)組進行比較。如果相等,那么我知道兩件事:一,我有一個句子,二,我有正確的句子?,F(xiàn)在遵循許多for循環(huán),以讀取正確的值并將其放置在正確的位置。在這個例子中,它讀取時間、日期、緯度和經(jīng)度,
當程序接近主while循環(huán)結束時,它會在LCD上顯示時間和日期。顯示的時間通常稱為GPSZULU時間。
您可以下載下面的c源代碼。
結論
在本文中,我向您展示了一種使用PIC微控制器從GPS模塊獲取時間和日期的方法。只需對代碼進行少量更改,您就可以在不同的PIC上使用它。該程序讀取時間、日期、緯度和經(jīng)度,但它只顯示時間和日期。我挑戰(zhàn)讀者顯示緯度和經(jīng)度。
圖片和視頻
這是面包板的一些圖片。
啟動畫面。
在PIC接收到有效數(shù)據(jù)之前。
該模塊有一個小型備用電池,有助于在衛(wèi)星修復之前更快地啟動時鐘。
現(xiàn)在NMEA語句中有有效信息。
-
微控制器
+關注
關注
48文章
7844瀏覽量
153348 -
PIC微控制器
+關注
關注
0文章
17瀏覽量
7517 -
GPS模塊
+關注
關注
0文章
89瀏覽量
16969
發(fā)布評論請先 登錄
相關推薦
如何將GPS模塊與PIC微控制器連接以獲取當前位置的緯度和經(jīng)度

怎么設置PIC微控制器的時鐘頻率?
MAX1169 ADC與PIC微控制器的接口

PIC微控制器技術及應用 1-12章
PIC微控制器技術及應用 13-23章
PIC微控制器技術及應用 24-29章
PIC微控制器基礎與實踐 (加)myke predko著 12-
PIC微控制器基礎與實踐 (加)myke predko著 9-1
PIC微控制器基礎與實踐 (加)myke predko著 1-3
PIC微控制器基礎與實踐 (加)myke predko著 6-9
PIC微控制器基礎與實踐 (加)myke predko著 4-6
MAX1169 ADC與PIC微控制器接口

MAX1169 ADC與PIC微控制器接口

評論