一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲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)不再提示

如何在樹莓派Pico上編程使用DS1302時(shí)鐘模塊?

jf_zGNBEhbi ? 來(lái)源:趣無(wú)盡 ? 2023-11-28 09:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

常用的計(jì)時(shí)時(shí)鐘芯片有 DS1302、DS1307、DS3231,各型號(hào)還有衍生型號(hào)。都是 Dallas 生產(chǎn)的芯片。其中 DS1302 和 DS1307 可以看成是同一芯片的不同協(xié)議版本(I2C 和 SPI)。他們?cè)?a href="http://www.www27dydycom.cn/v/tag/481/" target="_blank">樹莓派 Pico 上的用法幾乎一致,下面將簡(jiǎn)單介紹 DS1302 的用法。

硬件連接

時(shí)鐘模塊的 VCC 引腳接 Pico 的 VSYS。
時(shí)鐘模塊的 GND 引腳接 Pico 的 GND。
時(shí)鐘模塊的 CLK 引腳接 Pico 的 GP21。
時(shí)鐘模塊的 DAT 引腳接 Pico 的 GP20。
時(shí)鐘模塊的 RST 引腳接 Pico 的 GP19。

編程

使用開源的 MicroPython DS1302 庫(kù),可以在這里下載源碼。也可以將下面的代碼保存在 Pico 上,命名為 DS1302.py。

from machine import Pin
 
W_SECOND      = const(0x80)
W_MINUTE      = const(0x82)
W_HOUR        = const(0x84)
W_DATE        = const(0x86)
W_MONTH       = const(0x88)
W_WEEK        = const(0x8A)
W_YEAR        = const(0x8C)
W_WP          = const(0x8E)
 
R_SECOND      = const(0x81)
R_MINUTE      = const(0x83)
R_HOUR        = const(0x85)
R_DATE        = const(0x87)
R_MONTH       = const(0x89)
R_WEEK        = const(0x8B)
R_YEAR        = const(0x8D)
 
class DS1302():
    def __init__(self,SCLK,DAT,RST):
        self.resetPin = DAT
        self.SCLK = Pin(SCLK,Pin.OUT)
        self.DAT = Pin(DAT,Pin.OUT)
        self.RST = Pin(RST,Pin.OUT)
        self.SCLK.off()
        self.RST.off()
         
    def SetTime(self,YEAR,MONTH,DAY,HOUR,MINUTE,SECOND,WEEK):
        self.WriteByte(W_WP,0x00);
        YEAR = int(YEAR/10)*16+YEAR%10
        self.WriteByte(W_YEAR,YEAR);
        MONTH = int(MONTH/10)*16+MONTH%10
        self.WriteByte(W_MONTH,MONTH);
        DAY = int(DAY/10)*16+DAY%10
        self.WriteByte(W_DATE,DAY);
        self.WriteByte(W_HOUR,HOUR);
        MINUTE = int(MINUTE/10)*16+MINUTE%10
        self.WriteByte(W_MINUTE,MINUTE);
        SECOND = int(SECOND/10)*16+SECOND%10
        self.WriteByte(W_SECOND,SECOND);
        self.WriteByte(W_WEEK,WEEK);
        self.WriteByte(W_WP,0x80);
         
    def GetTime(self):
        date = []
        Temp = self.ReadByte(R_YEAR)
        Temp = ((Temp&0xF0)>>4)*10+(Temp&0x0F)
        date.append(Temp)
        Temp = self.ReadByte(R_MONTH)
        Temp = ((Temp&0x10)>>4)*10+(Temp&0x0F)
        date.append(Temp)
        Temp = self.ReadByte(R_DATE)
        Temp = ((Temp&0x20)>>4)*10+(Temp&0x0F)
        date.append(Temp)
        Temp = self.ReadByte(R_HOUR)
        Temp = (Temp&0x1F)
        date.append(Temp)
        Temp = self.ReadByte(R_MINUTE)
        Temp = ((Temp&0x70)>>4)*10+(Temp&0x0F)
        date.append(Temp)
        Temp = self.ReadByte(R_SECOND)
        Temp = ((Temp&0x70)>>4)*10+(Temp&0x0F)
        date.append(Temp)
        Temp = self.ReadByte(R_WEEK)
        date.append(Temp)
        return date
     
    def Now(self):
        date = self.GetTime()
        Now = []
        Year = "20{0}".format(date[0])
        Now.append(Year)
        Month = "0{0}".format(date[1]) if (date[1]/10)<1 else "{0}".format(date[1])
        Now.append(Month)
        Day = "0{0}".format(date[2]) if (date[2]/10)<1 else "{0}".format(date[2])
        Now.append(Day)
        Hour = "0{0}".format(date[3]) if (date[3]/10)<1 else "{0}".format(date[3])
        Now.append(Hour)
        Minute = "0{0}".format(date[4]) if (date[4]/10)<1 else "{0}".format(date[4])
        Now.append(Minute)
        Second = "0{0}".format(date[5]) if (date[5]/10)<1 else "{0}".format(date[5])
        Now.append(Second)
        Now.append(date[6])
        return Now
 
    def WriteByte(self,Command,Data):
        self.RST.on()
        Pin(self.resetPin,Pin.OUT)
        for i in range(0,8):
            if Command&(0x01<

將下面的代碼命名為 main.py 保存在 Pico 上。首次使用,或者需要修改時(shí)鐘模塊上的時(shí)間時(shí),可以將代碼中的 ds1302.SetTime(23,11,22,18,00,00,3) 這行代碼前的注釋去除,并將參數(shù)指定為你想要的時(shí)間。SetTime 方法有 7 個(gè)參數(shù),分別是年(兩位數(shù),23 表示 2023 年)、月、日、小時(shí)(24 小時(shí)制)、分、秒、星期(1-7)。

from machine import Pin,I2C
from DS1302 import DS1302
import time
 
ds1302 = DS1302(21,20,19)
# 設(shè)置時(shí)鐘模塊的時(shí)間 2023-11-22 1800 星期三
# ds1302.SetTime(23,11,22,18,00,00,3)
 
while True:
    date = ds1302.Now()
    print("{0}-{1}-{2} {3}:{4}:{5}".format(date[0],date[1],date[2],date[3],date[4],date[5]))
    time.sleep(1)

運(yùn)行上面的代碼之后,Shell 窗口將會(huì)每一秒鐘打印一行從時(shí)鐘模塊獲取的當(dāng)前時(shí)間。






審核編輯:劉清

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

    關(guān)注

    2

    文章

    268

    瀏覽量

    40691
  • DS1302
    +關(guān)注

    關(guān)注

    8

    文章

    451

    瀏覽量

    51707
  • 時(shí)鐘模塊
    +關(guān)注

    關(guān)注

    1

    文章

    59

    瀏覽量

    14571
  • CLK
    CLK
    +關(guān)注

    關(guān)注

    0

    文章

    127

    瀏覽量

    17570
  • 樹莓派
    +關(guān)注

    關(guān)注

    121

    文章

    1977

    瀏覽量

    107194

原文標(biāo)題:在樹莓派 Pico 上編程使用 DS1302 時(shí)鐘模塊

文章出處:【微信號(hào):趣無(wú)盡,微信公眾號(hào):趣無(wú)盡】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    DS1302時(shí)鐘模塊

    DS1302時(shí)鐘模塊
    發(fā)表于 08-13 18:52

    DS1302時(shí)鐘模塊簡(jiǎn)介

    【Arduino】使用DS1302時(shí)鐘模塊搭配TM1637四位數(shù)碼管制作簡(jiǎn)易電子鐘材料準(zhǔn)備DS1302時(shí)鐘
    發(fā)表于 07-26 06:34

    實(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 ?5819次閱讀
    實(shí)時(shí)<b class='flag-5'>時(shí)鐘</b>電路<b class='flag-5'>DS1302</b>的原理及應(yīng)用

    ds1302時(shí)鐘電路

    ds1302時(shí)鐘電路
    發(fā)表于 05-17 13:17 ?8136次閱讀
    <b class='flag-5'>ds1302</b><b class='flag-5'>時(shí)鐘</b>電路

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

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

    DS1302時(shí)鐘模塊原理圖

    ds1302時(shí)鐘芯片簡(jiǎn)單介紹及其原理圖。
    發(fā)表于 04-06 16:01 ?16次下載

    基于DS1302芯片的時(shí)鐘設(shè)計(jì)

    基于DS1302芯片的時(shí)鐘設(shè)計(jì)
    發(fā)表于 03-01 12:21 ?14次下載

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

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

    DS1302時(shí)鐘芯片調(diào)試經(jīng)驗(yàn),奉上調(diào)試時(shí)鐘芯片DS1302的程序

     時(shí)鐘芯片DS1302目前得到廣泛的應(yīng)用,但是DS1302的調(diào)試還是很有難度的。這篇文章就來(lái)說(shuō)說(shuō)DS1302時(shí)鐘芯片的調(diào)試驚艷,奉上
    發(fā)表于 10-19 11:12 ?1.2w次閱讀

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

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

    微雪電子RTC 時(shí)鐘模塊 DS1302簡(jiǎn)介

    RTC 時(shí)鐘模塊 DS1302實(shí)時(shí)時(shí)鐘 SPI接口 板載紐扣電池座 支持三線或四線同步串行通信 應(yīng)用于手持設(shè)備 電子手表 鬧鐘 型號(hào) D
    的頭像 發(fā)表于 12-30 10:03 ?3729次閱讀
    微雪電子RTC <b class='flag-5'>時(shí)鐘</b><b class='flag-5'>模塊</b> <b class='flag-5'>DS1302</b>簡(jiǎn)介

    畢業(yè)設(shè)計(jì)之時(shí)鐘模塊設(shè)計(jì)DS1302

    模塊:使用的芯片是:DS1302芯片,DS1302芯片是一個(gè)自動(dòng)計(jì)時(shí)的時(shí)鐘模塊,有8個(gè)時(shí)鐘寄存
    發(fā)表于 11-15 11:51 ?4次下載
    畢業(yè)設(shè)計(jì)之<b class='flag-5'>時(shí)鐘</b><b class='flag-5'>模塊</b>設(shè)計(jì)<b class='flag-5'>DS1302</b>

    實(shí)驗(yàn)18:DS1302時(shí)鐘

    實(shí)驗(yàn)18:DS1302時(shí)鐘主程序
    發(fā)表于 01-18 09:08 ?29次下載
    實(shí)驗(yàn)18:<b class='flag-5'>DS1302</b><b class='flag-5'>時(shí)鐘</b>

    何在樹莓Pico使用紅外線接收模塊?

    樹莓 Pico 使用紅外線接收模塊(HX1838 型),我們采用開源的 pico_ir 庫(kù)
    的頭像 發(fā)表于 11-30 09:08 ?2868次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b><b class='flag-5'>上</b>使用紅外線接收<b class='flag-5'>模塊</b>?