PIC18F8520的GPS精準時(shí)鐘實(shí)現
軟件實(shí)現
軟件由主程序和中斷子程序組成,在MPLAB IDE v8.53環(huán)境下,采用MPLAB C18編譯器,用C語(yǔ)言編程實(shí)現。
在主程序中進(jìn)行系統的初始化、數據處理、LCD顯示,GPS數據的接收則通過(guò)串口中斷實(shí)現,每收到一條完整的NMEA語(yǔ)句,就設定一個(gè)標志,在主程序中通過(guò)查詢(xún)該標志進(jìn)行UTC時(shí)間的提取以及轉換成北京時(shí)間,再通過(guò)LCD顯示。由于將復雜的數據處理放到主程序中,這樣就可以使中斷程序盡量簡(jiǎn)短,在發(fā)生其他中斷時(shí),單片機可以及時(shí)做出響應,提高了系統的實(shí)時(shí)性。流程圖如圖4所示。
圖4 流程圖
由于GPS模塊輸出的時(shí)間為UTC時(shí)間,根據習慣,需轉換成本地時(shí)間(北京時(shí)間),這項工作在主程序中完成。根據本地時(shí)間=UTC時(shí)間+時(shí)區值,而北京位于第8時(shí)區,時(shí)區值為+8,故北京時(shí)間=UTC時(shí)間+8。在轉換過(guò)程中,須對16:00:00—23:59:59 UTC時(shí)間作相應的處理,+8后判斷小時(shí)是否大于24,若大于,則減去24,同時(shí)日期+1,另外,還涉及到閏年、大月、小月的處理。
中斷服務(wù)程序流程圖中,串口接收數據時(shí)判斷字頭,只判斷了“$”一個(gè)字符,這是因為之前已通過(guò)SNSRCFG軟件將GPS15XL設置為只輸出GPRMC一條NMEA語(yǔ)句。
調試及運行
首先,對GPS15XL進(jìn)行初始化。將GPS15XL通過(guò)串口與PC連接好,給GPS15XL上電,用軟件SNSRCFG設置初始化信息,波特率設為9600,只輸出一條GPRMC語(yǔ)句(要獲取UTC日期和時(shí)間,一條GPRMC語(yǔ)句就足夠了),將這些信息寫(xiě)入OEM板內的永久性存儲器中,下次上電時(shí)將會(huì )自動(dòng)生效。
然后,通過(guò)電路板上預留的ICSP接口,利用PIC16-MCD2編程器將編譯好的程序寫(xiě)入單片機。編程時(shí)不給電路板供電,單片機通過(guò)MCD2供電,須注意電路板上跳線(xiàn)的設置。
最后,將GPS15XL與電路板連接。給電路板和GPS15XL上電,授時(shí)接收系統進(jìn)入正常工作狀態(tài),單片機通過(guò)RS-232串行方式接收GPS15XL的衛星數據,獲取準確的時(shí)間信息,并轉換成北京時(shí)間,通過(guò)LCD顯示。
注意:使用時(shí),GPS授時(shí)天線(xiàn)一定要放在開(kāi)闊的室外,否則接收不到衛星信號,也就無(wú)法獲取UTC時(shí)間信息。
結語(yǔ)
本文利用PIC18F8520提取GPS高精度時(shí)鐘,并在LCD上顯示,所實(shí)現的時(shí)鐘系統是配電線(xiàn)路故障遠程監測及定位系統項目的一部分,經(jīng)測試,該設計運行穩定,能夠為整個(gè)系統提供精確的時(shí)間信息,具有較高的可靠性、準確性和實(shí)用性。
評論