查看: 2125|回复: 0

37种传感器(三十二)DS1302模块+Stduino Nano&UNO

[复制链接]

53

主题

55

帖子

431

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
431
发表于 2020-7-29 14:31:35 | 显示全部楼层 |阅读模式
关键词:51stm32arduinostduino单片机stduino UNO&NanoDS1302时钟模块

说明:
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
代码:
  1. #include <Arduino.h>
  2. #include <DS1302.h>
  3. void setup()
  4. {
  5.   DS1302_Init();
  6.   Serial.begin(9600);
  7.   Serial.println("欢迎使用!");  
  8.   DS1302_GetTime(&DS1302Data);
  9.   Show_RTCC();
  10.   Serial.println("输入 "help" 获得帮助");
  11. }
  12. // 获取串口输入
  13. void Scan_Input()
  14. {
  15.   String comdata="";
  16.   while (Serial.available() > 0)  
  17.     {
  18.      comdata += char(Serial.read());
  19.      delay(2);
  20.     }
  21.    
  22.     if(comdata.length()==20 && comdata.startsWith("set"))
  23.     {
  24.       Set_Time(comdata);
  25.     }
  26.     else if(comdata=="show")
  27.     {
  28.       Serial.println("The Time Now Is:");
  29.       Show_RTCC();
  30.     }
  31.     else if(comdata=="help")
  32.     {
  33.       help();
  34.     }
  35.     else if(comdata.length()==11 && comdata.endsWith("hours"))
  36.     {
  37.       Set_HourSystem(comdata);
  38.     }
  39. }

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

  50. void loop()
  51. {
  52.   Scan_Input();
  53.   DS1302_GetTime(&DS1302Data);        //获取当前RTCC值
  54.   
  55. }
复制代码

实验效果:
打开串口显示器,显示了友好的交互界面:


32-ds1302效果图01.png

我们发现时间不对,因此在发送区输入help获取帮助。这里给出了我们需要的命令。输入“show”获取现在的时间,输入“12/24hours”修改时制,利用“set YY MM DD WEEK HH MM”可以修改为当前时间,因此我们在发送区输入“set 20 07 29 3 08 45”。
32-ds1302效果图02.png
再输入show,查看当前时间,我们可以发现,时间修改成功了!
32-ds1302效果图03.png




回复

使用道具 举报

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

本版积分规则

热门推荐

Stduino 零基础入门课程系列(五) 实验三:按键输入
Stduino 零基础入门课程系
Hello!各位同学大家好~上节课我们利用管脚输出高低电平信号,控制LED的亮灭,那么我
Stduino小白练习第六弹--按键控制串口通信
Stduino小白练习第六弹--
2020/01/08 星期三 作者:Astilbe 问题:我们如何通过按下按键来传输固定的信息给PC呢
37种传感器(二十九)MPU6050陀螺仪模块+Stduino Nano&UNO
37种传感器(二十九)MPU6
StduinoUno /纳米37种传感器(二十九)六轴 MPU陀螺仪模块关键词: 51 ; stm32 ; ar
stm32 最小系统 小蓝板 LED闪烁灯(三),无需刷Bootloader
stm32 最小系统 小蓝板 LE
关键词:stm32 小蓝板 STM32F103C8T6 Stduino IDE Stduino Nano LED闪烁灯 通过Stduin
Stduino IDE软件下载专区
Stduino IDE软件下载专区
Stduino IDE软件下载专区 Windows版:7月29号发布1.01, 现可
今天在文涛老大的帮助下我的stm32zet6终于把simlpefoc库跑起...
今天在文涛老大的帮助下我
[md]首先本身是刚刚从MDK转到arduino过来的新人,只因为要完开源的simplefoc,期间由
连接ADS1292模拟前端芯片,使用SPI库,导致串口不输出数据
连接ADS1292模拟前端芯片
[md]连接ADS1292模拟前端芯片,使用SPI库,导致串口不输出数据 ![QSJSBEZF83I8C907%$
©2001-2018  Stduino官网  Powered by©Discuz!   ( 皖ICP备17011998号 )
快速回复 返回顶部 返回列表