<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PIC18F8520的GPS精準時鐘實現(xiàn)

          PIC18F8520的GPS精準時鐘實現(xiàn)

          作者: 時間:2011-08-04 來源:網(wǎng)絡(luò) 收藏

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


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

          圖4 流程圖


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


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

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


          然后,通過電路板上預(yù)留的ICSP接口,利用PIC16-MCD2編程器將編譯好的程序?qū)懭雴纹瑱C。編程時不給電路板供電,單片機通過MCD2供電,須注意電路板上跳線的設(shè)置。


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

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


          上一頁 1 2 下一頁

          關(guān)鍵詞: PIC18F8520 GPS精準時鐘

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();