你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
stduino 发布时间:2020-8-22 17:52
37种传感器(三十二)DS1302模块+Stduino Nano&UNO* t% ?8 V3 ]0 u1 N" y* G" c
关键词:
51stm32arduinostduino单片机stduino UNO&Nano;DS1302时钟模块

$ K. b9 [  Z5 M9 X0 R1 Y
说明:
+ f% ~- W5 n8 Z
DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时钟电路, 它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能。且能自动对少于31天的月份日期进行调整,支持12小时制和24小时制。
32-DS1302展示图.png
; v6 l. t; t/ D2 l6 w4 @% I! ]

0 G6 S6 H) Z  k2 V# `4 L* |
工作电压为 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
0 a5 m  d; p+ Z: i; w6 S. h
实验目的:
在本例中,我们将利用DS1302库,编写一个互动式的环境,从而帮助我们读取时间、修改时间、更改12/24小时制等等。
9 J9 O! Y7 n- @% E
器材:
Stduino UNO/Nano;杜邦线;DS1302模块

8 N5 X3 i, q" Q% M; t. ?( G! f+ s! n
电路连接:
VCC -> 5V
GND -> GND
CLK -> D4
DAT -> D3
RST -> D2

, q& q1 b0 o. ]5 V% V- y
代码展示:
  1. <font face="Arial" size="3">#include <DS1302.h>
    6 e+ {5 ]! t) k: r
  2. void setup(): D9 ]+ o6 ?) U! ]
  3. {+ u" T  c" D# _6 n5 U/ d
  4.   DS1302_Init();
    * ~# |) B2 u! s3 F9 u' w
  5.   Serial.begin(9600);
    6 Z& {$ G8 q; u
  6.   Serial.println("欢迎使用!");  * W  f4 ?% _. b3 o) \/ ~7 H
  7.   DS1302_GetTime(&DS1302Data);( ]$ B" P# R. l8 I1 }% w. `
  8.   Show_RTCC();
    7 l4 Y, V( V. X% ^
  9.   Serial.println("输入 "help" 获得帮助");
    ) D" r8 ^% `# `9 F
  10. }! m3 [" Z; b, k; E, N$ p
  11. // 获取串口输入
    " n4 F; X3 D7 f* J4 S0 w" H* M
  12. void Scan_Input()% F7 M, Y  z- [4 V2 k& m4 H$ y3 Y
  13. {; T5 S( N3 n& x8 P
  14.   String comdata="";
    - J; s9 A  x: c- \7 c7 @
  15.   while (Serial.available() > 0)  ' h  ^7 y" |0 F, ?9 ]$ e, v- d
  16.     {" F6 F6 H# C" K4 p/ g9 E. ~
  17.      comdata += char(Serial.read());
    " Q. W0 j: _# L% U4 L0 ~5 D
  18.      delay(2);/ p' V$ W! l4 B) k! ]
  19.     }
    ; B  C) N6 G) i5 c* E* s9 N
  20.     / X  k$ N+ J4 P& H; ?
  21.     if(comdata.length()==20 && comdata.startsWith("set"))
    1 h/ s- W: ?; s; ~2 V8 s0 a
  22.     {
      @% n6 a! _4 U! @+ A: o" S
  23.       Set_Time(comdata);4 J  E. P$ t+ r; G
  24.     }+ s! n$ H5 c* }' v
  25.     else if(comdata=="show")$ D& W2 V/ B6 N' q
  26.     {
    2 t- C: c& }& t  ]) }
  27.       Serial.println("The Time Now Is:");
    ! ?  p- K& Q; Y; g1 m$ u7 T
  28.       Show_RTCC();) d* _& B8 A3 i
  29.     }
    6 R: Y' ]# p4 P
  30.     else if(comdata=="help")
    . w$ F) {# v- `6 ~7 M( {
  31.     {
    # N: v) z! I7 ?, b6 C: X" I" n
  32.       help();( l' \- D1 Y" y. n2 p0 w9 Z
  33.     }. ]. u3 }# Q, {8 n6 J
  34.     else if(comdata.length()==11 && comdata.endsWith("hours"))
    5 x# X6 @+ m2 V. T  v4 z4 m
  35.     {
    2 |$ G( g" s8 e: M
  36.       Set_HourSystem(comdata);
    4 M" s7 _& N" Q! Y0 z
  37.     }/ E9 u2 X! `' {
  38. }
    $ z8 j2 p: e8 D, F% C; Q1 O

  39. 0 X8 H  ~* [$ G8 C& u4 y
  40. //帮助内容
    6 _7 S9 f0 z: b9 l- }
  41. void help()
    4 q  v1 ^2 d4 Q: T' S3 Y. C. T/ n
  42. {
    4 g2 H$ c4 }4 u$ r. t( e8 P
  43.   Serial.println("************************************* HELP *****************************************");
    2 S2 c# z- |( N! r, s' Z
  44.   Serial.println("Type "set YY MM DD WEEK HH MM" To Set The Time!");- }/ {: H  `  X. Z$ f3 R9 d5 j
  45.   Serial.println("Such As Type "set 08 08 08 1 12 00" To Set The Time As 2008-8-8 Monday 12:00");
    7 T! U0 b) R! @+ G! X5 D$ N: x
  46.   Serial.println("Type "show" To Display The Time Now!"); 9 S$ S* m0 N9 X. i! C+ p: d: W! l' k
  47.   Serial.println("Type "set 24hours" or "set 12hours" To Change The Hour System"); 2 R& U) M: O( ~9 i5 A3 ^
  48.   Serial.println("************************************* HELP *****************************************");
    * W$ V! B. w; s0 H* w' W
  49. }2 h+ j, Y7 q0 e1 r) ]6 z

  50. 4 Z0 Y! Z3 Q0 x) b: V9 ~% c
  51. void loop()) g2 ]* V* A3 ?7 g
  52. {' y6 q1 v$ |+ k0 Z
  53.   Scan_Input();
    : z4 c% y" x1 v8 _7 H* o
  54.   DS1302_GetTime(&DS1302Data);        //获取当前RTCC值
    $ c2 |* I2 V, g* {$ |
  55.   4 s" f+ ^" L" R% G4 g
  56. }</font>
复制代码

$ n5 d. i( i  l% v5 b9 ^' X
  ]1 m$ g/ \0 D0 c0 J

2 N) O& a9 h: d) j5 N+ P  o9 ]
实验效果:
打开串口显示器,显示了友好的交互界面:
32-ds1302效果图01.png

/ L7 |  p# _9 P9 P! }

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


    2 l& F3 h1 [- U1 v  y7 y# C1 y
    - h5 x# {. @3 R# J8 @- K1 h
  • GDB调试
  • 封装库下载安装
  • 代码自动补全提示
  • 中英文模式
  • UTF-8\GBK编码格式
  • 代码快速格式化
  • SWD\串口程序下载&调试(已验证)
  • DFU程序下载方式(待验证)
  • USB HID程序下载方式(待验证)
  • maple DFU程序下载方式(待验证)
    : p! g2 {4 E, o  A
  • maple DFU2程序下载方式(待验证)1 M, _& T" [7 d( `% B
  • MassStorage程序下载方式(待验证)
    $ R/ }. q0 [1 v
    / X8 p1 `) H4 l- t: S
    更多功能细节请前往www.stduino.com
    进行了解
    6 r& H8 T: @1 U/ F: K

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


    * Y( c9 Y+ C6 x3 w0 U, G
    • 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; a( w3 P' y! R5 E: g+ x) B9 r
      8 {+ G9 e* H* ^& e$ R4 d6 O/ M

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


      - D6 O- y$ x- r4 x# w3 ~) q1 r; Z2 c
      : n' c2 w. K; ]+ D

    * }# e4 u8 g* B$ a/ N. _: O( b
收藏 评论0 发布时间:2020-8-22 17:52

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版