<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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


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


          }

          4.3 后背電容器的使用

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

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

          結(jié)合以上方程整理后得后備供電時間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封裝)、低功耗、低成本的實時時鐘芯片,集時鐘、日歷、RAM、電源故障檢測、報警功能由于一身,硬件結(jié)構(gòu)簡單、編成簡便、精度高,在多功能電表、HVAC設(shè)備、音頻/視頻元件、尋呼機/PDA、家用電器及其它工業(yè)/醫(yī)療/汽車電子產(chǎn)品中都有十分廣泛的應(yīng)用前景。

          參考文獻

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

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

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

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

          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();