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

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

[复制链接]
stduino 发布时间:2020-8-22 17:52
37种传感器(三十二)DS1302模块+Stduino Nano&UNO
6 Q$ ^; e( A( E
关键词:
51stm32arduinostduino单片机stduino UNO&Nano;DS1302时钟模块

  g( D! @* [: g( e+ p
说明:( U0 F0 D9 }9 l& Z/ a" [
DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时钟电路, 它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能。且能自动对少于31天的月份日期进行调整,支持12小时制和24小时制。
32-DS1302展示图.png 8 ?, S0 Z6 @7 D' @1 Q: n4 y

" S$ u. Q2 B# K+ M
工作电压为 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
* K  I& g- W" m& f6 ]
实验目的:
在本例中,我们将利用DS1302库,编写一个互动式的环境,从而帮助我们读取时间、修改时间、更改12/24小时制等等。
2 Y+ L) Y! O/ s1 d5 D- m) N
器材:
Stduino UNO/Nano;杜邦线;DS1302模块

3 O  g" E( N  w! m: q
电路连接:
VCC -> 5V
GND -> GND
CLK -> D4
DAT -> D3
RST -> D2
- P3 E8 c8 r1 N- x( n
代码展示:
  1. <font face="Arial" size="3">#include <DS1302.h>
    7 R% S2 E: u" Q, a7 q
  2. void setup()
    . A3 L% F! @2 l
  3. {
    5 {9 Y( a; X8 y6 V8 R4 h: B8 |
  4.   DS1302_Init();
    7 Q% Q0 T9 K  R0 Q) C- z5 b: u
  5.   Serial.begin(9600);   S! O( @" q' t6 f
  6.   Serial.println("欢迎使用!");  
    $ L- H/ w/ h$ u4 r# c0 R
  7.   DS1302_GetTime(&DS1302Data);
    ! \5 f2 E- w0 V
  8.   Show_RTCC();; a7 w" |% C( b# S
  9.   Serial.println("输入 "help" 获得帮助");
    2 S4 h. ?! O, ^- Q# q  `
  10. }
    * \/ g: \" T  m' ]
  11. // 获取串口输入
    , E( Q( f4 |" g; ~
  12. void Scan_Input(): r7 E6 q# O  y% ]0 X0 B
  13. {/ @3 W- \) @: L3 b0 `: z
  14.   String comdata="";
    - O+ l! @: G  i& t# \
  15.   while (Serial.available() > 0)  ( h3 ]" |3 m& M; [4 v
  16.     {
    8 O- C) r& _! V7 B. C, o# B
  17.      comdata += char(Serial.read());
    1 k3 M7 z# i. K8 h7 s/ @
  18.      delay(2);- |- k. y1 e4 m/ E
  19.     }$ X" i/ `& l* Q* _; s
  20.     ( N- T0 q/ A! B4 t& [! j
  21.     if(comdata.length()==20 && comdata.startsWith("set"))
    # ^( V& n+ g/ B$ h
  22.     {8 r+ {" G! z" e) `! k$ S
  23.       Set_Time(comdata);
    - y- q) P  Y( r4 V
  24.     }
    - I. x/ W  {% @
  25.     else if(comdata=="show")5 F/ v3 M9 Y* I; w' e
  26.     {
    0 W$ {' c  Q6 g: l" H' X1 L
  27.       Serial.println("The Time Now Is:");
    ! C! ~) z- O5 u% i' d
  28.       Show_RTCC();. ]! @  h. Z: g4 \: j& N. _
  29.     }
    # \. J6 p# Q7 @- a' z' A7 c5 K
  30.     else if(comdata=="help")
    $ x# k/ B, W5 R# t6 A' J
  31.     {
    : K  q( I( v6 S2 F9 @! W- r
  32.       help();
    # K' @  R6 Y  {% Y  n
  33.     }
    8 p! U! x6 S$ [
  34.     else if(comdata.length()==11 && comdata.endsWith("hours"))
    5 d9 _* J# W) Z! ~" `5 A
  35.     {
    4 s' d+ I7 k, g9 Z% c
  36.       Set_HourSystem(comdata);: O$ {2 Q, t5 g
  37.     }
    / _$ a- F) N! J8 F. D; ]8 ]
  38. }
    - G8 N( S& y9 I
  39. 5 R6 A1 t2 [7 F* V
  40. //帮助内容- F% _, R' L9 S; D+ H/ G2 z/ J
  41. void help()3 Y9 U5 v* d/ C: l; r5 V. Y9 q
  42. {
    , `/ O7 v- C  i6 @
  43.   Serial.println("************************************* HELP *****************************************");
    6 F9 Y8 m( I7 \
  44.   Serial.println("Type "set YY MM DD WEEK HH MM" To Set The Time!");
    : Q$ z2 l2 h6 L0 S& {; e0 A! H
  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 `6 m; e. w+ ^) T
  46.   Serial.println("Type "show" To Display The Time Now!");
    9 x# O- L8 G: M! v
  47.   Serial.println("Type "set 24hours" or "set 12hours" To Change The Hour System"); % s7 C2 b( {" R) T; B
  48.   Serial.println("************************************* HELP *****************************************");/ I$ ^( H2 p- v: U! B# f5 d
  49. }3 F% d' ~+ S" X) o, ^
  50. 8 T- \4 o1 i/ B4 D! c
  51. void loop()
    % a( R5 G0 f0 o
  52. {8 e9 I6 V- C7 b
  53.   Scan_Input();
    ) w8 d* l$ [" V6 Z
  54.   DS1302_GetTime(&DS1302Data);        //获取当前RTCC值2 f; q' ]# C. f; N, D2 ~1 ?# _; M
  55.   & S$ i* B* E! s! Z; ^6 d3 b. P- A
  56. }</font>
复制代码

* f; U7 P+ M" L+ ~6 y$ Z4 X) C
0 U, O5 v; a& |
% I. J  H; b. o2 j
实验效果:
打开串口显示器,显示了友好的交互界面:
32-ds1302效果图01.png

) s# v8 R, V/ u1 j( C

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

    , l4 n* V* c8 ~$ k1 K, d* I7 I
    5 n8 s  T" y6 v+ s: K
  • GDB调试
  • 封装库下载安装
  • 代码自动补全提示
  • 中英文模式
  • UTF-8\GBK编码格式
  • 代码快速格式化
  • SWD\串口程序下载&调试(已验证)
  • DFU程序下载方式(待验证)
  • USB HID程序下载方式(待验证)
  • maple DFU程序下载方式(待验证)9 R) a" b% H8 N! t8 L
  • maple DFU2程序下载方式(待验证)
    # t* J, Z: t* n$ i6 d; N, U3 y
  • MassStorage程序下载方式(待验证)% u$ L1 ?  h' ~% Q& e, R

    - ^+ {/ Z* p- w* k
    更多功能细节请前往www.stduino.com
    进行了解( R% N( k& S, Z" u: h1 P- L: ^* ?

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

    ' ^6 l8 O% ~, K. Y' u. H) d( L; `1 r
    • 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
      ( m. p- |1 {6 I% g8 a' z" W
      0 N- D3 P. M# o; M- L9 n" R

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

      2 L5 g+ ^( d/ O- A0 J# E1 f4 U

      3 J: }; G1 a/ t# @" R0 h

    & A; }. L; u2 w& ?! S
收藏 评论0 发布时间:2020-8-22 17:52

举报

0个回答

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版