基于GPS的高精度無誤差倒計(jì)時牌設(shè)計(jì)
引言
gps是global positioning system的簡稱,是利用導(dǎo)航衛(wèi)星進(jìn)行測時和測距的全球定位系統(tǒng),它具有精度高、全天候和全球覆蓋能力,將gps應(yīng)用于時鐘倒計(jì)時系統(tǒng)能實(shí)現(xiàn)高精度時間顯示功能,基于gps的高精度,倒計(jì)時牌是衛(wèi)星測時技術(shù),計(jì)算機(jī)技術(shù)及通信技術(shù)三者的有機(jī)結(jié)合。從功能模塊上看,整個系統(tǒng)分為gps測時接收系統(tǒng)和時鐘顯示系統(tǒng),它主要完成以下功能:
◆ 定時接收gps衛(wèi)星發(fā)送的數(shù)據(jù)并進(jìn)行識別和緩存;
◆ 對gps測時數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換,以使編碼格式適于接收;
◆ 在給定時間內(nèi)刷新ds12c887型時鐘的時間;
◆ 讀ds12c887時間,進(jìn)行倒計(jì)時換算并顯示。
硬件設(shè)計(jì)
基于gps的高精度倒計(jì)時牌的硬件結(jié)構(gòu)較為簡單,它包括控制模塊和顯示模塊兩部分,圖1所示是其電路圖。
◇ 控制模塊
at89c52單片機(jī)是整個控制系統(tǒng)的核心,用于完成對串行口控制器的初始化和數(shù)據(jù)讀寫,還要對接收的各種數(shù)據(jù)進(jìn)行識別、轉(zhuǎn)儲及顯示。由于日本光電公司的gsv-15型oem
gps接收板傳輸?shù)臄?shù)據(jù)以串行方式輸出,它的一幀為10位、波特率為4800bit,與mcs-51型單片機(jī)串口輸入輸出格式匹配,所以利用單片機(jī)串行口直接從oem接收數(shù)據(jù),而ds12c887具有提供較高精度年、月、日、時、分、秒時間的功能,對其校準(zhǔn)后,在掉電情況下,10年之內(nèi)仍能準(zhǔn)確的進(jìn)行計(jì)時,并且能與單片機(jī)直接相連。
◇ 顯示模塊
本系統(tǒng)利用74hc595來實(shí)現(xiàn)串行方式控制數(shù)碼管顯示,因而占用口線少,硬件結(jié)構(gòu)簡單,74hc595型串/并轉(zhuǎn)換移位寄存器具有鎖存和3態(tài)輸出功能。14腳(ser)為串行輸入端;12腳(rclr)為移位時鐘端??稍谏仙貙?4腳數(shù)據(jù)移入寄存器;11腳(srclr)為鎖存時鐘端,可在上升沿鎖存數(shù)據(jù);8腳(e)為3態(tài)輸出控制端,接低電平時輸出數(shù)據(jù)。
單片機(jī)輸出數(shù)據(jù)和移位時鐘,在時鐘上升沿時將數(shù)據(jù)移入74hc595,p1.0輸出數(shù)據(jù),在移位脈沖上升沿到來時數(shù)據(jù)移出。p1.1輸出移位脈沖。p1.2輸出鎖存脈沖。數(shù)據(jù)出現(xiàn)在并行輸出端上經(jīng)74hc07驅(qū)動數(shù)碼管顯示,由于數(shù)據(jù)已被鎖存,在傳送下一組數(shù)據(jù)時,前一組數(shù)據(jù)的內(nèi)容不變,以此方式進(jìn)行數(shù)據(jù)的傳送和顯示。由于在控制模塊中已用單片機(jī)的串行口接收oem板內(nèi)容,所以在顯示模塊軟件中要將p1.0、p1.1、p1.2定義為模擬的串行口。這樣,p1.0、p1.2、p1.3就可以作為串行口來使用。
軟件設(shè)計(jì)
◇ 主程序
軟件設(shè)計(jì)的主程序部分包括對單片機(jī)自身的機(jī)制的設(shè)置和對串行口的初始化等,圖2所示是其主程序流程圖。
◇ gps的測時接收
gps的測時接收數(shù)據(jù)由串行口接收,由單片機(jī)對其進(jìn)行讀入、識別、轉(zhuǎn)換及存儲等操作,在程序開始時,首先識別接收信號,看其是否是要接收的信號,oem板接收的時間信號的字頭為gpzda。由于接收的時間信號是asc
ii碼。所以要將接收的數(shù)據(jù)轉(zhuǎn)化為二進(jìn)制數(shù)。由于接收的時間為格林威治時間,所以必須轉(zhuǎn)化為北京時間,然后將轉(zhuǎn)化后的時間寫入ds12c887中,ds12c887是一種比較準(zhǔn)確的計(jì)時電路,它不需要時刻接收gps信號,設(shè)計(jì)時可規(guī)定1小時接收1次gps信號,其接收子程序流程如圖3所示。
◇ 時鐘倒計(jì)時顯示
此程序主要用于模擬串行口,以便讀取ds12c887的數(shù)據(jù),并利用74hc595對其數(shù)據(jù)進(jìn)行顯示,其流程如圖4所示。
◇ 倒計(jì)時子程序
以從現(xiàn)在到2008年1月1日為例來說明其設(shè)計(jì),首先由單片機(jī)讀ds12c887的時間單元,并將其存放在以69h為起始的單元中,先讀取月份,利用查表的方法計(jì)算其下月份到預(yù)定時間的天數(shù)。然后再利用查表方式判斷其月份是31天、30天、28天或29天,然后將查表得到的天數(shù)減去讀取日期,這樣將二個天數(shù)相加就會得到實(shí)際天數(shù)。進(jìn)行時、分、秒的計(jì)算時,首先要把2008年1月1日0點(diǎn)0時0秒轉(zhuǎn)化為2008年12月31日23點(diǎn)59時60秒,這樣,直接利用時、分、秒響箭就能得到相差的時、分、秒。倒計(jì)時流程如圖5所示。
結(jié)束語
本文所述的是基于gps的高精度、無誤差倒計(jì)時牌經(jīng)調(diào)試運(yùn)行和參數(shù)整定后,運(yùn)行穩(wěn)定可靠,連續(xù)長期運(yùn)行積累的誤差為零,當(dāng)時的時間精度誤差小于15ms。本系統(tǒng)的控制模塊結(jié)構(gòu)簡單,便于實(shí)際開發(fā)應(yīng)用。
評論