




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于GPS的精確電子日歷設(shè)計(jì) 基于GPS的精確電子日歷設(shè)計(jì)摘要 隨著時(shí)代的發(fā)展,生活節(jié)奏的加快,人們的時(shí)間觀(guān)念愈來(lái)愈強(qiáng),設(shè)計(jì)開(kāi)發(fā)數(shù)字時(shí)鐘具有良好的應(yīng)用前景。然而傳統(tǒng)的時(shí)間服務(wù)方式越來(lái)越難以滿(mǎn)足現(xiàn)代工業(yè)化生產(chǎn)實(shí)踐對(duì)時(shí)間的要求。在GPS的高速發(fā)展下,其授時(shí)功能已日益被人們所關(guān)注[1]。 由于單片機(jī)價(jià)格的低成本、高性能,在自動(dòng)控制產(chǎn)品中得到了廣泛的應(yīng)用。本設(shè)計(jì)利用Atmel公司的AT89S52單片機(jī)對(duì)電子時(shí)鐘進(jìn)行開(kāi)發(fā),設(shè)計(jì)了實(shí)現(xiàn)所需功能的硬件電路,應(yīng)用C語(yǔ)言進(jìn)行軟件編程,并用實(shí)驗(yàn)板進(jìn)行演示、驗(yàn)證。 本論文主要介紹構(gòu)成GPS高精度時(shí)鐘的各模塊芯片的功能及各管腳的連接與執(zhí)行情況,詳細(xì)闡述了GPS授時(shí)系統(tǒng)中的授時(shí)模塊,包括GPS授時(shí)的同步利用方式和GPS接受端的數(shù)據(jù)輸出形式以及GPS模塊與單片機(jī)之間的連接通信,來(lái)達(dá)到讀取GPS信息并且在LCD1602上顯示時(shí)間的目的。 本文給出了從GPS模塊讀取的數(shù)據(jù)中截取時(shí)間數(shù)據(jù)并和單片機(jī)之間進(jìn)行傳輸顯示的流程圖及主要程序??紤]到接受GPS信號(hào)的問(wèn)題上,本系統(tǒng)將加入一個(gè)DS1302時(shí)鐘芯片用來(lái)解決GPS信號(hào)中斷或者信號(hào)強(qiáng)度太低導(dǎo)致讀取不到數(shù)據(jù)的問(wèn)題。最后,本文描述了GPS高精度時(shí)鐘在設(shè)計(jì)和實(shí)現(xiàn)過(guò)程中可能出現(xiàn)的問(wèn)題及其調(diào)試過(guò)程,并對(duì)該模塊實(shí)際應(yīng)用上的展望。關(guān)鍵字:高精度時(shí)鐘;GPS接收模塊;AT89C52;LCD1602;DS1302AbstractWiththedevelopmentofTheTimes,theacceleratingrhythmoflife,people'sconceptoftimebecomesmoreandmorestrong,therefore,designanddevelopmentdigitalclockhasagoodapplicationprospect.However,traditionalwayoftimeserviceisincreasinglydifficulttomeettherequirementsofmodernindustrialproductionpracticeofthetime.IntherapiddevelopmentofGPS,theGPSclockfunctionisincreasinglyattentionbypeople.Becauseofthepriceoflow-cost,high-performancesinglechipmicrocomputerhasbeenwidelyusedinautomaticcontroloftheproducts.ThisdesignusetheAT89S52microcontrollerontheelectronicclockofAtmelcompanydevelopment,implementstherequiredfunctionofthehardwarecircuitisdesigned,applicationClanguageforsoftwareprogramminganddemonstration,validationwiththetestboard.ThispaperintroducesaGPShighprecisionclockmodulechipfunctionandthepinconnectionwiththeimplementation,GPStimingGPSclockmoduleinthesystemareexpoundedindetail,includingGPStimingsynchronizationusingmethodandGPSreceivingthedataoutputformandtheconnectionbetweentheGPSmoduleandMCUcommunication,toreadthepurposeoftheGPSinformationandontheLCD1602displaytime.ThedatareadfromtheGPSmodulearegiveninthispapertheinterceptiontimedataandtransmissionbetweenMCUandshowstheflowchartandmainprogram.ConsideringthereceivedGPSsignalproblems,thissystemwilljoinaDS1302clockchipisusedtosolveGPSsignalorthesignalstrengthistoolow,leadtocan'treaddata.Finally,thisarticledescribestheGPShighprecisionclockpossibleproblemsintheprocessofdesignandimplementationanddebuggingprocess,andthemoduleonthepracticalapplicationprospects.Keywords:Highprecisionclock;GPSreceivermodule;AT89C52;LCD1602;DS1302目錄TOC\o"1-3"\u摘要Abstract第一章緒論 11.1選題意義和論文任務(wù) 11.2國(guó)內(nèi)外研究以及趨勢(shì) 11.3論文結(jié)構(gòu) 2第二章GPS高精度時(shí)鐘的硬件設(shè)計(jì) 32.1系統(tǒng)主要芯片選型 32.1.1微處理器AT89C52 32.1.2GPS接收模塊 42.1.3時(shí)鐘芯片DS1302 52.1.4顯示模塊LCD1602 62.2硬件設(shè)計(jì)總體思路 72.3硬件電路設(shè)計(jì) 82.3.1GPS接受模塊和單片機(jī)的連接 82.3.2LCD1602和單片機(jī)的連接 92.3.3按鍵模塊和單片機(jī)的連接 102.3.4時(shí)鐘芯片DS1302和單片機(jī)的連接 10第三章GPS高精度時(shí)鐘的軟件設(shè)計(jì) 113.1GPS授時(shí)系統(tǒng)的同步利用方式 113.1.1脈沖同步方式 113.1.2串行同步方式 113.2GPS授時(shí)模塊的形式及流程圖 123.3LCD1602的顯示操作 143.3.1讀狀態(tài)操作 143.3.2寫(xiě)命令操作 143.3.3LCD初始化 143.4GPS高精度時(shí)鐘主要程序、流程圖及注釋 153.4.1主程序流程圖 153.4.2初始化程序 163.4.3按鍵檢測(cè)程序 173.4.4DS1302的讀寫(xiě)程序 183.4.5LCD1602的讀寫(xiě)程序 19第四章調(diào)試過(guò)程 緒論1.1選題意義和論文任務(wù) 隨著科技的飛速進(jìn)步,我國(guó)電力系統(tǒng)自動(dòng)化技術(shù)快速發(fā)展,為了做到統(tǒng)內(nèi)部統(tǒng)一的管理和調(diào)度,整個(gè)系統(tǒng)對(duì)時(shí)間的統(tǒng)一性要求越來(lái)越高,同時(shí)對(duì)時(shí)間的同步精度要求也越來(lái)越高?;ヂ?lián)網(wǎng)領(lǐng)域在世界各地分布著成千上萬(wàn)的服務(wù)器,計(jì)算機(jī)監(jiān)控系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、大型網(wǎng)絡(luò)服務(wù)器系統(tǒng)、移動(dòng)通信網(wǎng)絡(luò)系統(tǒng)都需要統(tǒng)一的高精度時(shí)間以便管理。 GPS時(shí)鐘具有工作穩(wěn)定、時(shí)間精度高、安全可靠、無(wú)需人工校時(shí)維護(hù)等優(yōu)點(diǎn)廣泛應(yīng)用于廣播電視系統(tǒng)的時(shí)間授時(shí)、同步鎖定及車(chē)站、碼頭、機(jī)場(chǎng)、賓館及戶(hù)外廣場(chǎng)等場(chǎng)合的時(shí)間顯示。GPS性能特點(diǎn):可以全球全天候工作。GPS能為用戶(hù)提供連續(xù)、實(shí)時(shí)的位置、三維速度和精密時(shí)間。定位精度高。三維位置定位精度優(yōu)于25米,三維速度精度優(yōu)于住0.3米/秒,時(shí)間精度100納秒,采用載波測(cè)距定位精度可達(dá)厘米級(jí)。保密、抗干擾。GPS衛(wèi)星發(fā)射的P碼[精測(cè)碼]擴(kuò)頻信號(hào),比高靈敏度接收機(jī)所能接收的最低信號(hào)電平還低幾十個(gè)分貝。用戶(hù)接收機(jī)為了解擴(kuò)頻接收信號(hào),必須產(chǎn)生與信號(hào)中擴(kuò)頻偽碼相同的本機(jī)偽碼因具有較強(qiáng)的保密性,此外利用P碼良好的相關(guān)特性還可增強(qiáng)用戶(hù)接收機(jī)抗電子干擾的能力。 在許許多多的精密研究中,絕不允許時(shí)間上的過(guò)多偏差,為了提高時(shí)鐘的精確度,需要引入GPS信號(hào),每個(gè)GPS衛(wèi)星上都有2-3個(gè)高精度的原子鐘,這幾塊原子鐘互為備份的同時(shí),也互相糾正。另外GPS信號(hào)中自帶了誤差糾正碼,接收端可以很容易的把延遲的這段傳輸延遲去掉。本次設(shè)計(jì)的任務(wù)是在查閱國(guó)內(nèi)資料的基礎(chǔ)上了解GPS的原理和功能,了解單片機(jī)的原理和軟件編程方法,設(shè)計(jì)單片機(jī)最小系統(tǒng)、鍵盤(pán)電路、顯示電路、鬧鐘電路。本系統(tǒng)采用AT89C52作為主控制器,為了防止GPS無(wú)信號(hào)或者信號(hào)弱照成無(wú)數(shù)據(jù)輸出,附加了時(shí)鐘芯片DS1302充當(dāng)?shù)诙r(shí)鐘源,加入按鍵電路用來(lái)設(shè)定時(shí)間值以及鬧鐘值,顯示方面采用LCD1602顯示時(shí)間。1.2國(guó)內(nèi)外研究以及趨勢(shì)傳統(tǒng)的時(shí)間服務(wù)方式越來(lái)越難以滿(mǎn)足現(xiàn)代工業(yè)化生產(chǎn)實(shí)踐對(duì)時(shí)間的要求。隨著GPS的發(fā)展,其授時(shí)功能已日益被人們所關(guān)注。利用GPSOEM接收模塊,進(jìn)行二次研制開(kāi)發(fā)實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘系統(tǒng),具有精度高、無(wú)積累誤差,不受地域、氣候等環(huán)境條件限制,操作方便等特點(diǎn)。GPS時(shí)鐘可廣泛應(yīng)用于電力系統(tǒng)、通訊、交通管理及國(guó)防等需要對(duì)時(shí)、計(jì)時(shí)、守時(shí)的相關(guān)領(lǐng)域[2]。 目前,市場(chǎng)上基于GPS的同步時(shí)鐘系統(tǒng)種類(lèi)非常多,但擴(kuò)展的內(nèi)容和接口各有不同,各個(gè)時(shí)鐘系統(tǒng)所用的中心處理模塊也各有特色??傮w上說(shuō)各種GPS同步時(shí)時(shí)鐘的差別主要在于其時(shí)間的精準(zhǔn)度、提供給用戶(hù)的接口及輸出信息。從處理器上大體可分為兩大類(lèi)型,一種是FPGA型,一種是單片機(jī)型。前者是基于FPGA實(shí)現(xiàn)的,F(xiàn)PGA能夠用硬件實(shí)現(xiàn)各功能模塊并行執(zhí)行,其速度遠(yuǎn)遠(yuǎn)超過(guò)單片機(jī)。所以這種系統(tǒng)一般精確度要高,但是其成本也比較高。后一種主要是通過(guò)單片機(jī)對(duì)GPS信號(hào)進(jìn)行采集,再轉(zhuǎn)換成約定的格式輸出給用戶(hù)。由于單片機(jī)是由串行軟件指令控制的,所以其體系結(jié)構(gòu)將在很大程度上影響同步時(shí)種系統(tǒng)的精確度,使其誤差相對(duì)比較大。1.3論文結(jié)構(gòu)第一章,詳細(xì)論述了GPS高精度時(shí)鐘的優(yōu)越性,同時(shí)探討了GPS的應(yīng)用前景,進(jìn)而提出了本論文的研究任務(wù)。第二章,給出了GPS高精度時(shí)鐘設(shè)計(jì)的主要芯片選型,詳細(xì)論述了GPS模塊的NEMA0183協(xié)議,并以此協(xié)議進(jìn)行數(shù)據(jù)截取輸出。第三章,給出了GPS接受模塊進(jìn)行截取數(shù)據(jù)的原理、流程圖以及主要程序。第四章,給出了在GPS無(wú)信號(hào)或信號(hào)強(qiáng)度太弱時(shí)采用時(shí)鐘芯片DS1302進(jìn)行計(jì)時(shí)并用LCD1602顯示的主要程序。第五章,描述了本系統(tǒng)在設(shè)計(jì)和實(shí)現(xiàn)過(guò)程中出現(xiàn)的問(wèn)題及調(diào)試過(guò)程。第六章,對(duì)全文進(jìn)行系統(tǒng)的總結(jié),并對(duì)GPS時(shí)鐘的研究應(yīng)用進(jìn)行展望。GPS高精度時(shí)鐘的硬件設(shè)計(jì)2.1系統(tǒng)主要芯片選型2.1.1微處理器AT89C52AT89C52是51系列單片機(jī)的一個(gè)型號(hào),它是ATMEL公司生產(chǎn)的。AT89C52是一個(gè)低電壓,高性能CMOS8位單片機(jī),片內(nèi)含8kbytes的可反復(fù)擦寫(xiě)的Flash只讀程序存儲(chǔ)器和256bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,功能強(qiáng)大的AT89C52單片機(jī)可提供許多較復(fù)雜系統(tǒng)控制應(yīng)用場(chǎng)合[3]。 AT89C52有40個(gè)引腳,32個(gè)外部雙向輸入/輸出(I/O)端口,同時(shí)內(nèi)含2個(gè)外中斷口,3個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,2個(gè)讀寫(xiě)口線(xiàn),AT89C52可以按照常規(guī)方法進(jìn)行編程,但不可以在線(xiàn)編程(S系列的才支持在線(xiàn)編程)。其將通用的微處理器和Flash存儲(chǔ)器結(jié)合在一起,特別是可反復(fù)擦寫(xiě)的Flash存儲(chǔ)器可有效地降低開(kāi)發(fā)成本。下圖2.1為AT89C52的最小系統(tǒng)[4]。圖2.1AT89C52的最小系統(tǒng)2.1.2GPS接收模塊GPS模塊就是集成了RF射頻芯片、基帶芯片和核心CPU,并加上相關(guān)外圍電路而組成的一個(gè)集成電路。所謂的基帶芯片就是用來(lái)合成即將發(fā)射的基帶信號(hào),或?qū)邮盏降幕鶐盘?hào)進(jìn)行解碼。具體地說(shuō),就是:發(fā)射時(shí),把音頻信號(hào)編譯成用來(lái)發(fā)射的基帶碼;接收時(shí),把收到的基帶碼解譯為音頻信號(hào)。同時(shí),也負(fù)責(zé)地址信息(手機(jī)號(hào)、網(wǎng)站地址)、文字信息(短訊文字、網(wǎng)站文字)、圖片信息的編譯。GPS接收端可輸出的語(yǔ)句數(shù)據(jù)格式有$GPGGA,$GPGSA,$GPGSV,$GPRMC,$GPVTG,$LCGLL,$LCVTG,$PGRME,$PGRMF,$PGRMT,$PGRMV,$GPGLL。不同的語(yǔ)句中傳送的信息不同,由于“$GPGGA”語(yǔ)句數(shù)據(jù)格式輸出的第一位數(shù)據(jù)就是所需要的時(shí)間數(shù)據(jù),利于單片機(jī)對(duì)時(shí)間信息的接收處理,因此本接收機(jī)授時(shí)系統(tǒng)采用“$GPGGA”“$GPRMC”格式輸出時(shí)間數(shù)據(jù)[7]。$GPGGA(GlobalPositioningSystemFixData(GGA))語(yǔ)句格式如下:$GPGGA,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12><1>UTC時(shí)間,hhmmss(時(shí)分秒)格式<2>緯度ddmm.mmmm(度分)格式(前面的0也將被傳輸)<3>緯度半球N(北半球)或S(南半球)<4>經(jīng)度dddmm.mmmm(度分)格式(前面的0也將被傳輸)<5>經(jīng)度半球E(東經(jīng))或W(西經(jīng))<6>GPS狀態(tài):0=未定位,1=非差分定位,2=差分定位,6=正在估算<7>正在使用解算位置的衛(wèi)星數(shù)量(00-12)(前面的0也將被傳輸)<8>HDOP水平精度因子(0.5-99.9)<9>海拔高度(-9999.9-99999.9)<10>地球橢球面相對(duì)大地水準(zhǔn)面的高度<11>差分時(shí)間(從最近一次接收到差分信號(hào)開(kāi)始的秒數(shù),如果不是差分定位將為空)<12>差分站ID號(hào)0000-1023$GPRMC(RecommendedMinimumSpecificGPS/TRANSITData(RMC))語(yǔ)句格式如下:$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12><1>UTC時(shí)間,hhmmss(時(shí)分秒)格式<2>定位狀態(tài),A=有效定位,V=無(wú)效定位<3>緯度ddmm.mmmm(度分)格式(前面的0也將被傳輸)<4>緯度半球N(北半球)或S(南半球)<5>經(jīng)度dddmm.mmmm(度分)格式(前面的0也將被傳輸)<6>經(jīng)度半球E(東經(jīng))或W(西經(jīng))<7>地面速率(000.0-999.9節(jié),前面的0也將被傳輸)<8>地面航向(000.0-359.9度,以真北為參考基準(zhǔn),前面的0也將被傳輸)<9>UTC日期,ddmmyy(日月年)格式<10>磁偏角(000.0-180.0度,前面的0也將被傳輸)<11>磁偏角方向,E(東)或W(西)<12>模式指示(僅NMEA01833.00版本輸出,A=自主定位,D=差分,E=估算,N=數(shù)據(jù)無(wú)效)2.1.3時(shí)鐘芯片DS1302DS1302是美國(guó)DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V-5.5V。采用三線(xiàn)接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時(shí)提供了對(duì)后備電源進(jìn)行涓細(xì)電流充電的能力,下圖2.2為DS1302的引腳圖。圖2.2DS1302的引腳圖DS1302的引腳中Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時(shí),Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線(xiàn),通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)傳送的方法。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過(guò)程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc>2.0V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。I/O為串行數(shù)據(jù)輸入輸出端(雙向),SCLK為時(shí)鐘輸入端。DS1302的控制字如下圖2.3所示,控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫(xiě)入DS1302中,位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫(xiě)操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開(kāi)始輸出。圖2.3DS1302的控制字節(jié)2.1.4顯示模塊LCD1602LCD顯示器分為字段顯示和字符顯示兩種,可采用LCD1602作為顯示器件輸出信息,可以顯示2行16個(gè)漢字。液晶顯示模塊具有體積小、功耗低、顯示內(nèi)容豐富、不需要外加驅(qū)動(dòng)電路等優(yōu)點(diǎn),是單片機(jī)應(yīng)用設(shè)計(jì)中最常用的顯示器件,下圖2.4為L(zhǎng)CD1602的引腳圖。圖2.4LCD1602的引腳圖LCD1602其引腳功能如下:RS:數(shù)據(jù)和指令選擇控制端,RS=0命令狀態(tài);RS=1數(shù)據(jù);R/W:讀寫(xiě)控制線(xiàn),R/W=0寫(xiě)操作;R/W=1讀操作;A:背光控制正電源;K:背光控制地;E:數(shù)據(jù)讀寫(xiě)操作控制位,E線(xiàn)向LCD模塊發(fā)送一個(gè)脈沖,LCD模塊和單片機(jī)間將進(jìn)行一次數(shù)據(jù)交換;DB0-DB7:數(shù)據(jù)線(xiàn),可用8位連接,也可只用高4位連接,節(jié)約單片機(jī)源;VDD:電源端;VEE:亮度控制端(1-5V);VSS:接地端。2.2硬件設(shè)計(jì)總體思路在整個(gè)系統(tǒng)的硬件設(shè)計(jì)中,采用AT89C52作為主處理芯片。時(shí)間信號(hào)采用GPS接收模塊和AT89C52相結(jié)合,截取GPS接收端輸出的時(shí)間數(shù)據(jù)并用LCD1602顯示。在GPS接收端無(wú)數(shù)據(jù)輸出時(shí),即無(wú)GPS信號(hào)或信號(hào)強(qiáng)度太弱時(shí),采用DS1302時(shí)鐘芯片進(jìn)行計(jì)時(shí)。本系統(tǒng)在顯示時(shí)間的基礎(chǔ)上加入鬧鐘模塊,并且設(shè)置4個(gè)功能按鈕可以對(duì)當(dāng)前的時(shí)間進(jìn)行設(shè)置并且修改鬧鐘時(shí)間。系統(tǒng)采用LCD1602進(jìn)行輸出顯示,1602中數(shù)據(jù)總線(xiàn)DB0-7對(duì)應(yīng)單片機(jī)中的P1口,3條控制線(xiàn)分別接另外3個(gè)單片機(jī)端口,其他對(duì)應(yīng)接上電源和地。在鍵盤(pán)模塊中添加上拉電阻,上拉電阻可以保證在沒(méi)有按鍵輸入時(shí),進(jìn)入單片機(jī)四個(gè)I/O口的按鍵狀態(tài)均為高電平,防止干擾產(chǎn)生;當(dāng)有按鍵按下時(shí),相應(yīng)的端口線(xiàn)狀態(tài)轉(zhuǎn)為低電平,總體框架如下圖2.5所示。圖2.5高精度GPS時(shí)鐘系統(tǒng)的框架簡(jiǎn)圖2.3硬件電路設(shè)計(jì)系統(tǒng)的整體硬件電路圖如下圖2.5所示:圖2.5系統(tǒng)的整體硬件電路圖2.3.1GPS接受模塊和單片機(jī)的連接單片機(jī)上的3.0和3.1管腳除了作為普通的IO口外,還有另外的用途。P3.0(RXD)、P3.1(TXD)是ReceiveData,TransmitData的意思,即RXD為接收數(shù)據(jù)的引腳,TXD為發(fā)送數(shù)據(jù)的引腳。將GPS接收模塊的2條信號(hào)線(xiàn)分別對(duì)應(yīng)接上RXD、TXD端口進(jìn)行數(shù)據(jù)的通訊,用來(lái)接收時(shí)間信號(hào)并對(duì)時(shí)間信號(hào)進(jìn)行截取輸出,如下圖2.6所示連接。VCCGPS接收模塊AT89C52P3.0P3.1VCCGPS接收模塊AT89C52P3.0P3.1GROUNDGROUND圖2.6GPS接收端和AT89C52的連接2.3.2LCD1602和單片機(jī)的連接LCD1602VSSVDDVEED0-D7RSR/WE1602中數(shù)據(jù)總線(xiàn)DB0-7對(duì)應(yīng)單片機(jī)中的P1口,3條控制線(xiàn)分別接另外3個(gè)單片機(jī)端口,其他對(duì)應(yīng)接上電源和地(下圖2.7)。LCD1602VSSVDDVEED0-D7RSR/WEAT89C52P2.1P2.2AT89C52P2.1P2.2P1口P2.3GROUNDGROUNDVCCVCC 圖2.7LCD1602和單片機(jī)AT89C52的連接LCD1602中VDD為電源正極,VSS為電源接地端,VEE為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地時(shí)對(duì)比度最高。LCD1602有四種基本的操作時(shí)序:讀狀態(tài)、寫(xiě)指令、讀數(shù)據(jù)和寫(xiě)數(shù)據(jù)。讀狀態(tài):輸入:RS=L,RW=H,E=H輸出:D0-D7=狀態(tài)字寫(xiě)指令:輸入:RS=L,RW=L,D0-D7=指令碼,E=高脈沖輸出:無(wú)讀數(shù)據(jù):輸入:RS=H,RW=H,E=H輸出:D0-D7=數(shù)據(jù)寫(xiě)數(shù)據(jù):輸入:RS=H,RW=L,D0-D7=數(shù)據(jù),E=高脈沖 輸出:無(wú)2.3.3按鍵模塊和單片機(jī)的連接鍵盤(pán)模塊設(shè)置了四個(gè)按鍵:KEY1、KEY2、KEY3、KEY4。其中KEY1為設(shè)置時(shí)間值,KEY2為設(shè)定值上升鍵,用KEY3為設(shè)定值減小鍵,KEY4是設(shè)定鬧鐘值。電路連接如下圖2-8所示,4個(gè)上拉電阻可以保證在沒(méi)有按鍵輸入時(shí),進(jìn)入單片機(jī)四個(gè)I/O口的按鍵狀態(tài)均為高電平,防止干擾產(chǎn)生;當(dāng)有按鍵按下時(shí),相應(yīng)的端口線(xiàn)狀態(tài)轉(zhuǎn)為低電平。圖2.8按鍵模塊和單片機(jī)的連接2.3.4時(shí)鐘芯片DS1302和單片機(jī)的連接DS1302與CPU的連接需要三條線(xiàn),即SCLK、I/O、RST,分別連接單片機(jī)的3個(gè)端口3.5、3.6、3.7(下圖2.9),用來(lái)對(duì)DS1302的命令字的讀寫(xiě)和數(shù)據(jù)的讀寫(xiě)。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線(xiàn),通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。圖2.9DS1302和52單片機(jī)的連接GPS高精度時(shí)鐘的軟件分析設(shè)計(jì)3.1GPS授時(shí)系統(tǒng)的同步利用方式3.1.1脈沖同步方式脈沖同步方式,即同步時(shí)鐘每隔一定的時(shí)間間隔輸出一個(gè)精確的同步脈沖。監(jiān)控裝置在接收到同步脈沖后進(jìn)行對(duì)時(shí),消除裝置內(nèi)部時(shí)鐘的走時(shí)誤差。同步脈沖的周期、頻率、電平、脈寬、脈沖的正負(fù)、上升和下降時(shí)間、同步的時(shí)刻等均可能有所變化。根據(jù)脈沖輸出接口的不同,同步脈沖分為有源TTL電平輸出、無(wú)源空接點(diǎn)輸出、固態(tài)繼電器輸出等。有源TTL電平輸出,即每隔一定的時(shí)間間隔產(chǎn)生一個(gè)TTL電平脈沖,或正脈沖或負(fù)脈沖,脈沖的寬度和占空比可以不同。這種輸出,用戶(hù)可以直接引出同步信號(hào),不必外加電源。無(wú)源空接點(diǎn)輸出,即將同步脈沖作為一開(kāi)關(guān)量輸出,一般是使用一個(gè)光電三極管,從集電極輸出??筛鶕?jù)應(yīng)用要求,在同步時(shí)鐘到來(lái)時(shí),三極管由導(dǎo)通變截止,或由截止變導(dǎo)通。1PPS(秒脈沖,即:pulsepersecond脈沖/秒)輸出,是一個(gè)電平信號(hào),一般以方波形式輸出,高電平(也有較少數(shù)為低電平的)表示有秒脈沖輸出,其持續(xù)時(shí)間很短,一般在毫秒量級(jí)上,其電平信號(hào)為+5V,持續(xù)時(shí)間為毫秒級(jí),低電平(也有較少數(shù)為高電平的)表示沒(méi)有信號(hào)輸出。高電平上升沿為1PPS輸出的精確時(shí)刻。在GPSOEM板取得有效導(dǎo)航解析的時(shí)候,秒脈沖上升沿的時(shí)刻與GPS時(shí)刻相差在50ns以?xún)?nèi),與串行口輸出的UTC標(biāo)準(zhǔn)時(shí)間相差在1us以?xún)?nèi)。OEM板先為用戶(hù)提供秒脈沖,再提供與該秒脈沖相對(duì)應(yīng)的UTC標(biāo)準(zhǔn)時(shí)間。有時(shí)在沒(méi)有收到衛(wèi)星信號(hào)或?qū)Ш浇鉄o(wú)效的情況下(即沒(méi)有收到UTC的校正數(shù)據(jù)),OEM板通過(guò)開(kāi)發(fā)工具板也能向外發(fā)送秒脈沖,但此時(shí)秒脈沖為GPSOEM內(nèi)部未改正鐘差、鐘漂的原始時(shí)鐘的時(shí)間,其上升沿的時(shí)刻不準(zhǔn)確、不穩(wěn)定,誤差較大,無(wú)實(shí)用價(jià)值。僅在取得正確導(dǎo)航解時(shí)才可以用UTC時(shí)間對(duì)GPSOEM內(nèi)部時(shí)間進(jìn)行校正,輸出精確時(shí)間。3.1.2串行同步方式串行同步方式是時(shí)鐘以串行數(shù)據(jù)流的方式輸出時(shí)間信息,各種自動(dòng)裝置接收每秒一次的串行時(shí)間信息獲得時(shí)間同步。串行通信的標(biāo)準(zhǔn)和格式多種多樣,按信息碼的格式不同,分別有ASCII碼、IRIG-B碼等。按串行通信接口標(biāo)準(zhǔn)的不同,ASCII碼有RS232C、RS422/485等方式,IRIG-B碼有TTL直流電平碼輸出、1kHZ正弦波調(diào)制碼輸出、MANCHESTER調(diào)制碼輸出等方式。(1)RS232/422/485串行接口輸出同步時(shí)鐘通過(guò)RS232/422/485串行口在整秒、整分或整時(shí),輸出一次時(shí)間信息。時(shí)間信息格式一般是由幀頭、時(shí)、分、秒、日、月、年及結(jié)束符組成。自動(dòng)裝置在接收到對(duì)時(shí)信號(hào)后,通過(guò)軟件校正內(nèi)部時(shí)鐘。使用串行口方式對(duì)時(shí),比脈沖對(duì)時(shí)方式復(fù)雜。受接收過(guò)程中信息處理時(shí)間的影響,對(duì)時(shí)精度差。如果要提高對(duì)時(shí)精度,還需要再給出對(duì)時(shí)脈沖信號(hào)。(2)IRIG-B碼串行輸出IRIG-B是美國(guó)最先采用的一種國(guó)際時(shí)間碼標(biāo)準(zhǔn)。目前電力系統(tǒng)中的許多進(jìn)口裝置均使用IRIG-B時(shí)間碼獲取時(shí)間信息,因此IRIG-B碼制串行輸出也應(yīng)作為GPS同步時(shí)鐘輸出的一種可選形式。IRIG-B信號(hào)有TTL直流電平碼和1kHZ正弦波調(diào)制碼兩種形式。每一碼脈沖的寬度是10ms,通過(guò)改變直流電平占空比或變化1kHZ調(diào)制信號(hào)的幅值來(lái)表示邏輯“1”與“0”及標(biāo)識(shí)符(幀起始符,相鄰秒、分、小時(shí)、日期、數(shù)據(jù)的分隔符)。起始位的上升沿即為同步時(shí)刻。IRIG-BTTL直流電平碼的分辨率為10ms,不加調(diào)制解調(diào),使用方便,但只適于近距離傳輸。1kHZ正弦波調(diào)制碼的分辨率為1ms,適合遠(yuǎn)距離傳輸,這種正弦波調(diào)制碼一般通過(guò)音頻傳輸線(xiàn)路來(lái)傳輸數(shù)據(jù)。所以本文認(rèn)為,在裝置硬件資源豐富的前提下可以考慮兩種方案同時(shí)結(jié)合使用,即是將脈沖校時(shí)和串口校時(shí)結(jié)合起來(lái)的綜合校時(shí)方案。3.2GPS授時(shí)模塊的形式及流程圖OEM板輸出的數(shù)據(jù)是以數(shù)據(jù)流的形式輸出,采集的起始時(shí)刻未必是一幀數(shù)據(jù)的開(kāi)始時(shí)刻,所以在數(shù)據(jù)采集時(shí),必須先判斷字頭塊,在接收到字頭塊后,開(kāi)始采集數(shù)據(jù)。OEM板每隔1s自動(dòng)輸出觀(guān)測(cè)數(shù)據(jù)幀和位置數(shù)據(jù)幀一次,但輸出的格式小時(shí)部分加8是多種多樣的,因此必須先給OEM板發(fā)送指令來(lái)控制其輸出數(shù)據(jù)格式。接收數(shù)據(jù)需要設(shè)定單片機(jī)的波特率,使其與GPSOEM板的傳輸波特率一致。給OEM板發(fā)送一條指令,使其發(fā)送的0183數(shù)據(jù)格式為“$GPGGA”,該指令預(yù)先存在數(shù)據(jù)存儲(chǔ)器里,用循環(huán)方式順次從程序存儲(chǔ)器里取出數(shù)據(jù)就可循環(huán)發(fā)送。然后0EM板將輸出相應(yīng)格式的數(shù)據(jù),單片機(jī)對(duì)接收的信息進(jìn)行判初始化斷,如果是“$GPGGA”,則接收下面的6個(gè)ASCII碼并存儲(chǔ)在單片機(jī)的RAM里;如果不是“$GPGGA”,則繼續(xù)判斷,直到是“$GPGGA”。也可采用循環(huán)方式接收時(shí)間信息。由于接收到的時(shí)間是世界標(biāo)準(zhǔn)時(shí)(UTC),因此在此時(shí)間上加上8h才是準(zhǔn)確的北京時(shí),在超出24h時(shí)應(yīng)作減24h處理,然后進(jìn)行顯示處理。顯示采用動(dòng)態(tài)顯示原理,每個(gè)時(shí)間狀態(tài)顯示停留一段時(shí)間,顯示完后程序跳轉(zhuǎn)到主函數(shù)以便接受下一秒的數(shù)據(jù)并將其顯示。下圖3.1為授時(shí)程序流程圖。小時(shí)部分加8初始化是否>24發(fā)送字節(jié)是否>24發(fā)送字節(jié)NN指向儲(chǔ)存單元指向儲(chǔ)存單元發(fā)送完否發(fā)送完否左邊開(kāi)始取數(shù)據(jù)左邊開(kāi)始取數(shù)據(jù)送出一位顯示接受字符送出一位顯示接受字符延時(shí)延時(shí)N指向下一個(gè)單元循環(huán)判斷是否為N指向下一個(gè)單元循環(huán)判斷是否為$GPGGA字符讀完6位Y讀完6位YYY位控信號(hào)右移一位循環(huán)6次接收數(shù)據(jù)并存取N位控信號(hào)右移一位循環(huán)6次接收數(shù)據(jù)并存取N圖3.1授時(shí)程序流程圖圖3.1授時(shí)程序流程圖3.3LCD1602的顯示操作LCD有四種基本操作,具體如表3.1所示。表3.1LCD與單片機(jī)之間的四種基本操作狀態(tài)RSR/W操作狀態(tài)100寫(xiě)命令操作(初始化,光標(biāo)定位等)狀態(tài)201讀狀態(tài)操作(讀忙標(biāo)志位)狀態(tài)310寫(xiě)數(shù)據(jù)操作(要顯示內(nèi)容)狀態(tài)411讀數(shù)據(jù)操作(可以把顯示存儲(chǔ)區(qū)中的數(shù)據(jù)反讀出來(lái))3.3.1讀狀態(tài)操作執(zhí)行讀狀態(tài)字操作,如表3.1所示須滿(mǎn)足RS=0、R/W=1。根據(jù)管腳功能,當(dāng)為有效電平時(shí),狀態(tài)命令字可從LCD模塊傳輸?shù)綌?shù)據(jù)總線(xiàn)。同時(shí)可以保持一段時(shí)間,從而實(shí)現(xiàn)讀狀態(tài)字的功能。如下圖3.2所示為讀入狀態(tài)字流程圖。RS清0等待RS清0等待RW置1等待E置1等待讀入狀態(tài)字等待E清0等待RW清0等待結(jié)束圖3.2讀入狀態(tài)字流程圖3.3.2寫(xiě)命令操作由表3.1可知當(dāng)RS=0,R/W=0時(shí),才可以通過(guò)單片機(jī)或用戶(hù)指令把數(shù)據(jù)即命令,寫(xiě)到LCD模塊,此時(shí)就對(duì)LCD進(jìn)行調(diào)制??刹捎貌樵?xún)方式:先讀入狀態(tài)字,再判斷忙標(biāo)志,最后寫(xiě)命令字。3.3.3LCD初始化從通電開(kāi)始通過(guò)延時(shí),先經(jīng)過(guò)判忙后再進(jìn)行功能設(shè)置,過(guò)一段時(shí)間后可以設(shè)制顯示狀態(tài)(如設(shè)置行、位或陣列)再經(jīng)過(guò)延時(shí)后清屏后再可以設(shè)置輸入方式,具體如圖3.3所示。上電上電延時(shí)20ms功能設(shè)置延時(shí)37us顯示狀態(tài)設(shè)置清屏延時(shí)1.52ms輸入方式設(shè)置返回圖3.3LCD初始化流程圖3.4GPS高精度時(shí)鐘主要程序、流程圖及注釋3.4.1主程序流程圖本系統(tǒng)主程序流程圖如下圖3.4所示。有GPS信號(hào)?開(kāi)始有GPS信號(hào)?開(kāi)始NYNY初始化初始化設(shè)置鬧鐘時(shí)間設(shè)置鬧鐘時(shí)間截取GPS時(shí)間數(shù)據(jù)從DS1302讀數(shù)據(jù)截取GPS時(shí)間數(shù)據(jù)從DS1302讀數(shù)據(jù)N是否到鬧鈴時(shí)間?N是否到鬧鈴時(shí)間?單片機(jī)處理單片機(jī)處理YY鬧鈴操作鬧鈴操作LCD1602顯示LCD1602顯示 3.4主程序流程圖在開(kāi)始的初始化中,需要對(duì)各芯片進(jìn)行初始化,初始化完成后要判斷GPS接收端有沒(méi)有數(shù)據(jù)輸出(有沒(méi)有GPS信號(hào)),即單片機(jī)有沒(méi)有數(shù)據(jù)讀入。如果沒(méi)有GPS信息,為了防止時(shí)間停滯,采用DS1302計(jì)時(shí)。因?yàn)镚PS接收端的數(shù)據(jù)傳輸是類(lèi)似于網(wǎng)絡(luò)中帶有包頭的數(shù)據(jù)包傳輸,所以要對(duì)其數(shù)據(jù)進(jìn)行包頭判斷,在確定下數(shù)據(jù)頭之后,還需要有一個(gè)逗號(hào)計(jì)數(shù)器。這個(gè)逗號(hào)計(jì)數(shù)器的作用就是在已獲得的(確定頭部)數(shù)據(jù)中截取所需的一部分。3.4.2初始化程序voidInitial_LCD1602(void)//LCD1602初始化{ RW=0; LCDEN=0; write_com(0x38);//寫(xiě)指令顯示模式設(shè)置 write_com(0x0c);//顯示光標(biāo)開(kāi)及光標(biāo)設(shè)置 write_com(0x06);//顯示光標(biāo)移動(dòng)設(shè)置 write_com(0x01);//顯示清屏}voidinit()//總初始化{ Initial_LCD1602(); altp=0;//給各標(biāo)志位附初值 BLA=0; blaflag=0; yearh=20; TMOD=0x20;//設(shè)置定時(shí)器模式 PCON=0x00;//電源控制寄存器設(shè)置 SCON=0x50;//串行口控制寄存器TH1=0xFd;//波特率9600設(shè)定 TL1=0xFd; TR1=1; //啟動(dòng)定時(shí)器 EA=1; //開(kāi)中斷 IE=0x90;//中斷允許控制寄存器}3.4.3按鍵檢測(cè)流程按鍵檢測(cè)流程圖如下圖3.5所示。初始化按鍵初始化按鍵NN按鍵4按下?按鍵1按下?NN按鍵4按下?按鍵1按下?YYYY切換到鬧鐘界面光標(biāo)左移一位切換到鬧鐘界面光標(biāo)左移一位 NN按鍵3按下?按鍵2按下?NN按鍵3按下?按鍵2按下?YYYY對(duì)應(yīng)的數(shù)值減1對(duì)應(yīng)的數(shù)值加1對(duì)應(yīng)的數(shù)值減1對(duì)應(yīng)的數(shù)值加1圖3.5按鍵檢測(cè)流程圖其中按鍵1為校準(zhǔn)當(dāng)前時(shí)間的功能切換按鍵,按鍵2為對(duì)應(yīng)的數(shù)值加1的功能按鍵,按鍵3為對(duì)應(yīng)的數(shù)值減1按鍵,按鍵4為設(shè)置鬧鐘時(shí)間的功能切換按鍵,通過(guò)這4個(gè)按鍵可以對(duì)時(shí)間進(jìn)行校準(zhǔn)并且設(shè)定鬧鐘時(shí)間。3.4.4DS1302的讀寫(xiě)程序//向DS1302寫(xiě)一個(gè)字節(jié)voidwrite_a_byte_to_ds1302(uchardatt){uchari;for(i=0;i<8;i++)//一個(gè)字節(jié)8位{DIO=datt&1;//數(shù)據(jù)位與操作 SCLK=1;//時(shí)鐘信號(hào) SCLK=0; datt>>=1;//位移操作}}//向DS1302讀取一個(gè)字節(jié)ucharget_a_byte_from_ds1302(){uchari,b,t;for(i=0;i<8;i++)//一個(gè)字節(jié)8位{b>>=1; t=DIO; b|=t<<7;//位或操作 SCLK=1; SCLK=0;} returnb/16*10+b%16;//返回一個(gè)十進(jìn)制數(shù)}//從DS1302指定位置讀數(shù)據(jù)ucharread_data(ucharaddr){uchardat;CE=0;SCLK=0;CE=1;//CE為1允許讀寫(xiě)操作write_a_byte_to_ds1302(addr);//向DS1302寫(xiě)地址操作dat=get_a_byte_from_ds1302();//從DS1302讀數(shù)據(jù)SCLK=1;CE=0;returndat;//返回?cái)?shù)據(jù)}//向DS1302某地址寫(xiě)入數(shù)據(jù)voidwrite_ds1302(ucharadder,uchardat){SCLK=0;CE=1;//CE為1允許讀寫(xiě)操作write_a_byte_to_ds1302(adder);//向DS1302寫(xiě)地址操作write_a_byte_to_ds1302(dat);//向DS1302寫(xiě)數(shù)據(jù)SCLK=0;CE=0;}3.4.5LCD1602的讀寫(xiě)程序voidwrite_com(ucharcom) //LCD1602寫(xiě)地址設(shè)置{ P1=com;//通過(guò)單片機(jī)P1口和1602連接 RS=0;//RS為0時(shí)是地址操作 LCDEN=0; delay(10); LCDEN=1; delay(10); LCDEN=0; }voidwrite_date(uchardate) //LCD1602寫(xiě)數(shù)據(jù)設(shè)置{ P1=date;//通過(guò)單片機(jī)P1口和1602連接 RS=1;//RS為0時(shí)是數(shù)據(jù)操作 LCDEN=0; delay(10); LCDEN=1; delay(10); LCDEN=0; }voidwrite(ucharadd,uchardate)//數(shù)據(jù)寫(xiě)入并顯示操作{ ucharshi,ge; shi=date/10;//取出data數(shù)據(jù)的十位數(shù) ge=date%10;//取出data數(shù)據(jù)的個(gè)位數(shù)//write_com(0x80+add);//寫(xiě)地址操作,0x80為第一行 write_com(0x80+0x40+add);//寫(xiě)地址操作,0xC0為第二行 write_date(0x30+shi);//寫(xiě)數(shù)據(jù)操作 write_date(0x30+ge);}調(diào)試過(guò)程4.1GPS接收信息強(qiáng)度由于GPS接收端對(duì)GPS信號(hào)的強(qiáng)度要求比較高,所以測(cè)試的時(shí)候要在比較空曠的場(chǎng)地上進(jìn)行。4.2GPS和單片機(jī)的通信本系統(tǒng)采用了單片機(jī)的P3.0(RXD)、P3.1(TXD)端口,要注意這兩個(gè)端口是否正常接收發(fā)送數(shù)據(jù)。GPS模塊和單片機(jī)的波特率,中斷等設(shè)定要一樣才能進(jìn)行數(shù)據(jù)之間的通信。4.3程序運(yùn)行判斷單片機(jī)程序是否正常運(yùn)行最直觀(guān)的方法是使用示波器。編程使得某引腳(如P1.0循)環(huán)取反,可通過(guò)示波器觀(guān)察到此引腳一定頻率的方波信號(hào)。同樣,向串口循環(huán)發(fā)送任一數(shù)據(jù),亦可通過(guò)示波器觀(guān)察到此信號(hào)。4.4DS1302的晶振頻率DS1302應(yīng)該外接32.768kHz晶振,測(cè)試的時(shí)候采用其他頻率的晶振會(huì)照成比較大的誤差。4.5誤差分析在無(wú)GPS時(shí),采用DS1302計(jì)時(shí)時(shí),誤差為每分鐘1S,采用GPS信號(hào)計(jì)時(shí)時(shí)誤差小于1S,GPS時(shí)鐘比普通的電子時(shí)鐘精度高出很多,同時(shí)也說(shuō)明了GPS時(shí)鐘的重要性。總結(jié)一個(gè)時(shí)鐘最重要的也是最基本的功能應(yīng)該是準(zhǔn)確度,如果一個(gè)時(shí)鐘不準(zhǔn),誤差大,那么外表再漂亮也僅僅是一個(gè)裝飾物,不具有太大的使用價(jià)值。時(shí)鐘準(zhǔn)不準(zhǔn)靠的是我們常說(shuō)的晶振,大多數(shù)是石英晶體諧振器,標(biāo)準(zhǔn)應(yīng)該是32.768KHz(除高精度原子鐘外)。晶振其實(shí)在電子時(shí)鐘系統(tǒng)里面就是一個(gè)時(shí)鐘源,它有兩個(gè)重要指標(biāo),一個(gè)是穩(wěn)定度,一個(gè)是準(zhǔn)確度,準(zhǔn)確度指的是與標(biāo)稱(chēng)值的偏差,穩(wěn)定度值得是隨著外部因素的變化而產(chǎn)生的變化量。為了使時(shí)鐘具有較高的準(zhǔn)確度,需要讓晶振工作在接近準(zhǔn)確值的溫度范圍內(nèi)或者用外圍電路去根據(jù)環(huán)境溫度去補(bǔ)償溫度偏差給晶振帶來(lái)的誤差,即溫度補(bǔ)償。隨著科技的進(jìn)步,目前還有一種手段,就是通過(guò)GPS或其他衛(wèi)星導(dǎo)航系統(tǒng)的信號(hào)馴服晶振,從而實(shí)現(xiàn)高精度的頻率和時(shí)間信號(hào)輸出,是目前達(dá)到高授時(shí)精度和高穩(wěn)定度的最有效方式,既GPS時(shí)鐘。在科技飛速發(fā)展的今天,人們對(duì)各類(lèi)產(chǎn)品的性能要求也是日益提高,對(duì)時(shí)間的精確度也不例外。有時(shí)候時(shí)間上僅僅是一點(diǎn)點(diǎn)的差別,也會(huì)造成巨大的損失。在了解國(guó)內(nèi)外現(xiàn)狀后,從線(xiàn)路、體積和價(jià)格方面考慮,選取AT89C52單片機(jī)為控制核心,通過(guò)外圍元件實(shí)時(shí)時(shí)鐘芯片DS1307構(gòu)成了一個(gè)具有實(shí)時(shí)時(shí)間與日歷顯示、按鍵調(diào)時(shí)、鬧鈴定時(shí)功能的數(shù)字時(shí)鐘,采用液晶LCD1602作為顯示器,并且在精確度方面上加入了GPS授時(shí)模塊。擁有GPS對(duì)時(shí)功能,使時(shí)鐘誤差在一秒以?xún)?nèi),得知精確的時(shí)間。參考文獻(xiàn)[1]楊寧.單片機(jī)與控制技術(shù)[M].第一版.北京航空航天大學(xué)出版社,2005年[2]樓然苗,李光飛.51系列單片機(jī)設(shè)計(jì)實(shí)例.北京航空航天大學(xué)出版社,2004年[3]閹石.?dāng)?shù)字電子技術(shù)基礎(chǔ).高等教育出版社,2005年[4]謝嘉奎.電子線(xiàn)路.高等教育出版社,2004年[5]賴(lài)麟文.8051單片機(jī)嵌入式系統(tǒng)應(yīng)用.科學(xué)出版社,2005年[6]高峰.單片機(jī)微型計(jì)算機(jī)原理與接口技術(shù).科學(xué)出版社,2005年[7]劉為,董德存.基于GPS技術(shù)的分布式授時(shí)同步時(shí)鐘.微型電腦應(yīng)用,2005年[8]TammyNoergaard,馬洪兵,古源濤譯.嵌入式系統(tǒng)硬件與軟件架構(gòu).北京人民郵電出版社,2008年[9]WeissM,ZhangV,NelsonL.DelayvariationsinsomeGPStimingreceivers.Proceedingsofthe1997IEEEInternationalFrequencyControlSymposium,1997[10]周強(qiáng),叢海波,吳希杰.利用GPS實(shí)現(xiàn)高精度時(shí)鐘.信息技術(shù)與信息化,2006年[11]夏雙林.GPS標(biāo)準(zhǔn)時(shí)間同步時(shí)鐘的設(shè)計(jì)與實(shí)現(xiàn)[碩士學(xué)位論文].湖北武漢華中科技大學(xué),2008年[12]Ganssle,JackG.TheChallengesofRealTimeProgramming.EmbeddedSystemsProgramming,July1998[13]文馬艷,謝楠,田靜華.GPS高精度水電站授時(shí)系統(tǒng).浙江水利水電專(zhuān)科學(xué)校學(xué)報(bào),2008年[14]謝瑞和.串行技術(shù)大全(第1版).北京清華大學(xué)出版社,2003年[15]張麗伊.GPS衛(wèi)星時(shí)鐘同步系統(tǒng)在綜自變電站中的應(yīng)用.科技信息,2008年[16]殷科生.基于高精度GPS時(shí)鐘的新型故障錄波裝置.制造業(yè)自動(dòng)化,2009年[17]熊志昂,李紅瑞,賴(lài)順香.GPS技術(shù)與工程應(yīng)用[M].北京國(guó)防工業(yè)出版社,2005年[18]Ganssle,JackG.TheArtofDesigningEmbeddedSystems.Newnes,1999致謝在我進(jìn)行此畢業(yè)論文撰寫(xiě)的過(guò)程中,我的導(dǎo)師韓秀榮老師我極大的幫助。在這里,我要感謝在這些在我畢業(yè)設(shè)計(jì)過(guò)程中指導(dǎo)和幫助過(guò)我的人。首先,我要感謝我的指導(dǎo)老師韓老師的悉心指導(dǎo)和嚴(yán)格要求。本論文的選題和撰寫(xiě)都是在韓老師的指導(dǎo)下完成的。韓老師為我創(chuàng)造了良好的學(xué)習(xí)和鍛煉的環(huán)境,使我各方面的能力都有了長(zhǎng)足的進(jìn)步;韓老師對(duì)于我設(shè)計(jì)的指導(dǎo),思維上的啟迪,都將成為今后工作、學(xué)習(xí)的寶貴精神財(cái)富。在我走向社會(huì),走向工作崗位的過(guò)程中,韓老師給予我的教誨、幫助和殷切期望,促使我更加積極追求新的人生目標(biāo)。感謝父母一直默默地給予我關(guān)心和支持,父母的悉心關(guān)懷,永遠(yuǎn)是鼓勵(lì)我積極向上的不竭動(dòng)力。最后,還要感謝和我一樣即將畢業(yè)的同班同學(xué);感謝大學(xué)四年的同寢室室友;感謝那些沒(méi)有提及姓名,但也同樣給予我?guī)椭睦蠋?、同學(xué)和朋友!戴程遠(yuǎn)2013年4月27日附錄GPS時(shí)鐘程序#include<reg52.h>#include<intrins.h>//#include<dfine.h>#defineucharunsignedchar#defineuintunsignedint/*DS1302*///寄存器宏定義#defineWRITE_SECOND0x80#defineWRITE_MINUTE0x82#defineWRITE_HOUR0x84#defineWRITE_MDAY0x86#defineWRITE_MONTH0x88#defineWRITE_WDAY0x8A#defineWRITE_YEAR0x8C#defineWRITE_ALMINUTE0xC0#defineWRITE_ALHOUR0xC2#defineWRITE_ALARM0xC4#defineREAD_SECOND0x81#defineREAD_MINUTE0x83#defineREAD_HOUR0x85#defineREAD_MDAY0x87#defineREAD_MONTH0x89#defineREAD_WDAY0x8B#defineREAD_YEAR0x8D#defineREAD_ALMINUTE0xC1#defineREAD_ALHOUR0xC3#defineREAD_ALARM0xC5#defineWRITE_PROTECT0x8EsbitSCLK=P3^6;sbitDIO=P3^7;sbitCE=P3^5;sbitBEEP=P2^0;sbitDQ=P1^7;sbitBLA=P2^4;sbitRS=P2^1;sbitRW=P2^2;sbitLCDEN=P2^3;sbits1=P0^0;sbits2=P0^1;sbits3=P0^2;sbits4=P0^3;bitblaflag;uintcount0,count1;/*DS1302*/bitamt,altp;uintytemp,year;ucharnum1,num4,s1num,s2num,s3num,s4num,wday,mday,month,flag,alflag;uchartimecount;charmiao,shi,fen,yearl,yearh;charalshi,alfen,alarm;//GPS數(shù)據(jù)存儲(chǔ)數(shù)組unsignedcharJD[10]={"."};//經(jīng)度unsignedcharJD_a='-'; //經(jīng)度方向unsignedcharWD[9]={"."}; //緯度unsignedcharWD_a='-'; //緯度方向unsignedchardate_y[2]={"--"};//年unsignedchardate_m[2]={"--"};//月unsignedchardate_d[2]={"--"};//日unsignedchartime_s[2]={"--"};//時(shí)unsignedchartime_f[2]={"--"};//分unsignedchartime_m[2]={"--"};//秒unsignedcharspeed[7]={""};//速度x.xx\xx.xx\xxx.xx節(jié)=海里/小時(shí),相當(dāng)于1.852KM/Hunsignedcharhigh[8]={""}; //高度xx.x\xxx.x\-xxxx.xunsignedcharangle[5]; //方位角unsignedcharuse_sat[3]={"--"}; //使用的衛(wèi)星數(shù)unsignedchartotal_sat[3]={"--"}; //天空中總衛(wèi)星數(shù)unsignedcharDW='-';//定位標(biāo)志V未定位A已定位unsignedchardingwei='-';//定位型式1=未定位,2=二維定位,3=三維定位。//串口中斷需要的變量unsignedcharseg_count; //逗號(hào)計(jì)數(shù)器unsignedcharbyte_count; //位數(shù)計(jì)數(shù)器unsignedcharcmd_number; //命令類(lèi)型unsignedcharmode; //0:結(jié)束模式,1:命令模式,2:數(shù)據(jù)模式unsignedcharbuf_full;//1:整句接收完成,相應(yīng)數(shù)據(jù)有效。0:緩存數(shù)據(jù)無(wú)效。unsignedcharcmd[5]; //命令類(lèi)型存儲(chǔ)數(shù)組//顯示需要的變量unsignedchardsp_count; //刷新次數(shù)計(jì)數(shù)器unsignedchartime_count;volatileunsignedcharhigh_num,speed_num;/*******************************************函數(shù)名稱(chēng):Get_Data功能:GPS報(bào)文解碼參數(shù):無(wú)返回值:無(wú)/********************************************/voidGet_Data(void){uchartmp;tmp=P3^0; switch(tmp){ case'$': cmd_number=0; //命令類(lèi)型清空 mode=1; //接收命令模式 byte_count=0; //接收位數(shù)清空 break; case',': seg_count++; //逗號(hào)計(jì)數(shù)加1 byte_count=0; break; case'*': switch(cmd_number){ case1: buf_full|=0x01;//GPGGA break; case2: buf_full|=0x02;//GPGSV break; case3: buf_full|=0x04;//GPGSA break; case4: buf_full|=0x08;//GPRMC break; } mode=0; break; default: if(mode==1){ //命令種類(lèi)判斷0:結(jié)束模式,1:命令模式,2:數(shù)據(jù)模式 cmd[byte_count]=tmp; //接收字符放入類(lèi)型緩存 if(byte_count>=4){ //如果類(lèi)型數(shù)據(jù)接收完畢,判斷類(lèi)型 if(cmd[0]=='G'){ if(cmd[1]=='P'){ if(cmd[2]=='G'){ if(cmd[3]=='G'){ if(cmd[4]=='A'){//GPGGAGPS定位信息 cmd_number=1; mode=2; seg_count=0; byte_count=0; high_num=0; } } elseif(cmd[3]=='S'){ if(cmd[4]=='V'){//GPGSV可見(jiàn)衛(wèi)星信息 cmd_number=2; mode=2; seg_count=0; byte_count=0; } elseif(cmd[4]=='A'){//GPGSA當(dāng)前衛(wèi)星信息 cmd_number=3; mode=2; seg_count=0; byte_count=0; } } } elseif(cmd[2]=='R'){//GPRMC推薦定位信息 if(cmd[3]=='M'){ if(cmd[4]=='C'){ cmd_number=4; mode=2; seg_count=0; byte_count=0; speed_num=0; } } } } } } } elseif(mode==2){ //接收數(shù)據(jù)處理 switch(cmd_number){/********************************************************************$GPGGA,121252.000,3937.3032,N,11611.6046,E,1,05,2.0,45.9,M,-5.7,M,,0000*77<1>UTC時(shí)間,hhmmss(時(shí)分秒)格式<2>緯度ddmm.mmmm(度分)格式(前面的0也將被傳輸)<3>緯度半球N(北半球)或S(南半球)<4>經(jīng)度dddmm.mmmm(度分)格式(前面的0也將被傳輸)<5>經(jīng)度半球E(東經(jīng))或W(西經(jīng))<6>GPS狀態(tài):0=未定位,1=非差分定位,2=差分定位,6=正在估算<7>正在使用解算位置的衛(wèi)星數(shù)量(00~12)(前面的0也將被傳輸)<8>HDOP水平精度因子(0.5~99.9)<9>海拔高度(-9999.9~99999.9)<10>地球橢球面相對(duì)大地水準(zhǔn)面的高度<11>差分時(shí)間(從最近一次接收到差分信號(hào)開(kāi)始的秒數(shù),如果不是差分定位將為空)<12>差分站ID號(hào)0000~1023(前面的0也將被傳輸,如果不是差分定位將為空)********************************************************************/ case1: //類(lèi)型1數(shù)據(jù)接收。GPGGA switch(seg_count){ case2: //緯度處理 if(byte_count<9){ WD[byte_count]=tmp; } break; case3: //緯度方向處理 if(byte_count<1){ WD_a=tmp; } break; case4: //經(jīng)度處理 if(byte_count<10){ JD[byte_count]=tmp; } break; case5: //經(jīng)度方向處理 if(byte_count<1){ JD_a=tmp; } break; case7: //定位使用的衛(wèi)星數(shù) if(byte_count<2){ use_sat[byte_count]=tmp; } break; case9: //高度處理 if(byte_count<6){ high[byte_count]=tmp; high_num++; } break; } break; /********************************************************************$GPGSV,3,1,12,16,65,013,43,06,48,143,,03,42,167,,23,39,323,49*741)天空中收到訊號(hào)的衛(wèi)星總數(shù)。2)定位的衛(wèi)星總數(shù)。3)天空中的衛(wèi)星總數(shù),00至12。4)衛(wèi)星編號(hào),01至32。5)衛(wèi)星仰角,OO至90度。6)衛(wèi)星方位角,OOO至359度。實(shí)際值。7)訊號(hào)噪聲比(C/No),00至99dB;無(wú)表未接收到訊號(hào)。8)Checksum.(檢查位).*******************************************************************\ case2: //類(lèi)型2數(shù)據(jù)接收。GPGSV switch(seg_count){ case3: //天空中的衛(wèi)星總數(shù) if(byte_count<2){ total_sat[byte_count]=tmp; } break; } break;/********************************************************************$GPGSA,A,3,14,15,05,22,18,26,,,,,,,2.1,1.2,1.7*3D$GPGSA,<1>,<2>,<3>,<3>,,,,,<3>,<3>,<3>,<4>,<5>,<6>,<7><CR><LF>$GPGSA,A,3,16,23,31,32,14,,,,,,,,1.53,1.20,0.95*0A<1>模式:M=手動(dòng),A=自動(dòng)。<2>定位型式1=未定位,2=二維定位,3=三維定位。<3>PRN數(shù)字:01至32表天空使用中的衛(wèi)星編號(hào),最多可接收12顆衛(wèi)星信息。<4>PDOP位置精度因子(0.5~99.9)<5>HDOP水平精度因子(0.5~99.9)<6>VDOP垂直精度因子(0.5~99.9)<7>Checksum.(檢查位). ********************************************************************* case3: //類(lèi)型2數(shù)據(jù)接收。GPGSA switch(seg_count){ case2: //定位形式 if(byte_count<1){ dingwei=tmp; } break; } break; /********************************************************************$GPRMC,050458.000,A,2459.8991,N,10242.8698,E,0.37,130.03,190808,,,A*66<1>UTC時(shí)間,hhmmss(時(shí)分秒)格式<2>定位狀態(tài),A=有效定位,V=無(wú)效定位<3>緯度ddmm.mmmm(度分)格式(前面的0也將被傳輸)<4>緯度半球N(北半球)或S(南半球)<5>經(jīng)度dddmm.mmmm(度分)格式(前面的0也將被傳輸)<6>經(jīng)度半球E(東經(jīng))或W(西經(jīng))<7>地面速率(000.0~999.9節(jié),前面的0也將被傳輸)<8>地面航向(000.0~359.9度,以真北為參考基準(zhǔn),前面的0也將被傳輸)<9>UTC日期,ddmmyy(日月年)格式<10>磁偏角(000.0~180.0度,前面的0也將被傳輸)<11>磁偏角方向,E(東)或W(西)********************************************************************/ case4: //類(lèi)型3數(shù)據(jù)接收。GPRMC switch(seg_count){case1://時(shí)間處理if(byte_count<2){//時(shí)time_s[byte_count]=tmp;break;}if(byte_count<4){//分time_f[byte_count-2]=tmp;break;}if(byte_count<6){//秒time_m[byte_count-4]=tmp;}break;case2://定位標(biāo)志if(byte_count<1){DW=tmp;}break; case7: //速度處理 if(byte_count<6){ speed[byte_count]=tmp; speed_num++; } break; case8: //方位角處理 if(byte_count<5){ angle[byte_count]=tmp; } break;case9://時(shí)間處理if(byte_count<2){//日date_d[byte_count]=tmp;break;}if(byte_count<4){//月date_m[byte_count-2]=tmp;break;}if(byte_count<6){//年date_y[byte_count-4]=tmp;break;}break; } break; }//switch(cmd_number)end }//if(mode==1)end byte_count++; //接收數(shù)位加1 break; }//switch(tmp)end}uchars_trange_t(uchardatt) //十六進(jìn)制轉(zhuǎn)十進(jìn)制{ uchardat1,dat2; dat1=datt; dat2=dat1/16; dat1=dat1%16;dat1=dat1+dat2*10; return(dat1);}uchart_trange_s(uchardatt) //十進(jìn)制轉(zhuǎn)十六進(jìn)制{ uchardat1,dat2; dat1=datt; dat2=dat1/10; dat1=dat1%10;dat1=dat1+dat2*16; return(dat1);}voiddelay(uintx) /*1ms時(shí)基*/{ uinta,b; for(a=x;a>0;a--) for(b=112;b>0;b--);}/*1602初始設(shè)置*/voidwrite_com(ucharcom) //1602寫(xiě)地址設(shè)置{ P1=com; RS=0; LCDEN=0; delay(10); LCDEN=1; delay(10); LCDEN=0; }voidwrite_date(uchardate) //1602寫(xiě)數(shù)據(jù)設(shè)置{ P1=date; RS=1; LCDEN=0; delay(10); LCDEN=1; delay(10); LCDEN=0; }/
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療器械質(zhì)量檢測(cè)服務(wù)合同
- 職場(chǎng)辦公技能培訓(xùn)教育范文
- 高考語(yǔ)文復(fù)習(xí):人物傳記類(lèi)文言文專(zhuān)練
- 電線(xiàn)電纜采購(gòu)合同書(shū)
- 法律行業(yè)律師服務(wù)費(fèi)用免責(zé)協(xié)議
- 經(jīng)典童話(huà)白雪公主的解讀與賞析
- 高考英語(yǔ)完形填空專(zhuān)題集中訓(xùn)練含參考答案(5份)
- 農(nóng)村居民公共服務(wù)需求滿(mǎn)足指導(dǎo)手冊(cè)
- 問(wèn)題解決指南
- 金融科技服務(wù)風(fēng)險(xiǎn)免責(zé)合同
- 大班語(yǔ)言活動(dòng)-海豹到哪里去了
- 小班社會(huì)《認(rèn)識(shí)家用電器》課件
- 高考概率大題必練20題(理科)-含答案
- 涼水井煤礦礦山地質(zhì)環(huán)境與土地復(fù)墾方案
- 果實(shí)酚類(lèi)和揮發(fā)性物質(zhì)含量特征及其與果實(shí)品質(zhì)關(guān)系的研究
- 2023年?yáng)|華高級(jí)中學(xué)中考自招數(shù)學(xué)復(fù)習(xí)題及答案解析
- 結(jié)果比過(guò)程重要辯論賽
- JTG C10-2007 公路勘測(cè)規(guī)范
- 工程結(jié)算審核項(xiàng)目投標(biāo)技術(shù)方案造價(jià)咨詢(xún)服務(wù)方案
- 高中英語(yǔ)2024屆新高考詞匯轉(zhuǎn)換匯總(共六組)
- 2024年廣州市高三一模高考英語(yǔ)試卷試題答案詳解(含作文范文)
評(píng)論
0/150
提交評(píng)論