找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2043|回复: 0
收起左侧

[更好用的单片机]Stduino学习(三十二)DS1302模块

[复制链接]
ID:786043 发表于 2020-8-20 19:40 | 显示全部楼层 |阅读模式
本帖最后由 Stduino 于 2020-8-20 19:42 编辑

说明:
DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时钟电路, 它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能。且能自动对少于31天的月份日期进行调整,支持12小时制和24小时制。
32-DS1302展示图.png
工作电压为 2.5V 5.5V。其内部包含一个实时时钟/日历以及一个31字节的RAM,同时采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM 数据。
通过使用串行通信,可以简化DS1302与单片机的连接。与DS1302连接只需要三条线:
RST(复位)
I/O(数据线)
SCLK(串行时钟信号)
可以一次1字节或最多31个字节的在RAM之间传输数据。
其他引脚的说明:
VCC2:工作电源。
GND:电源接地。
VCC1:后背电源,需要3V的纽扣电池,能够在VCC2断开的时候继续供电,从而保持时钟数据。
DS1302的运行只需要非常低的能耗,维持数据与时钟信息只需要不到1微瓦的功率。其内部有多个寄存器,通过访问特定地址,我们就能对这些寄存器进行读写操作。例如访问秒寄存器,我们通过下图左一,就可以知道在这里可以引用DS1302.h,读写操作等繁琐步骤已经被封装好了。
ds1302时钟寄存器.png
实验目的:
在本例中,我们将利用DS1302库,编写一个互动式的环境,从而帮助我们读取时间、修改时间、更改12/24小时制等等。

器材:
Stduino UNO/Nano;杜邦线;DS1302模块

电路连接:
VCC -> 5V
GND -> GND
CLK -> D4
DAT -> D3
RST -> D2

代码展示:
#include <DS1302.h>
void setup()
{
  DS1302_Init();
  Serial.begin(9600);
  Serial.println("欢迎使用!");  
  DS1302_GetTime(&DS1302Data);
  Show_RTCC();
  Serial.println("输入 "help" 获得帮助");
}
// 获取串口输入
void Scan_Input()
{
  String comdata="";
  while (Serial.available() > 0)  
    {
     comdata += char(Serial.read());
     delay(2);
    }
   
    if(comdata.length()==20 && comdata.startsWith("set"))
    {
      Set_Time(comdata);
    }
    else if(comdata=="show")
    {
      Serial.println("The Time Now Is:");
      Show_RTCC();
    }
    else if(comdata=="help")
    {
      help();
    }
    else if(comdata.length()==11 && comdata.endsWith("hours"))
    {
      Set_HourSystem(comdata);
    }
}

//帮助内容
void help()
{
  Serial.println("************************************* HELP *****************************************");
  Serial.println("Type "set YY MM DD WEEK HH MM" To Set The Time!");
  Serial.println("Such As Type "set 08 08 08 1 12 00" To Set The Time As 2008-8-8 Monday 12:00");
  Serial.println("Type "show" To Display The Time Now!");
  Serial.println("Type "set 24hours" or "set 12hours" To Change The Hour System");
  Serial.println("************************************* HELP *****************************************");
}

void loop()
{
  Scan_Input();
  DS1302_GetTime(&DS1302Data);        //获取当前RTCC值
  
}


实验效果:
打开串口显示器,显示了友好的交互界面:
32-ds1302效果图01.png


Stduino IDE是一款面向32位处理器快速入门学习的集成开发平台,目前已经支持Arduino_Core_STM32框架,集聚快捷、高效、免费、开源、易得于一身,软件还集成了GDB调试功能。IDE当前支持的功能有:

    GDB调试
    封装库下载安装
    代码自动补全提示
    中英文模式
    UTF-8\GBK编码格式
    代码快速格式化
    SWD\串口程序下载&调试(已验证)
    DFU程序下载方式(待验证)
    USB HID程序下载方式(待验证)
    maple DFU程序下载方式(待验证)
    maple DFU2程序下载方式(待验证)
    MassStorage程序下载方式(待验证)

更多功能细节请点击图片上水印显示的网址进行了解

已经支持的芯片&板型列表:

    Stduino UNO&Nano
    Nucleo 144 boards
    Nucleo 64 boards
    Nucleo 32 boards
    Discovery boards
    Eval boards
    STM32MP1 series coprocessor boards
    Generic STM32F0 boards
    Generic STM32F1 boards
    Generic STM32F3 boards
    Generic STM32F4 boards
    Generic STM32H7 boards
    Generic STM32L0 boards
    3D printer boards
    LoRa boards
    Electronic Speed Controller boards
    Generic flight controllers
    Garatronics boards
    Midatronics boards

更多功能集成正在进行中~

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表