【普中ESP32开发攻略--基于MicroPython】--第18章 DS1302实时时钟实验

(1)实验平台:普中科技ESP32开发板
(2)平台购买地址:普中ESP32开发板
(3)资料下载:普中科技-各型号产品资料下载链接


        前面章节我们已经介绍使用MicroPython的RTC模块输出日期和时间,但无法实现断电保存,因此它并不是一个优秀的电子时钟。本章我们来学习使用MicroPython控制DS1302,实现一个可断电保存的电子时钟本章分为如下几部分内容:

 

18.1 实验介绍

18.1.1 实验简介

18.1.2 实验目的

18.1.3 MicroPython函数使用

18.2 硬件设计

18.3 软件设计

18.4 实验现象


18.1 实验介绍

18.1.1 实验简介

        DS1302 是 DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和 31 字节静态 RAM,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调整。时钟操作可通过 AM/PM 指示决定采用 24 或 12 小时格式。

        1,VCC2:主电源引脚

        2,X1、X2:DS1302外部晶振引脚,通常需外接32.768K晶振

        3,GND:电源地

        4,CE:使能引脚,也是复位引脚。

        5,I/O:串行数据引脚,数据输出或者输入都从这个引脚

        6,SCLK:串行时钟引脚

        7,VCC1:备用电源

18.1.2 实验目的

        使用ESP32控制DS1302,在Shell控制台显示日期和时间。

18.1.3 MicroPython函数使用

        MicroPython固件库内并没有集成DS1302模块,因此需要我们自己实现,对于不了解DS1302底层寄存器命令和时序的用户来说,要编写出驱动是困难的。MicroPython拥有着庞大的用户群,自然DS1302模块也有开源的代码,直接拿过来使用即可,这就是使用MicroPython开发的高效之处,市面上常见的模块在网上几乎都可以找到相应的模块代码,大家一定要善于在网上搜索资源。我们已将DS1302模块驱动程序DS1302.py下载好,放入工程中。使用方法如下:

18.2 硬件设计

        本实验使用到硬件资源如下:

        (1)DS1302模块

        (2)ESP32 GPIO

        DS1302模块电路如下:

        由图可知,J10端子的CLK、IO、CE脚为DS1302控制口,可将该引脚与ESP32的GPIO连接。

        本章实验使用ESP32的IO18、19、23引脚,接线如下所示:

18.3 软件设计

        下面我们打开“\4--实验程序\1--MicroPython实验\1--基础实验\17-DS1302实时时钟实验”程序,DS1302驱动在DS1302.py中,该代码不展示,用户可打开工程查看。控制代码全部都在main.py中,代码如下:

'''
深圳市普中科技有限公司(PRECHIN 普中)
技术支持:www.prechin.net
PRECHIN
 普中

实验名称:DS1302实时时钟实验
接线说明:DS1302时钟模块-->ESP32 IO
         (CE)-->(23)
         (IO)-->(19)
         (CK)-->(18)
         
实验现象:程序下载成功后,软件shell控制台间隔1S输出DS1302实时时钟年月日时分秒星期
         
注意事项:

'''

#导入Pin模块
from machine import Pin
import time
import DS1302

#定义DS1302控制对象
ds1302=DS1302.DS1302(clk=Pin(18),dio=Pin(19),cs=Pin(23))

#定义星期
week=("星期一","星期二","星期三","星期四","星期五","星期六","星期天")

#程序入口
if __name__=="__main__":
    if ds1302.DateTime()[0]!=2022:
        ds1302.DateTime([2022,8,10,2,11,3,58])
    while True:
        date_time=ds1302.DateTime()
        print("%d-%d-%d \t %02d:%02d:%02d \t %s" %(date_time[0],date_time[1],date_time[2],
                                                   date_time[4],date_time[5],date_time[6],
                                                   week[date_time[3]]))
        time.sleep(1)

18.4 实验现象

        下载程序前,按照如下接线:

        将程序下载到开发板内(可参考第2章节“2.2.5 程序下载运行”),注意:因为本实验有2个程序模块,即2个.py文件,而程序是从main.py开始运行的,其中又调用了DS1302.py内容,因此要先将该文件上载开发板中,然后可在main.py文件下点击“运行”或选择“运行当前脚本”。如下所示:

        实验现象:软件Shell控制台输出日期和时间信息,如下所示:

        注意:由于DS1302有后备电池,当系统电源断电时,DS1302依然可以走时,若不能在断电前时间继续走时,请更换纽扣电池。长时间放置,DS1302依然会消耗纽扣电池电量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值