• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > PIC18F8520的GPS精準時鐘實現

    PIC18F8520的GPS精準時鐘實現

    作者: 時間:2011-08-04 來源:網絡 收藏

    軟件實現
    軟件由主程序和中斷子程序組成,在MPLAB IDE v8.53環境下,采用MPLAB C18編譯器,用C語言編程實現。


    在主程序中進行系統的初始化、數據處理、LCD顯示,GPS數據的接收則通過串口中斷實現,每收到一條完整的NMEA語句,就設定一個標志,在主程序中通過查詢該標志進行UTC時間的提取以及轉換成北京時間,再通過LCD顯示。由于將復雜的數據處理放到主程序中,這樣就可以使中斷程序盡量簡短,在發生其他中斷時,單片機可以及時做出響應,提高了系統的實時性。流程圖如圖4所示。

    圖4 流程圖


    由于GPS模塊輸出的時間為UTC時間,根據習慣,需轉換成本地時間(北京時間),這項工作在主程序中完成。根據本地時間=UTC時間+時區值,而北京位于第8時區,時區值為+8,故北京時間=UTC時間+8。在轉換過程中,須對16:00:00—23:59:59 UTC時間作相應的處理,+8后判斷小時是否大于24,若大于,則減去24,同時日期+1,另外,還涉及到閏年、大月、小月的處理。


    中斷服務程序流程圖中,串口接收數據時判斷字頭,只判斷了“$”一個字符,這是因為之前已通過SNSRCFG軟件將GPS15XL設置為只輸出GPRMC一條NMEA語句。

    調試及運行
    首先,對GPS15XL進行初始化。將GPS15XL通過串口與PC連接好,給GPS15XL上電,用軟件SNSRCFG設置初始化信息,波特率設為9600,只輸出一條GPRMC語句(要獲取UTC日期和時間,一條GPRMC語句就足夠了),將這些信息寫入OEM板內的永久性存儲器中,下次上電時將會自動生效。


    然后,通過電路板上預留的ICSP接口,利用PIC16-MCD2編程器將編譯好的程序寫入單片機。編程時不給電路板供電,單片機通過MCD2供電,須注意電路板上跳線的設置。


    最后,將GPS15XL與電路板連接。給電路板和GPS15XL上電,授時接收系統進入正常工作狀態,單片機通過RS-232串行方式接收GPS15XL的衛星數據,獲取準確的時間信息,并轉換成北京時間,通過LCD顯示。
    注意:使用時,GPS授時天線一定要放在開闊的室外,否則接收不到衛星信號,也就無法獲取UTC時間信息。

    結語
    本文利用提取GPS高精度時鐘,并在LCD上顯示,所實現的時鐘系統是配電線路故障遠程監測及定位系統項目的一部分,經測試,該設計運行穩定,能夠為整個系統提供精確的時間信息,具有較高的可靠性、準確性和實用性。


    上一頁 1 2 下一頁

    評論


    技術專區

    關閉
    主站蜘蛛池模板: 茶陵县| 桃园县| 隆林| 威远县| 上蔡县| 芦溪县| 吉水县| 上饶县| 洪洞县| 行唐县| 大名县| 沈丘县| 光山县| 隆林| 青岛市| 石台县| 兴安盟| 麻江县| 金川县| 临海市| 大化| 泸定县| 临漳县| 壤塘县| 汾阳市| 福州市| 钟山县| 常德市| 盱眙县| 黔南| 玛纳斯县| 绥宁县| 齐齐哈尔市| 新昌县| 庆安县| 宁乡县| 牟定县| 仁怀市| 桓仁| 汨罗市| 左贡县|