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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于AT89C52單片機(jī)的日歷時鐘模塊設(shè)計(jì)

          基于AT89C52單片機(jī)的日歷時鐘模塊設(shè)計(jì)

          作者: 時間:2011-11-09 來源:網(wǎng)絡(luò) 收藏

          基于AT89C52單片機(jī)的日歷時鐘模塊設(shè)計(jì)



          3 系統(tǒng)軟件設(shè)計(jì)
          3.1 主程序

          主程序主要包括:系統(tǒng)初始化、獲取串口數(shù)據(jù)、設(shè)置芯片、獲取時鐘芯片的時間信息和時鐘校正、顯示等子程序。初始化子程序主要包括設(shè)置單片機(jī)的串口和定時器的初始化,芯片初始參數(shù)和驅(qū)動芯片的初始化等。主程序流程圖如圖3所示。

          基于AT89C52單片機(jī)的日歷時鐘模塊設(shè)計(jì)


          3.2 設(shè)置子程序
          在使用DS12887時,首先要初始化,主要是打開晶振、對控制寄存器A、B寫入控制字以及對日歷、時鐘各寄存器寫入初始值。除校時外,上電時不用再次初始化。第一次初始化時,應(yīng)禁止操作DS12887內(nèi)部更新周期,即先將寄存器B的SET位置“1”,然后初始化時標(biāo)寄存器(00H~09H)和狀態(tài)寄存器A,再通過讀寄存器C清除中斷標(biāo)志,讀寄存器D將VRT位置“1”,最后將寄存器B的SET位清零,DS12887開始計(jì)時。
          設(shè)置日歷時鐘,必須保證時鐘芯片DS12887處于設(shè)置狀態(tài),即SET=1,然后向DS12887的專用寄存器寫入時間信息,寫入完畢后,DS12887恢復(fù)正常數(shù)據(jù)更新狀態(tài),即SET=0。在讀取日歷時鐘芯片DS12887的時鐘信息時,必須保證UIP=0,然后讀取存儲其內(nèi)部寄存器的時鐘信息。
          為了能夠方便地顯示時間和校正時鐘,可在單片機(jī)中的用戶寄存器中開辟特殊的時間地址單元作為顯示緩沖區(qū),分別放置“年,月,日,時,分,秒”等值。此時只要將DS12887中的時間值讀入到用戶開辟的時間地址中,用戶就可以方便控制時間。
          DS12887的日歷時鐘通過中斷和查詢2種方法讀出。但在讀數(shù)據(jù)時,首先要判斷數(shù)據(jù)是否更新結(jié)束,只有在數(shù)據(jù)更新結(jié)束時數(shù)據(jù)讀出才有效。DS12887的時間讀取和時鐘校正子程序流程圖如圖4所示。

          基于AT89C52單片機(jī)的日歷時鐘模塊設(shè)計(jì)



          4 結(jié)束語
          以日歷時鐘芯片DS12887為例,介紹了一種該器件與單片機(jī)的簡單實(shí)用的硬件接口電路,該電路設(shè)計(jì)簡單可靠,性能穩(wěn)定,適用于那些對計(jì)時精度要求較高的系統(tǒng),例如在列車制動電子控制單元中,應(yīng)用DS12887提供準(zhǔn)確的時間來保存數(shù)據(jù),并安裝在制動控制裝置內(nèi),對列車制動和防滑控制。記錄、捕捉故障出現(xiàn)時間及了解故障發(fā)生時間前后信號變化的情況,并通過列車總線將故障信息傳送給監(jiān)控裝置,以便列車司機(jī)及時地采取相應(yīng)措施,這些對保障列車安全可靠運(yùn)行有著重要意義。


          上一頁 1 2 下一頁

          關(guān)鍵詞: AT89C52 日歷時鐘

          評論


          相關(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); })();