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

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

[复制链接]
stduino 发布时间:2020-8-22 17:52
37种传感器(三十二)DS1302模块+Stduino Nano&UNO& v! K* \6 d) F
关键词:
51;stm32;arduino;stduino单片机;stduino UNO&Nano;DS1302时钟模块

" E- \& \  F. t2 j% j4 T/ j
说明:2 m4 D* P  ?6 l( P
DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时钟电路, 它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能。且能自动对少于31天的月份日期进行调整,支持12小时制和24小时制。
32-DS1302展示图.png
- o1 T4 ?: P* H3 ]

) ?* m2 j  j8 p; _- ]- ?$ q
工作电压为 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
- [( u  P9 X$ z9 l  Y% `$ g
实验目的:
在本例中,我们将利用DS1302库,编写一个互动式的环境,从而帮助我们读取时间、修改时间、更改12/24小时制等等。

% M$ l  p+ J0 ~' @/ O# u2 D
器材:
Stduino UNO/Nano;杜邦线;DS1302模块

# C% y) e" ^+ n% o
电路连接:
VCC -> 5V
GND -> GND
CLK -> D4
DAT -> D3
RST -> D2

, A' p1 V5 J& d$ @* m3 }/ P
代码展示:
  1. <font face="Arial" size="3">#include <DS1302.h>
    & B# p/ A% T, T; R3 ?" q
  2. void setup()
    . E: |3 f) n% M3 U6 p# v
  3. {
    * n1 u' H) Q: b( h: z% ~4 _: V; S
  4.   DS1302_Init();
    2 P( V3 R3 w- _4 w
  5.   Serial.begin(9600);
    1 H9 r& M, [3 ~# g, z3 W: L
  6.   Serial.println("欢迎使用!");  
    2 i( k' a& L2 r* Y* J3 c
  7.   DS1302_GetTime(&DS1302Data);
    5 S. }# Q3 P* q1 g! L
  8.   Show_RTCC();. o( F5 i" |8 E( o- q. z6 ~" p
  9.   Serial.println("输入 "help" 获得帮助");
    2 G. A( A: r% c8 t( B/ S+ }# n
  10. }9 I* v  a$ n' X! @) W! c, J1 r1 y
  11. // 获取串口输入
    ) ~; f( P4 r: z" p+ h; m
  12. void Scan_Input()3 B0 ^$ {. [  E
  13. {% a1 b4 v* _* H
  14.   String comdata="";
    . y* c, v8 x2 D% g2 u0 P
  15.   while (Serial.available() > 0)  
      H. x4 K- x$ B6 ^: K
  16.     {
    & J5 m2 |: R  B0 a/ U, _
  17.      comdata += char(Serial.read());
    3 Y6 N3 b+ |% M) r- g+ v
  18.      delay(2);' _! o1 [- q" i; s# v5 w; o
  19.     }
    % ?5 E& r1 y$ `
  20.     , n3 P  a8 `, T, g! c
  21.     if(comdata.length()==20 && comdata.startsWith("set"))
    * u1 w  ?' K. o1 o: j6 i
  22.     {
    7 t" {" D7 Q4 }# u& T
  23.       Set_Time(comdata);. Z1 U% b2 H* V
  24.     }
    9 s: B( U1 e8 D' n, S
  25.     else if(comdata=="show")6 }% U$ X9 _2 U; ?# x% P
  26.     {6 C5 u/ g% [1 i: y! x$ h  u
  27.       Serial.println("The Time Now Is:");
    1 {* ?" f: z" p0 j; _
  28.       Show_RTCC();5 A" q/ ^8 z4 u8 \0 @
  29.     }; p6 T" K9 O8 a
  30.     else if(comdata=="help")) j5 o3 j) c9 L9 u7 d
  31.     {+ p* w( q, l, K
  32.       help();
    * a6 u- @" ~' J: [" i- g/ f( \
  33.     }
    $ ~/ K) Z# U7 Z6 ^
  34.     else if(comdata.length()==11 && comdata.endsWith("hours"))
    ( ~  C  t2 t/ Q' f8 V2 w. P
  35.     {6 L2 Q8 u8 r6 Y3 K8 F9 {8 m
  36.       Set_HourSystem(comdata);9 i! l. ~3 ]1 B; G$ O. v6 u
  37.     }
    0 N9 I, p& F. N8 h/ ]
  38. }
      B9 A  C/ f' |3 D& f. N# ?
  39. 5 i; ?7 {$ i8 r& s
  40. //帮助内容
    ; R9 a% W" [) }
  41. void help()
    " H  V. c& F! V: U
  42. {1 @5 L- w( K  d; O, I2 H
  43.   Serial.println("************************************* HELP *****************************************");) M. B6 g& l. u5 P  C# F
  44.   Serial.println("Type "set YY MM DD WEEK HH MM" To Set The Time!");+ m( R2 Z: J7 _8 [) Y6 L
  45.   Serial.println("Such As Type "set 08 08 08 1 12 00" To Set The Time As 2008-8-8 Monday 12:00");
    - U$ G8 ~  Z4 q: V: l0 J: Z$ G
  46.   Serial.println("Type "show" To Display The Time Now!");
    ) e/ f) H4 G$ {  {/ \
  47.   Serial.println("Type "set 24hours" or "set 12hours" To Change The Hour System"); 8 ?8 v+ y0 m$ }* q1 p# x9 D
  48.   Serial.println("************************************* HELP *****************************************");4 |' @0 m" \) K7 t! g! j- A7 E' R
  49. }+ V* j0 r. Q1 ?7 V, \
  50. 6 g$ L2 ?+ T* f) U. y. p+ V4 V
  51. void loop(); E" @" {" f/ S1 f; R3 Q6 b
  52. {
    # I' q2 J$ k/ ^* r- ^3 |$ I0 B  X
  53.   Scan_Input();$ J  W( m5 ]& ~8 [. {2 T& D/ u
  54.   DS1302_GetTime(&DS1302Data);        //获取当前RTCC值  r/ l: ~1 E2 [; I
  55.   
    $ h% K$ ?) i) v6 O3 `/ V
  56. }</font>
复制代码

9 F/ V$ D) K2 g' k  }9 l6 v$ ]) m* ?! Y/ Q% u) q4 g
( P2 I) Q% Y8 a6 K
实验效果:
打开串口显示器,显示了友好的交互界面:
32-ds1302效果图01.png
/ Q9 ^' z4 q' y% c3 f

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


    5 ?$ _. _; G" N# E
    8 g6 y0 b% O. [1 {+ V) j$ O' |& d
  • GDB调试
  • 封装库下载安装
  • 代码自动补全提示
  • 中英文模式
  • UTF-8\GBK编码格式
  • 代码快速格式化
  • SWD\串口程序下载&调试(已验证)
  • DFU程序下载方式(待验证)
  • USB HID程序下载方式(待验证)
  • maple DFU程序下载方式(待验证)
    & \% k5 |4 [( J( ]' y3 }& w1 b
  • maple DFU2程序下载方式(待验证)$ Z7 c# z! ~* {  O
  • MassStorage程序下载方式(待验证); M( P. e1 {6 \" o
    ! A3 [+ N- Z% C2 P. q
    更多功能细节请前往www.stduino.com
    进行了解
    + x! o; @) _- B7 E1 b( U1 @6 `

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

    9 ~, T. {3 G2 g. r5 U% a: x
    • 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
      & Y: |, J5 d* B( R. R$ D; M: Y  ?. I! B

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


      - d( t/ d$ F; y/ W& U2 _
      % I# x5 l1 s/ N% V: ?4 Q$ t% @
    1 |+ \7 V* @! N' ~
赞 收藏 评论0 发布时间:2020-8-22 17:52

举报

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