新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 一種新型的時鐘日歷芯片DS12C887

        一種新型的時鐘日歷芯片DS12C887

        作者: 時間:2011-03-15 來源:網絡 收藏

        摘要:簡要介紹了美國DALLAS公司的新型時鐘日歷芯片DS12C887的功能特性和內部控制寄存器參數,給出了DS12C887與8031的電路連接圖,同時給出了用C51編寫的初始化程序和獲取內部時間的程序。
        關鍵詞:時鐘 DS12C887

        1 器件特性

        DS12C887實時時鐘芯片功能豐富,可以用來直接代替IBM PC上的時鐘日歷芯片DS12887,同時,它的管腳也和MC146818B、DS12887相兼容。

        由于DS12C887能夠自動產生世紀、年、月、日、時、分、秒等時間信息,其內部又增加了世紀寄存器,從而利用硬件電路解決子“千年”問題; DS12C887中自帶有鋰電池,外部掉電時,其內部時間信息還能夠保持10年之久;對于一天內的時間記錄,有12小時制和24小時制兩種模式。在12小時制模式中,用AM和PM區分上午和下午;時間的表示方法也有兩種,一種用二進制數表示,一種是用BCD碼表示;DS12C887中帶有128字節 RAM,其中有11字節RAM用來存儲時間信息,4字節RAM用來存儲DS12C887的控制信息,稱為控制寄存器,113字節通用RAM使用戶使用;此外用戶還可對DS12C887進行編程以實現多種方波輸出,并可對其內部的三路中斷通過軟件進行屏蔽。

        2 引腳功能

        DS12C887的引腳排列如圖1所示,各管腳的功能說明如下:

        GND、 VCC:直流電源,其中VCC接+5V輸入,GND接地,當VCC輸入為+5V時,用戶可以訪問DS12C887內RAM中的數據,并可對其進行讀、寫操作;當VCC的輸入小于+4.25V時,禁止用戶對內部RAM進行讀、寫操作,此時用戶不能正確獲取芯片內的時間信息;當VCC的輸入小于+3V時, DS12C887會自動將電源發換到內部自帶的鋰電池上,以保證內部的電路能夠正常工作。

        MOT:模式選擇腳,DA12C887有兩種工作模式,即Motorola模式和Intel模式,當MOT接VCC時,選用的工作模式是Motorola模式,當MOT接GND時,選用的是Intel模式。本文主要討論Intel模式。

        SQW:方波輸出腳,當供電電壓VCC大于4.25V時,SQW腳可進行方波輸出,此時用戶可以通過對控制寄存器編程來得到13種方波信號的輸出。

        AD0~AD7:復用地址數據總線,該總線采用時分復用技術,在總線周期的前半部分,出現在AD0~AD7上的是地址信息,可用以選通DS12C887內的RAM,總線周期的后半部分出現在AD0~AD7上的數據信息。

        AS:地址選通輸入腳,在進行讀寫操作時,AS的上升沿將AD0~AD7上出現的地址信息鎖存到DS12C887上,而下一個下降沿清除AD0~AD7上的地址信息,不論是否有效,DS12C887都將執行該操作。

        DS/RD:數據選擇或讀輸入腳,該引腳有兩種工作模式,當MOT接VCC時,選用Motorola工作模式,在這種工作模式中,每個總線周期的后一部分的DS為高電平,被稱為數據選通。在讀操作中,DS的上升沿使DS12C887將內部數據送往總線AD0~AD7上,以供外部讀取。在寫操作中,DS的下降沿將使總線 AD0~AD7上的數據鎖存在DS12C887中;當MOT接GND時,選用Intel工作模式,在該模式中,該引腳是讀允許輸入腳,即Read Enable。

        R/W:讀/寫輸入端,該管腳也有2種工作模式,當MOT接VCC時,R/W工作在Motorola模式。此時,該引腳的作用是區分進行的是讀操作還是寫操作,當R/W為高電平時為讀操作,R/W為低電平時為寫操作;當MOT接GND時,該腳工作在Intle模式,此時該作為寫允許輸入,即Write Enable。

        CS:片選輸入,低電平有效。

        IRQ:中斷請求輸入,低電平有效,該腳有效對DS12C887內的時鐘、日歷和RAM中的內容沒有任何影響,僅對內部的控制寄存器有影響,在典型的應用中,RESET可以直接接VCC,這樣可以保證DS12C887在掉電時,其內部控制寄存器不受影響。

        在DS12C887內有11字節RAM用來存儲時間信息,4字節用來存儲控制信息,其具體垢地址及取值如表1所列。

        由表1可以看出:DS12C887內部有控制寄存器的A-B等4個控制寄存器,用戶都可以在任何時候對其進行訪問以對DS12C887進行控制操作。

        表1 DS12C887的存儲功能

        地 址功 能取值范圍十進制數取值范圍
        二進制BCD碼
        00~5900~3B00~59
        1秒鬧鈴0~5900~3B00~59
        205900~3B00~59
        3分鬧鈴0~5900~3B00~59
        412小時模式0~1201~0C AM,
        81~8C PM
        01~12AM,
        81~92PM
        24小時模式0~2300~1700~23
        5時鬧鈴,12小時制1~1201~0C AM,
        81~8C PM
        01~12AM,
        81~92PM
        時鬧鈴,24小時制0~2300~1700~23
        6星期幾(星期天=1)1~701~0701~07
        71~3101~1F01~31
        81~1201~0C01~12
        90~9900~6300~99
        10控制寄存器A   
        11控制寄存器B   
        12控制寄存器C   
        13控制寄存器D   
        50世紀0~99NA19,20

        3 應用

        在各種設備、家電、儀器、工業控制系統中,可以很容易地用DS12C887來組成時間獲取單元,以實現各種時間的獲取。圖2是用8031和 DS12C887構成的時間獲取電路圖,其中DS12C887的基地址為7F00H,相應的程序采用C51語言編寫(以Intel工作模式為例)。

        由8031單片機和DS12C887構成的時間獲取電路的初始化程序如下:

        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 結束語

        Dallas公司的時鐘日歷芯片DS12C887功能豐富,使用簡單,可能性高,是時間產生電路的良好選擇。

        (綜合電子論壇)


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 西乌| 嘉鱼县| 泉州市| 惠水县| 定兴县| 渭源县| 宜丰县| 龙陵县| 杭锦后旗| 弥勒县| SHOW| 和平区| 桐庐县| 东至县| 江山市| 上栗县| 平度市| 辽中县| 灵石县| 诏安县| 浑源县| 嘉黎县| 常宁市| 苏尼特右旗| 桓仁| 鄂州市| 三门县| 宁陕县| 濮阳市| 洮南市| 曲麻莱县| 漳浦县| 海原县| 尚志市| 九台市| 曲靖市| 北辰区| 无极县| 鸡西市| 东乌珠穆沁旗| 梅州市|