(1)实验平台:普中科技ESP32开发板
(2)平台购买地址:普中ESP32开发板
(3)资料下载:普中科技-各型号产品资料下载链接
前面章节我们已经介绍使用MicroPython的RTC模块输出日期和时间,但无法实现断电保存,因此它并不是一个优秀的电子时钟。本章我们来学习使用MicroPython控制DS1302,实现一个可断电保存的电子时钟。本章分为如下几部分内容:
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依然会消耗纽扣电池电量。