一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

討論一款老掉牙的實(shí)時(shí)時(shí)鐘芯片DS1302

冬至子 ? 來(lái)源:電子制作站 ? 作者:jackie long ? 2023-06-13 15:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

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

圖片

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

然而實(shí)際上,這9個(gè)寄存器地址的確是 0x0 ~0x8 ,并且讀寫的也確實(shí)是同一個(gè)地址的數(shù)據(jù),只不過數(shù)據(jù)手冊(cè)在標(biāo)記這些地址時(shí),把發(fā)送串行數(shù)據(jù)中的其它一些位也考慮進(jìn)來(lái)了。我們來(lái)看看如何往DS1302中寫入一個(gè)字節(jié)的數(shù)據(jù),相應(yīng)的時(shí)序如下圖所示:

圖片

可以看到,單個(gè)字節(jié)數(shù)據(jù)寫入到DS1302需要兩個(gè)字節(jié),前一個(gè)字節(jié)用來(lái)確定寫數(shù)據(jù)的目的地址。后一個(gè)字節(jié)就是需要寫入的數(shù)據(jù)。請(qǐng)注意: 兩個(gè)字節(jié)都是以低位先行的方式發(fā)送 ,正常情況下確定地址的前一個(gè)字節(jié)如下圖所示

圖片

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

如果你往RTC寫入數(shù)據(jù),第7位總是1,第6位與第0位總是0,所以寫的地址總是偶數(shù),讀的地址總是奇數(shù)。是不是閑得“淡”疼呢?還真不是,因?yàn)閺谋举|(zhì)上來(lái)講,讀寫信號(hào)以及訪問區(qū)域(RAM/CK)選擇位也可以算是地址線。例如,以前討論的HD44780有一個(gè)RS引腳表示寫入的是數(shù)據(jù)還是指令,但是你也可以認(rèn)為它是一條地址線,它決定你將代碼寫入數(shù)據(jù)寄存器還是指令寄存器。

好吧!地址的事情已經(jīng)談妥了,咱們來(lái)一一介紹DS1302內(nèi)部與時(shí)間有關(guān)的寄存器:

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

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

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

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

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

(6 )【地址0x8A 】星期寄存器(Day :星期的范圍是1~7,所以用BIT2~BIT0表示即可??赡苡行┤嗽谙耄簽槭裁葱瞧跀?shù)用Day而不用Week之類的呢?我還以為是天數(shù)呢!因?yàn)橛⑽牡男瞧?~7都是以Day結(jié)尾,例如,Monday,Sunday, Friday等等。英文詢問今天星期幾即“What day is today?”

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

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

(9 )【地址0x90 】充電寄存器 :與時(shí)間計(jì)數(shù)無(wú)關(guān),咱們最后討論。

我們使用VisualCom軟件平臺(tái)來(lái)仿真一下,相應(yīng)的仿真效果如下圖所示:

圖片

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

圖片

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

圖片

首先我們解除了寫保護(hù)。因?yàn)闊o(wú)論你寫什么、往哪里寫,寫保護(hù)都需要解除(將WP位清零),所以需要寫入的數(shù)據(jù)為“ 0b10001110_0000000 (0x8E00 ”,如下圖所示

圖片

寫保護(hù)解鎖后,咱們就可以為所欲為了,在依次寫入年份、星期、月份、日期、小時(shí)、分鐘后,我們才設(shè)置了 秒鐘 ,也就同時(shí)啟動(dòng)了芯片的計(jì)數(shù),簡(jiǎn)單吧!

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

圖片

圖中RTC_VDD是RTC單元的供電電源,電路系統(tǒng)上電后VCC是有電的,同時(shí)也給RTC單元供電,斷電后則由電池供電,兩個(gè)二極管可以防止VCC與電池之間出現(xiàn)漏電狀態(tài)。

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

圖片

如果電池是可充電型的,當(dāng)VCC2主電源有供電時(shí),我們就可以使用充電寄存器來(lái)控制充電參數(shù),我們來(lái)看看VCC2與VCC1之間的內(nèi)部電路,如下圖所示:

圖片

可以看到,VCC2與VCC1之間有三級(jí)開關(guān),TCS3~TCS0控制主電源是否往輔助電源供電,DS1~DS0控制串聯(lián)的二極管個(gè)數(shù),ROUT1~ROUT0控制串聯(lián)的電阻值,數(shù)據(jù)手冊(cè)有下表所示的功能表:

圖片

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6067

    文章

    44992

    瀏覽量

    650460
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1392

    瀏覽量

    117526
  • 時(shí)鐘芯片
    +關(guān)注

    關(guān)注

    2

    文章

    271

    瀏覽量

    40810
  • DS1302
    +關(guān)注

    關(guān)注

    8

    文章

    451

    瀏覽量

    51895
  • RTC
    RTC
    +關(guān)注

    關(guān)注

    2

    文章

    622

    瀏覽量

    68862
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    實(shí)時(shí)時(shí)鐘芯片DS1302應(yīng)用

    時(shí)鐘程序 完整內(nèi)容下載: 實(shí)時(shí)時(shí)鐘芯片DS1302應(yīng)用.docx
    發(fā)表于 07-05 10:09

    實(shí)時(shí)時(shí)鐘芯片DS1302有哪些性能

    實(shí)時(shí)時(shí)鐘 DS1302、實(shí)時(shí)時(shí)鐘芯片DS13021、DS1
    發(fā)表于 12-10 08:01

    DS1302實(shí)時(shí)時(shí)鐘芯片介紹

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

    DS1302實(shí)時(shí)時(shí)鐘芯片介紹

    文章目錄實(shí)時(shí)時(shí)鐘芯片 DS1302 介紹DS1302 的特點(diǎn)實(shí)時(shí)時(shí)鐘芯片
    發(fā)表于 02-18 07:57

    實(shí)時(shí)時(shí)鐘芯片DS1302應(yīng)用資料

    子函數(shù)供讀者調(diào)用。本章最后通過個(gè)具體的實(shí)例,講解了如何使用51系列單片機(jī)來(lái)操作實(shí)時(shí)時(shí)鐘芯片DS1302。
    發(fā)表于 09-26 08:27

    實(shí)時(shí)時(shí)鐘DS1302程序列子

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

    實(shí)時(shí)時(shí)鐘電路DS1302的原理及應(yīng)用

    實(shí)時(shí)時(shí)鐘電路DS1302的原理及應(yīng)用 現(xiàn)在流行的串行時(shí)鐘電路很多,如DS1302、DS1307、PCF8485等。這些電路的接口簡(jiǎn)單、
    發(fā)表于 01-01 00:19 ?5847次閱讀
    <b class='flag-5'>實(shí)時(shí)時(shí)鐘</b>電路<b class='flag-5'>DS1302</b>的原理及應(yīng)用

    ds1302實(shí)時(shí)時(shí)鐘

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

    基于實(shí)時(shí)時(shí)鐘模塊 時(shí)鐘芯片DS1302

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

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

    DS1302是達(dá)拉斯公司出品的一款實(shí)時(shí)時(shí)鐘芯片。主要是針對(duì)年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償?shù)榷喾N功能。這篇文章主要就是說DS1302的到底是屬于什么接口的,同時(shí)分析詳
    發(fā)表于 10-19 14:34 ?1.5w次閱讀

    DS1302與ATMEGA48設(shè)計(jì)的實(shí)時(shí)時(shí)鐘

    DS1302是由美國(guó)DALLAS公司推出的具有涓細(xì)電流充電能力的低功耗實(shí)時(shí)時(shí)鐘芯片。
    的頭像 發(fā)表于 02-15 17:02 ?5332次閱讀
    <b class='flag-5'>DS1302</b>與ATMEGA48設(shè)計(jì)的<b class='flag-5'>實(shí)時(shí)時(shí)鐘</b>

    實(shí)時(shí)時(shí)鐘芯片DS1302在DSP嵌入式系統(tǒng)中的應(yīng)用總結(jié)

    實(shí)時(shí)時(shí)鐘芯片DS1302在DSP嵌入式系統(tǒng)中的應(yīng)用總結(jié)(嵌入式開發(fā)設(shè)計(jì)小游戲)-該文檔為實(shí)時(shí)時(shí)鐘芯片DS
    發(fā)表于 07-30 11:31 ?6次下載
    <b class='flag-5'>實(shí)時(shí)時(shí)鐘</b><b class='flag-5'>芯片</b><b class='flag-5'>DS1302</b>在DSP嵌入式系統(tǒng)中的應(yīng)用總結(jié)

    實(shí)時(shí)時(shí)鐘芯片 DS1302 介紹

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

    實(shí)時(shí)時(shí)鐘DS1302開源項(xiàng)目

    電子發(fā)燒友網(wǎng)站提供《實(shí)時(shí)時(shí)鐘DS1302開源項(xiàng)目.zip》資料免費(fèi)下載
    發(fā)表于 07-29 11:29 ?4次下載
    <b class='flag-5'>實(shí)時(shí)時(shí)鐘</b><b class='flag-5'>DS1302</b>開源項(xiàng)目

    基于單片機(jī)的DS1302實(shí)時(shí)時(shí)鐘實(shí)驗(yàn) 實(shí)時(shí)時(shí)鐘芯片DS1302的工作原理

    在許多系統(tǒng)當(dāng)中都需要精確的時(shí)鐘功能,因此時(shí)鐘芯片孕育而生。其中美國(guó)達(dá)拉斯 DALLAS 公司設(shè)計(jì)的 DS1302一款非常流行的數(shù)字
    的頭像 發(fā)表于 07-27 18:27 ?8700次閱讀
    基于單片機(jī)的<b class='flag-5'>DS1302</b><b class='flag-5'>實(shí)時(shí)時(shí)鐘</b>實(shí)驗(yàn) <b class='flag-5'>實(shí)時(shí)時(shí)鐘</b><b class='flag-5'>芯片</b><b class='flag-5'>DS1302</b>的工作原理