女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

討論一款老掉牙的實時時鐘芯片DS1302

冬至子 ? 來源:電子制作站 ? 作者:jackie long ? 2023-06-13 15:34 ? 次閱讀

今天我們來討論一款老掉牙的實時時鐘芯片 DS1302 。什么是實時時鐘(RealTime Clock, RTC)呢?為什么我們需要它呢?假設你使用單片機實現萬年歷應用,一般的做法是這樣的:設置中斷后判斷1秒是否到來,如果到來就將秒數加1,然后再考慮一些進位處理,例如,每60秒則分鐘加1,每60分則小時加1, 24小時或12小時制也要區分對待,每12個月則年加1,還要考慮閏月閏年。雖然考慮的事情好像有些多,但是在資訊非常發達的今天,從網絡上搜索出現成的代碼也絕不是難事。

當然,利用代碼來實現這些算法并不是惟一途徑,你也可以使用實時時鐘芯片來減輕編程負擔,只要我們把芯片內的年月日時分秒等參數設置為當前時間,啟動后內部會自動開始計數,理論上芯片記錄的時間將與我們的時間 實時同步 ,進位的問題也由芯片自行處理,我們只需要在必要的時候從芯片中讀取一些時間值即可,實在不要太簡單。

DS1302就是一款使用廣泛的RTC芯片,我們來看看與時間相關的寄存器有哪些,如下圖所示(DS1302內部另外還有31個字節的RAM,本文不涉及):

圖片

首先我們關注一下地址,可能不少人會想:這些地址怎么這么怪呢?你這個廠家設計芯片時就不能靠譜點嗎?地址從0x00開始連續增加會死呀?竟然還分為不同的讀寫地址,我看這個芯片設計者是閑得“淡”疼,簡單的問題復雜化!

然而實際上,這9個寄存器地址的確是 0x0 ~0x8 ,并且讀寫的也確實是同一個地址的數據,只不過數據手冊在標記這些地址時,把發送串行數據中的其它一些位也考慮進來了。我們來看看如何往DS1302中寫入一個字節的數據,相應的時序如下圖所示:

圖片

可以看到,單個字節數據寫入到DS1302需要兩個字節,前一個字節用來確定寫數據的目的地址。后一個字節就是需要寫入的數據。請注意: 兩個字節都是以低位先行的方式發送 ,正常情況下確定地址的前一個字節如下圖所示

圖片

讀寫數據時最高位(第7位)必須為1,最低位用來表示讀(RD=1)還是寫( **WR=0** )數據。我們剛剛提過,DS1302內部額外還有31個字節的RAM,可作為通用的RAM使用,第6位表示往RAM(RAM=1)還是RTC( **CK=0** )中寫入(或讀取)數據,**前面表格中標注的寫或讀地址就是把這****8** **位都考慮進來了** 。

如果你往RTC寫入數據,第7位總是1,第6位與第0位總是0,所以寫的地址總是偶數,讀的地址總是奇數。是不是閑得“淡”疼呢?還真不是,因為從本質上來講,讀寫信號以及訪問區域(RAM/CK)選擇位也可以算是地址線。例如,以前討論的HD44780有一個RS引腳表示寫入的是數據還是指令,但是你也可以認為它是一條地址線,它決定你將代碼寫入數據寄存器還是指令寄存器。

好吧!地址的事情已經談妥了,咱們來一一介紹DS1302內部與時間有關的寄存器:

(1 )【地址0x80 】秒鐘寄存器(Seconds :DS1302中RTC寄存器都是以BCD碼來保存的,也就是說,個位與十位分別占用一些位。在8位秒鐘寄存器中,BIT3~0用來保存秒鐘的個位,BIT6~4用保存秒鐘的十位,因為秒數是不可能大于5的,所以用3位已然足夠,而最高位BIT7表示時鐘掛起位( ClockHalt, CH ,當CH=1時,時鐘暫時處于掛起狀態(暫停計數),當CH=0時,計數才會開始運行。 **這個寄存器的設計還是很巧妙的** ,也就是說,只要我們往秒寄存器寫入實際的秒鐘數時,CH位都會被清零。換句話說,一般情況下,我們都會先初始化年月日時分等其它寄存器,而秒鐘寄存器留待最后設置,同時也開啟了芯片計數。

(2 )【地址0x82 】分鐘寄存器(Minutes :與秒鐘寄存器一樣,BIT3~0用來保存分鐘的 個數 ,BIT6~4用保存分鐘的 十位 ,最高位是無效的。

(3 )【地址0x84 】小時寄存器(Hour :該寄存器的低4位保存小時的個位,而小時的十位則取決于時間是24還是12小時制。BIT7=1時為12小時制,那么小時的十位不可能大于1( 1 ~12 ),它只需要一位(BIT4)表示即可,只是還多了一個BIT5用來表示下午(PM=1)還是上午(AM=0);而BIT7=0時為24小時制,十位數最大值可能為2( **0** **~23** ),所以用BIT5~BIT4表示小時的十位。

(4 )【地址0x86 】日期寄存器(Data :日期表示一個月份有多少天,其范圍為1~31,十位最大值為3,所以用BIT5~4表示十位,BIT3~0表示個位。

(5 )【地址0x88 】月份寄存器(Month :月份范圍是1~12,所以用BIT4表示十位,BIT3~0表示個位。

(6 )【地址0x8A 】星期寄存器(Day :星期的范圍是1~7,所以用BIT2~BIT0表示即可。可能有些人在想:為什么星期數用Day而不用Week之類的呢?我還以為是天數呢!因為英文的星期1~7都是以Day結尾,例如,Monday,Sunday, Friday等等。英文詢問今天星期幾即“What day is today?”

(7 )【地址0x8C 】年份寄存器(Year :DS1302的年份范圍是00~99,所以分別用高4位與低4位分別表示十位與個位。

(8 )【地址0x8E 】寫保護寄存器(Write Protect, WP : 該寄存器只有最高位有效,為1表示開啟寫保護,為0表示解除寫保護。在往RTC(或RAM)中寫入數據前,必須將該位清0。

(9 )【地址0x90 】充電寄存器 :與時間計數無關,咱們最后討論。

我們使用VisualCom軟件平臺來仿真一下,相應的仿真效果如下圖所示:

圖片

調出的DS1302器件有一個能夠方便我們觀察RTC內部狀態的屏幕,其實就是一塊能夠顯示4行20個字符的液晶顯示模組(LCM2004),從屏幕上看到信息就是從DS1302中讀取出來并寫入到LCM2004中的。當然,一些特殊的寄存器狀態還是得觀察“內存”窗口,相應的預置數據如下圖所示:

圖片

VisualCom軟件平臺中的預置數據格式均按照正常位序定義,共16位有效,高8位設置訪問地址,低8位則是寫入的數據,如下圖所示:

圖片

首先我們解除了寫保護。因為無論你寫什么、往哪里寫,寫保護都需要解除(將WP位清零),所以需要寫入的數據為“ 0b10001110_0000000 (0x8E00 ”,如下圖所示

圖片

寫保護解鎖后,咱們就可以為所欲為了,在依次寫入年份、星期、月份、日期、小時、分鐘后,我們才設置了 秒鐘 ,也就同時啟動了芯片的計數,簡單吧!

最后我們談談 充電寄存器 ,它是用來做什么的呢?有電腦使用經驗的讀者都知道,當我們將電腦徹底關機(電)后再開機,時間仍然還在繼續跑的,對不對?因為電腦的處理器也有RTC功能,當電腦處于開機時,RTC由外部電源供電,而在斷電狀態下,RTC則由主板上的電池(最常見的是鈕扣電池 CR2032 )供電。換句話說,RTC單元的供電總是不會斷開的,所以計數功能也從來沒有停止過,類似的供電電路如下圖所示:

圖片

圖中RTC_VDD是RTC單元的供電電源,電路系統上電后VCC是有電的,同時也給RTC單元供電,斷電后則由電池供電,兩個二極管可以防止VCC與電池之間出現漏電狀態。

DS1302有兩個電源供電引腳,VCC2為主電源供電(相當于上圖的 VCC ),VCC1為輔助電源供電。當VCC2沒有電源供電時,掛在VCC1引腳的電池將給RTC供電,如圖所示:

圖片

如果電池是可充電型的,當VCC2主電源有供電時,我們就可以使用充電寄存器來控制充電參數,我們來看看VCC2與VCC1之間的內部電路,如下圖所示:

圖片

可以看到,VCC2與VCC1之間有三級開關,TCS3~TCS0控制主電源是否往輔助電源供電,DS1~DS0控制串聯的二極管個數,ROUT1~ROUT0控制串聯的電阻值,數據手冊有下表所示的功能表:

圖片

如果你使用可充電電池,并且決定使用充電功能,應該通過選擇合適的二極管數量與阻值 來限制最大充電電流 。假設供電電源為5V,并且使用1個二極管與2K歐姆電阻串聯方式,則最大充電電流為IMAX=(5V-0.7V)/2K≈2.2mA。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6062

    文章

    44915

    瀏覽量

    646656
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1391

    瀏覽量

    116742
  • 時鐘芯片
    +關注

    關注

    2

    文章

    262

    瀏覽量

    40568
  • DS1302
    +關注

    關注

    8

    文章

    451

    瀏覽量

    51515
  • RTC
    RTC
    +關注

    關注

    2

    文章

    607

    瀏覽量

    68270
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    實時時鐘芯片DS1302應用

    時鐘程序 完整內容下載: 實時時鐘芯片DS1302應用.docx
    發表于 07-05 10:09

    實時時鐘芯片DS1302有哪些性能

    實時時鐘 DS1302實時時鐘芯片DS13021、DS1
    發表于 12-10 08:01

    DS1302實時時鐘芯片介紹

    DS1302電子時鐘DS1302如上圖所示,它是由美國DALLAS公司推出的具有涓細電流充電能力的低功耗實時時鐘芯片
    發表于 01-17 06:44

    DS1302實時時鐘芯片介紹

    文章目錄實時時鐘芯片 DS1302 介紹DS1302 的特點實時時鐘芯片
    發表于 02-18 07:57

    實時時鐘芯片DS1302應用資料

    子函數供讀者調用。本章最后通過個具體的實例,講解了如何使用51系列單片機來操作實時時鐘芯片DS1302
    發表于 09-26 08:27

    實時時鐘DS1302程序列子

    實時時鐘DS1302程序列子     /*********************************************************************//* 實時時鐘
    發表于 07-08 16:26 ?143次下載

    實時時鐘電路DS1302的原理及應用

    實時時鐘電路DS1302的原理及應用 現在流行的串行時鐘電路很多,如DS1302DS1307、PCF8485等。這些電路的接口簡單、
    發表于 01-01 00:19 ?5805次閱讀
    <b class='flag-5'>實時時鐘</b>電路<b class='flag-5'>DS1302</b>的原理及應用

    ds1302實時時鐘

    ds1302實時時鐘 現在流行的串行時鐘電路很多,如DS1302DS1307、PCF8485等。這些電路的接口簡單、價格低廉、使用方便,
    發表于 10-09 09:34 ?3900次閱讀
    <b class='flag-5'>ds1302</b><b class='flag-5'>實時時鐘</b>

    基于實時時鐘模塊 時鐘芯片DS1302

    基于實時時鐘模塊 時鐘芯片DS1302
    發表于 10-16 11:35 ?40次下載
    基于<b class='flag-5'>實時時鐘</b>模塊 <b class='flag-5'>時鐘</b><b class='flag-5'>芯片</b><b class='flag-5'>DS1302</b>

    ds1302是什么接口,DS1302時鐘芯片接口分析詳解

    DS1302是達拉斯公司出品的一款實時時鐘芯片。主要是針對年、月、日、周、時、分、秒進行計時,且具有閏年補償等多種功能。這篇文章主要就是說DS1302的到底是屬于什么接口的,同時分析詳
    發表于 10-19 14:34 ?1.5w次閱讀

    DS1302與ATMEGA48設計的實時時鐘

    DS1302是由美國DALLAS公司推出的具有涓細電流充電能力的低功耗實時時鐘芯片
    的頭像 發表于 02-15 17:02 ?5227次閱讀
    <b class='flag-5'>DS1302</b>與ATMEGA48設計的<b class='flag-5'>實時時鐘</b>

    實時時鐘芯片DS1302在DSP嵌入式系統中的應用總結

    實時時鐘芯片DS1302在DSP嵌入式系統中的應用總結(嵌入式開發設計小游戲)-該文檔為實時時鐘芯片DS
    發表于 07-30 11:31 ?6次下載
    <b class='flag-5'>實時時鐘</b><b class='flag-5'>芯片</b><b class='flag-5'>DS1302</b>在DSP嵌入式系統中的應用總結

    實時時鐘芯片 DS1302 介紹

    文章目錄實時時鐘芯片 DS1302 介紹DS1302 的特點實時時鐘芯片
    發表于 12-23 19:47 ?11次下載
    <b class='flag-5'>實時時鐘</b><b class='flag-5'>芯片</b> <b class='flag-5'>DS1302</b> 介紹

    實時時鐘DS1302開源項目

    電子發燒友網站提供《實時時鐘DS1302開源項目.zip》資料免費下載
    發表于 07-29 11:29 ?4次下載
    <b class='flag-5'>實時時鐘</b><b class='flag-5'>DS1302</b>開源項目

    基于單片機的DS1302實時時鐘實驗 實時時鐘芯片DS1302的工作原理

    在許多系統當中都需要精確的時鐘功能,因此時鐘芯片孕育而生。其中美國達拉斯 DALLAS 公司設計的 DS1302一款非常流行的數字
    的頭像 發表于 07-27 18:27 ?8403次閱讀
    基于單片機的<b class='flag-5'>DS1302</b><b class='flag-5'>實時時鐘</b>實驗 <b class='flag-5'>實時時鐘</b><b class='flag-5'>芯片</b><b class='flag-5'>DS1302</b>的工作原理