汪 劍
(無錫科技職業(yè)學(xué)院,江蘇 無錫 214028)
在車站、機(jī)場(chǎng)等大型公共場(chǎng)所通常需要放置多個(gè)時(shí)鐘,以方便旅客掌握時(shí)間。原來的各個(gè)時(shí)鐘都是相互獨(dú)立的,由于時(shí)鐘存在精度誤差,如果不定期調(diào)整時(shí)鐘顯示,減少誤差。間隔一定時(shí)間后,時(shí)鐘的誤差可能達(dá)到幾分鐘,甚至幾十分鐘,這樣不但不能方便旅客,反而回引起人們的困惑,甚至影響旅客的乘車。后來人們利用RS232總線或RS422總線來調(diào)整時(shí)鐘經(jīng)度,但由于RS232和RS422的傳輸距離有限,在大型公共場(chǎng)所應(yīng)用存在一定難度?;贜TP協(xié)議,設(shè)計(jì)給予NTP協(xié)議的數(shù)字鐘,利用網(wǎng)線將各個(gè)時(shí)鐘連接到網(wǎng)絡(luò)時(shí)間服務(wù)器上,從而實(shí)現(xiàn)顯示時(shí)間的精確同步[1]。
NTP協(xié)議是Network Time Protocol的縮寫,最早由美國(guó)特拉華大學(xué)的米爾斯教授設(shè)計(jì)實(shí)現(xiàn),它是使使計(jì)算機(jī)時(shí)間同步化的一種協(xié)議,能夠提供高精準(zhǔn)度的時(shí)間校正,它是開放式系統(tǒng)互聯(lián)參考模型的高層協(xié)議,符合用戶數(shù)據(jù)報(bào)協(xié)議(UDP)傳輸協(xié)議格式,擁有專用源端口和目標(biāo)端口123[2]。采用NTP協(xié)議同步系統(tǒng)時(shí)鐘有三種工作模式。①對(duì)稱模式,兩個(gè)以上服務(wù)器互相進(jìn)行時(shí)間信息通信,雙方均可為同步對(duì)象或者被對(duì)方同步;②廣播模式,此種工作模式適用于局域網(wǎng)內(nèi)部,服務(wù)器在固定周期向客戶機(jī)主動(dòng)發(fā)出時(shí)間信息,客戶機(jī)根據(jù)此時(shí)間信息校正系統(tǒng)時(shí)鐘;③客戶機(jī)服務(wù)器模式,客戶機(jī)定時(shí)向授時(shí)服務(wù)器請(qǐng)求時(shí)間信息,根據(jù)雙方交換的時(shí)間信息,實(shí)現(xiàn)客戶機(jī)與授時(shí)服務(wù)器時(shí)鐘的同步。一個(gè)基本的NTP包包括NTP頭和四個(gè)時(shí)間戳共48字節(jié),其中NTP頭占16字節(jié),每個(gè)時(shí)間戳8字節(jié)。NTP協(xié)議結(jié)構(gòu)如圖1所示。
模式字段定義如下:0-預(yù)留;1-對(duì)稱行為;3-客戶機(jī);4-服務(wù)器;5-廣播;6-NTP 控制信息。在客戶機(jī)端發(fā)送請(qǐng)求時(shí)將該位添為 3,服務(wù)器響應(yīng)該請(qǐng)求后該位被寫為4。四個(gè)時(shí)間戳分別代表客戶機(jī)收到響應(yīng)包的時(shí)間、發(fā)送請(qǐng)求包的時(shí)間、服務(wù)器接到請(qǐng)求包的時(shí)間和服務(wù)器發(fā)送響應(yīng)包的時(shí)間。利用這四個(gè)時(shí)間戳可以計(jì)算出客戶機(jī)和服務(wù)器之間的時(shí)間差,利用該時(shí)間差和服務(wù)器發(fā)送響應(yīng)包的時(shí)間戳可以計(jì)算出本地客戶機(jī)時(shí)間,修正客戶機(jī)時(shí)間,使其時(shí)間與時(shí)間服務(wù)器的時(shí)間保持一致[3]。
圖1 NTP協(xié)議結(jié)構(gòu)
電路實(shí)現(xiàn)如圖2所示,電路包括單片機(jī)、時(shí)鐘芯片、網(wǎng)絡(luò)接口、顯示驅(qū)動(dòng)和電源五個(gè)部分。由于單片機(jī)沒有網(wǎng)絡(luò)接口,為了實(shí)現(xiàn)NTP服務(wù),采用廣州致遠(yuǎn)的ZNE100T網(wǎng)絡(luò)接口模塊實(shí)現(xiàn)單片機(jī)的網(wǎng)絡(luò)接口,本地時(shí)鐘采用美信的 DS12887芯片,顯示驅(qū)動(dòng)采用奧地利微電子的8通道恒流LED驅(qū)動(dòng)芯片AS1109。
圖2 數(shù)字鐘電路原理
網(wǎng)絡(luò)接口部分利用廣州致遠(yuǎn)的嵌入式網(wǎng)絡(luò)模塊 ZNE100T來實(shí)現(xiàn),該模塊是串行到10M以太網(wǎng)絡(luò)轉(zhuǎn)換模塊,具有傳輸控制協(xié)議(TCP)服務(wù)器、傳輸控制協(xié)議客戶端、用戶數(shù)據(jù)報(bào)協(xié)議和組播等作業(yè)模式,組播地址、工作端口、目標(biāo)網(wǎng)絡(luò)互聯(lián)協(xié)議(IP)和端口均可設(shè)定,串行口波特率300~115 200 b/s)可設(shè),有23個(gè)引腳,管腳定義如表1所示,在本應(yīng)用中,為了實(shí)現(xiàn)單片機(jī)的網(wǎng)絡(luò)通信,實(shí)際上將網(wǎng)絡(luò)包轉(zhuǎn)換為串行數(shù)據(jù)格式,電路連接只需將模塊的1~4腳與RJ45的1、2、3和6腳對(duì)應(yīng)連接,串口發(fā)送和串口接收連接到單片機(jī)的串行接口,另外連接電源、地線和指示燈信號(hào)即可[4]。
時(shí)鐘芯片采用美國(guó)美信公司的 DS12887,該芯片內(nèi)含一個(gè)鋰電池,斷電情況運(yùn)行十年以上不丟失數(shù)據(jù),可以提供年、月、日、時(shí)、分、秒和星期信息,并具有直到 2099年的閏年補(bǔ)償功能。包含4個(gè)控制寄存器、10個(gè)時(shí)鐘寄存器和114個(gè)通用寄存器,DS12887出廠時(shí),其內(nèi)部晶振被關(guān)掉,以防止鋰電池在芯片裝入系統(tǒng)前被消耗。寄存器A的BIT4~BIT6為11x時(shí)打開晶振,分頻鏈不啟動(dòng),為010時(shí)打開晶振,分頻鏈啟動(dòng),500 ms后時(shí)鐘更新,BIT4~BIT6的其它組合都是使晶振關(guān)閉。本設(shè)計(jì)采用 28引腳雙列直插封裝芯片,與單片機(jī)的并行口 P0口數(shù)據(jù)通信,片選、地址選通、數(shù)據(jù)選通和讀寫控制RW與單片機(jī)的P2口連接[5-6]。
表1 ZNE100T模塊管腳
顯示驅(qū)動(dòng)主要由奧地利微電子的AS1109來實(shí)現(xiàn),AS1109通過串行方式與單片機(jī)通信,在本設(shè)計(jì)中,利用單片機(jī)的P1口與AS1109實(shí)現(xiàn)數(shù)據(jù)通信,每片AS1109可以驅(qū)動(dòng)8個(gè)LED,也就是一個(gè)七筆段數(shù)碼管,LED驅(qū)動(dòng)電流在0.5~100 mA可設(shè),驅(qū)動(dòng)電流的設(shè)定通過改變 15引腳到地之間的電阻值實(shí)現(xiàn)。AS1109可以串聯(lián),這樣不需要單片機(jī)額外增加接口就可以驅(qū)動(dòng)多個(gè)數(shù)碼管顯示時(shí)間。AS1109的最主要優(yōu)點(diǎn)是它具備故障診斷能力,能夠診斷LED的短路、開路和過溫狀態(tài),通過串行通信方式將狀態(tài)信息發(fā)送到單片機(jī)[7]。AS1109管腳如圖3所示。
圖3 AS1109管腳圖
單片機(jī)的主要工作是檢測(cè)時(shí)鐘芯片的時(shí)鐘寄存器,檢測(cè)到時(shí)間改變后,將時(shí)間送到LED顯示,同時(shí)讀回LED的狀態(tài),按設(shè)定的時(shí)間間隔定期向NTP服務(wù)器發(fā)送NTP請(qǐng)求包和LED狀態(tài),NTP的應(yīng)答包由單片機(jī)中斷處理,當(dāng)單片機(jī)響應(yīng)中斷后,由四個(gè)時(shí)間戳計(jì)算出本地時(shí)鐘時(shí)間,由于該時(shí)間為1900年1月1日0時(shí)0分0秒到現(xiàn)在時(shí)刻的時(shí)間差,因此需要將該時(shí)間轉(zhuǎn)換為年月日時(shí)分秒的形式,將該時(shí)間加1 s寫入時(shí)鐘芯片,同時(shí)根據(jù)時(shí)鐘芯片啟動(dòng)后 500 ms更新的特點(diǎn),控制時(shí)鐘芯片的更新時(shí)機(jī),這樣能夠使本地時(shí)間基本與NTP服務(wù)器的時(shí)間同步。
利用 ZNE100T嵌入式網(wǎng)絡(luò)模塊、DS12887時(shí)鐘芯片和AS1109LED驅(qū)動(dòng)芯片設(shè)計(jì)了一款基于NTP協(xié)議的數(shù)字鐘,該數(shù)字鐘定期向NTP服務(wù)器發(fā)送請(qǐng)求包,利用服務(wù)器響應(yīng)包的時(shí)間戳可以計(jì)算出本地客戶機(jī)時(shí)間,修正客戶機(jī)時(shí)間,由于采用NTP網(wǎng)絡(luò)協(xié)議,使其時(shí)間與NTP服務(wù)器的時(shí)間保持一致。走時(shí)準(zhǔn)確,工程安裝便利,同時(shí)在監(jiān)控端可以監(jiān)控到連接到該網(wǎng)絡(luò)的所有時(shí)鐘的時(shí)間狀態(tài)、各LED管腳的短路和斷路等狀態(tài),方便時(shí)鐘維護(hù)[8-10]。
[1] 湯建忠.煙草時(shí)間同步網(wǎng)絡(luò)系統(tǒng)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2008(12):142-144.
[2] 趙科佳,張愛敏,寧大愚. 基于NTP協(xié)議的網(wǎng)絡(luò)時(shí)間服務(wù)系統(tǒng)的實(shí)現(xiàn)[J].電子測(cè)試,2008(07):13-16.
[3] 汪文俊,龔育昌,朱建明. 基于UDP的局域網(wǎng)內(nèi)時(shí)鐘同步協(xié)議[J].計(jì)算機(jī)應(yīng)用與軟件,2007,24(05):133-135.
[4] 廣州致遠(yuǎn)公司.ZNE100T說明書[EB/OL]. (2007-01-01)[2009-12-04]http://. www.zlgmcu.com.
[5] MAXIM公司.DS12887說明書[EB/OL].(2006-01-01)[2009-12-04].www.maxim-ic.com.
[6] 夏學(xué)川,侯風(fēng)云. 智能節(jié)水系統(tǒng)中DSl2887的數(shù)據(jù)顯示程序設(shè)計(jì)[J].機(jī)電設(shè)備,2008,25(05):44-47.
[7] 奧地利微電子公司. AS1109說明書[EB/OL]. (2006-04-05)[2009-12-15].http://www.austriamicrosystems.com.
[8] 賈成偉,蘇淑靖,甄國(guó)涌.基于C8051F060的CAN節(jié)點(diǎn)的設(shè)計(jì)與應(yīng)用[J]. 通信技術(shù),2010,43(04):214-217.
[9] 吳新民.基于3G網(wǎng)絡(luò)安全系統(tǒng)的入侵檢測(cè)研究[J].通信技術(shù),2010,43(08):98-100.
[10] 尚海,周淵平,莫武中.一種新型的位同步電路的設(shè)計(jì)與硬件實(shí)現(xiàn)[J].通信技術(shù),2010,42(04):40-42.