新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 實(shí)時(shí)時(shí)鐘ISL1208原理與應(yīng)用

        實(shí)時(shí)時(shí)鐘ISL1208原理與應(yīng)用

        作者: 時(shí)間:2012-02-03 來(lái)源:網(wǎng)絡(luò) 收藏


        #include reg51.h>
        #define ISLwr 0xde /*寫辨識(shí)字節(jié)*/
        #define ISLrd 0xdf /*讀辨識(shí)字節(jié)*/
        /*--------ISL1208管腳配置---------*/
        sbit ISLSCL=P1^6; /*時(shí)鐘*/
        sbit ISLSDA=P1^7; /*數(shù)據(jù)*/
        void sdelay(); /*短延時(shí)*/
        void ISLstart(); /*I2C起始位*/
        void ISLstop(); /*I2C停止位*/
        void GetACK(); /*主機(jī)等待應(yīng)答(GACK)*/
        void OutACK(); /*主機(jī)應(yīng)答(OACK)*/
        /*--------讀/寫ISL1208函數(shù)--------*/
        unsigned char readISL1208();
        void writeISL1208(unsigned char datas);
        /*-----------讀/寫寄存器-------------*/
        void writeREG(unsigned char adds,unsigned char datas);
        unsigned char readREG(unsigned char adds);
        bit flag=0; /*啟動(dòng)時(shí)鐘報(bào)警標(biāo)志位*/
        unsigned char alarm=0; /*報(bào)警時(shí)間參數(shù)*/
        main()
        { ……………….. /*初始化*/
        for(;;) /*等待上位機(jī)發(fā)送命令*/
        { if(flag = =1)
        break; }
        /*寫狀態(tài)寄存器,寫RTC使能,報(bào)警自動(dòng)復(fù)位*/
        writeREG(0x07,0x90);
        /*寫中斷寄存器,單事件報(bào)警,中斷使能*/
        writeREG(0x08,0x60);
        /*寫報(bào)警寄存器,報(bào)警使能*/
        writeREG(0x0c,0x81);
        /*寫時(shí)鐘寄存器,啟動(dòng)RTC*/
        writeREG(0x00,0x00);
        for(;;); /*等待*/ }
        void writeREG(unsigned char adds,unsigned char datas)
        { ISLstart();
        writeISL1208(ISLwr);
        GetACK();
        writeISL1208(adds); /*寫地址*/
        GetACK();
        writeISL1208(datas); /*寫命令/數(shù)據(jù)*/
        GetACK();
        ISLstop(); }
        unsigned char readREG(unsigned char adds)
        { unsigned char reg;
        ISLstart();
        writeISL1208(ISLwr);
        GetACK();
        writeISL1208(adds); /*寫地址*/
        GetACK();
        ISLstart();
        writeISL1208(ISLrd);
        GetACK();
        reg=readISL1208(); /*讀就寄存器值*/
        OutACK();
        ISLstop();
        return (reg); }
        unsigned char readISL1208()
        { unsigned char i,k=0;
        ISLSDA=1;
        for(i=0;i8;i++)
        { ISLSCL=1;
        k=k*2;
        if(ISLSDA==1)
        k=k+1;
        ISLSCL=0; }
        return (k); }
        void writeISL1208(unsigned char datas)
        { unsigned char data i;
        ISLSCL=0;
        for(i=0;i8;i++)
        { ISLSDA=(bit)(datas0x80);
        datas=datas1;
        sdelay();
        ISLSCL=1;
        sdelay();
        ISLSCL=0; } }
        void int0() interrupt 0 using 1 /*外部中斷0處理函數(shù)*/
        { unsigned char temp=0,reg;
        /*單報(bào)警模式,5秒/次報(bào)警時(shí)間算法*/
        alarm=(alarm+5)%60;
        temp=alarm/10;
        temp=4;
        temp=(temp+alarm%10)|0x80;
        /*讀狀態(tài)寄存器清除報(bào)警標(biāo)志*/
        reg=readREG(0x07);
        /*寫報(bào)警寄存器,確定下次報(bào)警時(shí)間*/
        writeREG(0x0c,temp);


        }

        4.3 后背電容器的使用

        具體電路結(jié)構(gòu)如圖3。電容器的大小通過計(jì)算得出:若后背電容供電時(shí)間為兩個(gè)月且Vcc=5.0V,Vbat電壓從4.7V下降到1.8V(時(shí)鐘最低工作電壓)。假定二極管漏電流ILKG很小并可忽略。則電容充電/放電方程為:IBAT=CBAT*dV/dT,整理后得后備供電時(shí)間:dT=CBAT*dV/ IBAT。由于IBAT隨VBAT基本上呈線性變化,這樣IBAT可近似取兩點(diǎn)之間的平均值。IBAT與VBAT之間的典型線性關(guān)系方程式為:IBAT=1.031E-7* VBAT +1.036E-7 A

        若已給出兩點(diǎn)電壓,則平均電流IBATAVG=5.155E-8*(VBAT2+VBAT1)+1.036E-7 A

        結(jié)合以上方程整理后得后備供電時(shí)間TBACKUP=CBAT*(VBAT2 -VBAT1)/IBATAVG s

        將上述方程改寫為:CBAT=TBACKUP* IBATAVG /(VBAT2 -VBAT1)

        其中:TBACKUP=60天*86400秒/天=5.18E6 s,IBATAVG=4.387E -7 A,VBAT2=4.7V,VBAT1=1.8V.則CBAT=5.18E6* 4.387E-7 / 2.9 =0.784 F,如果要包括30%的容度,則最壞情況下的電容值應(yīng)為CBAT=1.3*0.784=1.02 F.

        5. 小結(jié)

        ISL1208是一種小巧(SOIC封裝)、低功耗、低成本的實(shí)時(shí)時(shí)鐘芯片,集時(shí)鐘、日歷、RAM、電源故障檢測(cè)、報(bào)警功能由于一身,硬件結(jié)構(gòu)簡(jiǎn)單、編成簡(jiǎn)便、精度高,在多功能電表、HVAC設(shè)備、音頻/視頻元件、尋呼機(jī)/PDA、家用電器及其它工業(yè)/醫(yī)療/汽車電子產(chǎn)品中都有十分廣泛的應(yīng)用前景。

        參考文獻(xiàn)

        1. INTERSIL I2C Real Time Clock/Calendar ISL1208 Data Sheet. October 29,2004.

        2.徐愛鈞,彭秀華. 高級(jí)語(yǔ)言C51應(yīng)用程序. 電子工業(yè)出版社,1998年6月.

        3.張道明,郝繼飛. 基于MATLAB的MCU串行通信. 信息技術(shù)與信息化,2004(5).

        分頻器相關(guān)文章:分頻器原理

        上一頁(yè) 1 2 下一頁(yè)

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 承德市| 临湘市| 卓资县| 会宁县| 磐石市| 宜阳县| 福安市| 沿河| 和田县| 易门县| 疏勒县| 海晏县| 剑河县| 蒲城县| 通许县| 屏东县| 盐边县| 清徐县| 罗平县| 公安县| 富锦市| 巨鹿县| 台中县| 贵溪市| 县级市| 河源市| 阿坝县| 东乡| 安图县| 永安市| 南雄市| 巧家县| 贡觉县| 北碚区| 苍梧县| 桑植县| 宜昌市| 体育| 杂多县| 高州市| 罗山县|