1 器件特性
DS12C887實時時鐘芯片功能豐富,,可以用來直接代替IBM PC上的時鐘日歷芯片DS12887,,同時,,它的管腳也和MC146818B、DS12887相兼容,。
由于DS12C887能夠自動產(chǎn)生世紀,、年、月,、日,、時、分,、秒等時間信息,,其內(nèi)部又增加了世紀寄存器,,從而利用硬件電路解決子“千年”問題; DS12C887中自帶有鋰電池,,外部掉電時,,其內(nèi)部時間信息還能夠保持10年之久;對于一天內(nèi)的時間記錄,,有12小時制和24小時制兩種模式,。在12小 時制模式中,用AM和PM區(qū)分上午和下午,;時間的表示方法也有兩種,,一種用二進制數(shù)表示,一種是用BCD碼表示,;DS12C887中帶有128字節(jié) RAM,其中有11字節(jié)RAM用來存儲時間信息,,4字節(jié)RAM用來存儲DS12C887的控制信息,,稱為控制寄存器,113字節(jié)通用RAM使用戶使用,;此 外用戶還可對DS12C887進行編程以實現(xiàn)多種方波輸出,,并可對其內(nèi)部的三路中斷通過軟件進行屏蔽。
2 引腳功能
DS12C887的引腳排列如圖1所示,,各管腳的功能說明如下:
GND,、 VCC:直流電源,其中VCC接+5V輸入,,GND接地,,當VCC輸入為+5V時,用戶可以訪問DS12C887內(nèi)RAM中的數(shù)據(jù),,并可對其進行讀,、寫操 作;當VCC的輸入小于+4.25V時,,禁止用戶對內(nèi)部RAM進行讀,、寫操作,此時用戶不能正確獲取芯片內(nèi)的時間信息,;當VCC的輸入小于+3V時,, DS12C887會自動將電源發(fā)換到內(nèi)部自帶的鋰電池上,以保證內(nèi)部的電路能夠正常工作,。
MOT:模式選擇腳,,DA12C887有兩種工作模式,即Motorola模式和Intel模式,,當MOT接VCC時,,選用的工作模式是Motorola模式,,當MOT接GND時,選用的是Intel模式,。本文主要討論Intel模式,。
SQW:方波輸出腳,當供電電壓VCC大于4.25V時,,SQW腳可進行方波輸出,,此時用戶可以通過對控制寄存器編程來得到13種方波信號的輸出。
AD0~AD7:復用地址數(shù)據(jù)總線,,該總線采用時分復用技術(shù),,在總線周期的前半部分,出現(xiàn)在AD0~AD7上的是地址信息,,可用以選通DS12C887內(nèi)的RAM,,總線周期的后半部分出現(xiàn)在AD0~AD7上的數(shù)據(jù)信息。
AS:地址選通輸入腳,,在進行讀寫操作時,,AS的上升沿將AD0~AD7上出現(xiàn)的地址信息鎖存到DS12C887上,而下一個下降沿清除AD0~AD7上的地址信息,,不論是否有效,,DS12C887都將執(zhí)行該操作。
DS/RD:數(shù)據(jù)選擇或讀輸入腳,,該引腳有兩種工作模式,,當MOT接VCC時,選用Motorola工作模式,,在這種工作模式中,,每個總線周期的后一部 分的DS為高電平,被稱為數(shù)據(jù)選通,。在讀操作中,,DS的上升沿使DS12C887將內(nèi)部數(shù)據(jù)送往總線AD0~AD7上,以供外部讀取,。在寫操作中,,DS的 下降沿將使總線 AD0~AD7上的數(shù)據(jù)鎖存在DS12C887中;當MOT接GND時,,選用Intel工作模式,,在該模式中,該引腳是讀允許輸入腳,,即Read Enable,。
R/W:讀/寫輸入端,該管腳也有2種工作模式,,當MOT 接VCC時,,R/W工作在Motorola模式,。此時,該引腳的作用是區(qū)分進行的是讀操作還是寫操作,,當R/W為高電平時為讀操作,,R/W為低電平時為寫 操作;當MOT接GND時,,該腳工作在Intle模式,,此時該作為寫允許輸入,即Write Enable,。
CS:片選輸入,,低電平有效。
IRQ:中斷請求輸入,,低電平有效,,該腳有效對DS12C887內(nèi)的時鐘、日歷和RAM中的內(nèi)容沒有任何影響,,僅對內(nèi)部的控制寄存器有影響,,在典型的應(yīng)用中,RESET可以直接接VCC,,這樣可以保證DS12C887在掉電時,其內(nèi)部控制寄存器不受影響,。
在DS12C887內(nèi)有11字節(jié)RAM用來存儲時間信息,,4字節(jié)用來存儲控制信息,其具體垢地址及取值如表1所列,。
由表1可以看出:DS12C887內(nèi)部有控制寄存器的A-B等4個控制寄存器,,用戶都可以在任何時候?qū)ζ溥M行訪問以對DS12C887進行控制操作。
表1 DS12C887的存儲功能
地? 址 功 能 取值范圍十進制數(shù) 取值范圍
二進制 BCD碼
0 秒 0~59 00~3B 00~59
1 秒鬧鈴 0~59 00~3B 00~59
2 分 059 00~3B 00~59
3 分鬧鈴 0~59 00~3B 00~59
4 12小時模式 0~12 01~0C AM,,
81~8C PM 01~12AM,,
81~92PM
24小時模式 0~23 00~17 00~23
5 時鬧鈴,12小時制 1~12 01~0C AM,,
81~8C PM 01~12AM,,
81~92PM
時鬧鈴,24小時制 0~23 00~17 00~23
6 星期幾(星期天=1) 1~7 01~07 01~07
7 日 1~31 01~1F 01~31
8 月 1~12 01~0C 01~12
9 年 0~99 00~63 00~99
10 控制寄存器A
11 控制寄存器B
12 控制寄存器C
13 控制寄存器D
50 世紀 0~99 NA 19,,20
3 應(yīng)用
在各種設(shè)備,、家電、儀器,、工業(yè)控制系統(tǒng)中,,可以很容易地用DS12C887來組成時間獲取單元,以實現(xiàn)各種時間的獲取,。圖2是用8031單片機和 DS12C887構(gòu)成的時間獲取電路圖,,其中DS12C887的基地址為7F00H,,相應(yīng)的程序采用C51語言編寫(以Intel工作模式為例)。
由8031單片機和DS12C887構(gòu)成的時間獲取電路的初始化程序如下:
XBYTE[0x7F00+0x0B]=0x82;
XBYTE[0x7F00+0x0A]=0xA0;
XBYTE[0x7F00+0x0A]=0x20;
XBYTE[0x7F00+0x0B]=0x02;
/*所有的中斷禁止,,24小時制,,BCD碼模式*/
以下均獲取時間程序:
unsigned char data t-century;
unsigned char data t-year;
unsigned char data t-month;
unsigned char data t-date;
unsigned char data t-week;
unsigned char data t-hour;
unsigned char data t-minute;
unsigned char data t-second;
if((XBYTE[7F00+0x0A]&0x80)!=0){
t-century=XBYTE[0x7F00+0x32];/*讀取世紀*/
t-year=XBYTE[Ox7F00+0x09];/*讀取年份*/
t-month=XBYTE[Ox7F00+0x08];/*讀取月份*/
t-date=XBYTE[Ox7F00+0x07];/*讀取日期*/
t-week=XBYTE[Ox7F00+0x06];/*讀取星期幾*/
t-hour=XBYTE[Ox7F00+0x04];/*讀取小時*/
t-minute=XBYTE[DS12887+0x02];/*讀取分鐘*/
t-second=XBYTE[Ox7F00+0x00];}/*讀取秒*/
4 結(jié)束語
Dallas公司的時鐘日歷芯片DS12C887功能豐富,,使用簡單,,可能性高,是時間產(chǎn)生電路的良好選擇,。