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