功能特點
DS12887是美國達拉斯半導(dǎo)體公司最新推出的時鐘芯片,采用CMOS技術(shù)制成,把時鐘芯片所需的晶振和外部鋰電池相關(guān)電路集于芯片內(nèi)部,同時它與目前 IBM AT計算機常用的時鐘芯片MC146818B和DS1287管腳兼容,可直接替換。采用DS12887芯片設(shè)計的時鐘電路勿需任何外圍電路并具有良好的微機接口。DS12887芯片具有微軾耗、外圍接口簡單、精度高、工作穩(wěn)定可靠等優(yōu)點,可廣泛用于各種需要較高精度的實時時鐘場合中。其主要功能如下:
(1)內(nèi)含一個鋰電池,斷電情況運行十年以上不丟失數(shù)據(jù)。
(2)計秒、分、時、天、星期、日、月、年,并有閏年補償功能。
(3)二進制數(shù)碼或BCD碼表示時間、日歷和定鬧。
(4)12小時或24小時制,12小時時鐘模式帶有PWM和AM指導(dǎo),有夏令時功能。
(5)MOTOROLA5和INATAEL總線時序選擇。
(6)有128個RAM單元與軟件音響器,其中14個作為字節(jié)時鐘和控制寄存器,114字節(jié)為通用RAM,所有ARAM單元數(shù)據(jù)都具有掉電保護功能。
(中斷信號輸出(IRQ)和總線兼容,定鬧中斷、周期性中斷、時鐘更新周期結(jié)束中斷可分別由軟件屏蔽,也可分別進行測試。
DS12887的原理及管腳說明
DS12887內(nèi)部原理如圖1所示,由振蕩電路、分頻電路、周期中斷/方波選擇電路、14字節(jié)時鐘和控制單元、114字節(jié)用戶非易失RAM、十進制/二進制計加器、總線接口電路、電源開關(guān)寫保護單元和內(nèi)部鋰電池等部分組成。
GND,VCC:直流電源+5V電壓。當(dāng)5V電壓在正常范圍內(nèi)時,數(shù)據(jù)可讀寫;當(dāng)VCC低于4.25V,讀寫被禁止,計時功能仍繼續(xù);當(dāng)VCC下降到3V以下時,RAM和計時器被切換到內(nèi)部鋰電池。
MOT(模式選擇):MOT管腳接到VCC時,選擇MOTOROLA時序,當(dāng)接到GND時,選擇INTEL時序。
SQW(方波信號同):SQW管腳能從實時時鐘內(nèi)部15級分頻器的13個抽頭中選擇一個作為輸出信號,其輸出頻率可通過對寄存器A編程改變。
AD0~AD7(雙向地址/數(shù)據(jù)復(fù)用線):總線接口,可與MOTOROLA微機系列和INTEL微機系列接口。
AS(地址選通輸入):用于實現(xiàn)信號分離,在AD/ALE的下降沿把地址鎖入DS12887。
DS(數(shù)據(jù)選通或讀輸入):DS/RD客腳有兩種操作模式,取決于MOT管腳的電平,當(dāng)使用MOTOROLA時序時,DS是一正脈沖,出現(xiàn)在總線周期的后段,稱為數(shù)據(jù)選通;在讀周期,DS指示DS12887驅(qū)動雙向總的時刻,在寫周期,DS的后沿使DS12887鎖存寫數(shù)據(jù)。選擇INTEL時序時,DS稱作(RD),RD與典型存貯器的允許信號(OE)的定義相同。
R/W(讀/寫輸入):R/W管腳也有兩種操作模式。選MOTOROLA時序時,R/W是一電平信號,指示當(dāng)前周期是讀或?qū)懼芷冢珼SO為高電平時,R/W高電平指示讀周期,R/W低電平指示寫周期;選INTEL時序,R/W信號是一低電平信號,稱為WR。在此模式下,R/W管腳與通用RAM的寫允許信號(WE)的含義相同。
CS(片選輸入):在訪問DS12887的總線周期內(nèi),片選信號必須保持為低。
IRQ(中斷申請輸入):低電平有效,可作微處理的中斷輸入。沒有中斷條件滿足時,IRQ處于高阻態(tài)。IRQ線是漏極開路輸入,要求外接上接電阻。
RESET(復(fù)位輸出):當(dāng)該腳保持低電平時間大于200ms,保證DS12887有效復(fù)位。
DS12887的內(nèi)部功能
地址分配圖
DS12887的地下分配圖如圖3所示,由114字節(jié)的用戶RAM,10字節(jié)的存放實時時鐘時間。日歷和定鬧RAM及用于控制和狀態(tài)的4字節(jié)特殊寄存器組成,幾乎所有的128個字節(jié)可直接讀寫。
時間、日歷和定鬧單元
時間和日歷信息通過讀相應(yīng)的內(nèi)存字節(jié)來獲取,時間、日歷和定鬧通過寫相應(yīng)的內(nèi)存字節(jié)設(shè)置或初始化,其字節(jié)內(nèi)容可以是十進制或BCD形式。時間可選擇12小時制或24小時制,當(dāng)選擇12小時制時,小時字節(jié)搞位為邏輯“1”代表PM。時間、日歷和定鬧字節(jié)是雙緩沖的,總是可訪問的。每秒鐘這10個字節(jié)走時1 秒,檢查一次定鬧條件,如在更新時,讀時間和日歷可能引起錯誤。三個字節(jié)的定鬧字節(jié)有兩種使用方法。第一種,當(dāng)定鬧時間寫入相應(yīng)時、分、秒定鬧單元,在定允許鬧位置高的條件下,定鬧中斷每天準(zhǔn)時起動一次。第二種,在三個定鬧字節(jié)中插入一個或多個不關(guān)心碼。不關(guān)心碼是任意從C到FF的16進制數(shù)。當(dāng)小時字節(jié)的不關(guān)心碼位置位時,定鬧為小時發(fā)生一次由于相線小時和分鐘定鬧字節(jié)置不關(guān)心位時,每分鐘定鬧一次;當(dāng)三個字節(jié)都置不關(guān)心位時,每秒中斷一次。
非易失RAM
在DS12887中,114字節(jié)通用非易失RAM不專用于任何特殊功能,它們可被處理器程序用作非易失內(nèi)存,。在更新周期也可訪問。
中斷
RTC實時時鐘加RAM向處理器提供三個獨立的、自動的中斷源。定鬧中斷的發(fā)生率可編程,從每秒一次到每天一次,周期性中斷的發(fā)生率可從500ms到 122μs選擇。更新結(jié)束中斷用于向程序指示一個更新周期完成。中斷控制和狀態(tài)位在寄存器B和C中,本文的其它部分將詳細(xì)描述每個中斷發(fā)生條件。
晶振控制位
DS12887出廠時,其內(nèi)部晶振被關(guān)掉,以防止鋰電池在芯片裝入系統(tǒng)前被消耗。寄存器A的BIT4~BIT6為010時打開晶振,分頻鏈復(fù)位,BIT4~BIT6的其它組合都是使晶振關(guān)閉。
方波輸出選擇
如圖1原理圖所示,15級分步抽著中的13個可用于15選1選擇器,選擇分頻器抽頭的目的是在SQW管腳產(chǎn)生一個方波信號,其頻率由寄存器A的 RS0~RS3位設(shè)置。SQW頻率選擇與周期中斷發(fā)生器共離15選1選擇器,一旦頻率選擇好,通過用程序控制方波輸出允許位SWQE來控制SQW管腳輸出的開關(guān)。
周期中斷選擇
周期中斷可在IRQ腳產(chǎn)生500ms一次到每122μs一次的中斷,中斷頻率同樣由寄存A確定,它的控制位為寄存器B中的PIE位。
更新周期
DS12887每秒執(zhí)行一次更新周期還比較每一定鬧字節(jié)與相應(yīng)的時間字節(jié),如果匹配枵三個字節(jié)都是不關(guān)心碼,則產(chǎn)生一次定鬧中斷。
ds12887應(yīng)用設(shè)計
硬件接口電路
DS12887時鐘芯片和80C31單微機的接口電路如圖4所示。模式選擇腳MOT拉地,選擇不NTEL時序,選擇DS12887時鐘芯片的地址總線及 AS端口和80C31單片微機的P0及ALE端直接相聯(lián);而DS、R/W讀寫控制線與單片機的RD、WAR控制線相連;DS12887的高位地址由 80C31半日片機的P2.7端口來片選,則DS12887的高8位地址定為7FH,而其低8俠地址則由芯片內(nèi)部各單元的地址來決定(00H~3FH); DS12887的中斷輸出端IRQ和80C的外部INT0端相聯(lián),給單片機提供中斷信號;DS12887的SQW端口可編程產(chǎn)生方波輸出信號。
接口軟件
下面為DS12887時鐘芯片和80C31單片機的接口軟件,假定采用每天24小時制的非夏令時,時間數(shù)據(jù)格式為BCD碼,初始化時間為1996年1月1 日9時00分00秒,1k方波輸出。時鐘芯片每一秒種向單片機申請中斷一次,一方面讓單片機修改一次時鐘顯示,另一方面也給單片微機系統(tǒng)提供時間基準(zhǔn)。
(1)DS12887時鐘芯片的初始化寫入程序
MOV DPTR,#7F0AH;寄存器A地址
MOV A,#70H:DV2~DV0=111,分頻復(fù)位
MOVX @ DPTR,AA
INC DPTR:到寄存器B地址
MOV A,#8AH:停止更新,允許更新中斷,選BCD碼,24小時制
MOVX @DPRT,A
MOV DPL,#00H,秒單元地址
CLR A:00秒
MOVX @DPTR,A
MOV DPL,#02H;分單元地址
CLR A:00分
MOVX @DPTR,A
MOV DPL,#04H;時單元地址
MOV A,#09H;9時
MOVX @DPTR,A
MOV DPL#07H;日單元地址
MOV A,@01H:1日
MOVX @DPTR,A
INC DPTR:到月單元地址
MOV A,#01H;1月
MOVX @DPTR,A
IC DPTR:到年單元地址
MOV A,#96H;1996年
MOVX @DPTR,A
INC DPTR;到寄存器A地址
MOV A,#26H;DV2~DV0=010 RS3~RS0=0110
MOVX @DPTR,A:選周期中斷率為976.5625μs,允許方波輸出,頻率1kHz
INC DPTR:到寄存器B
MOV A,#1AH;每秒更新一次,允許方波輸出,24小時制
MOVX @DPTR,A:時鐘開始運行
(2)讀取DS12887時鐘日歷數(shù)據(jù)程序
DS12887的日歷時鐘通常有中斷和查詢兩種方法讀出。但在讀數(shù)據(jù)時,首先要判斷數(shù)據(jù)是否更新結(jié)束,只有在數(shù)據(jù)更新結(jié)束時數(shù)據(jù)讀出才有效。
①采用查詢法讀取數(shù)據(jù):
查詢寄存器A的UIP位,當(dāng)UIP=0時,數(shù)據(jù)更新結(jié)束,可以讀出。以下是采用查詢方法,從秒至年單元的數(shù)據(jù)讀出后存入80C31內(nèi)部RAM的30~35H單元中,該部分程序如下:
MOV DPTR,#7F0AH;寄存器A地址
MOVX A,@DPTR
WAIT:JB ACC,7,WAIT:UIP=1則等待更新完畢
MOV DPL,@00H;秒地址
MOV R0,#30H;取目標(biāo)首地址
MOVX A,@DPTR;取秒數(shù)據(jù)
MOV @R0,A:送入80C31的內(nèi)部RAM緩沖區(qū)
IC DPTR:移指針
IC R0;
②采用中斷法讀取數(shù)據(jù)
當(dāng)DS12887發(fā)出中斷請示,單片微機可以響應(yīng)中斷而讀取日歷數(shù)據(jù)。對于更新結(jié)束中斷,中斷時更新結(jié)束,數(shù)據(jù)有效,可以直接讀取日歷數(shù)據(jù);對于鬧鐘中斷和周期中斷也需查詢寄存器A的UIP位,當(dāng)UIP=0時,數(shù)據(jù)更新結(jié)束,再讀出日歷時鐘,具體指令這里不再列出。
評論