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

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

[复制链接]
stduino 发布时间:2020-8-22 17:52
37种传感器(三十二)DS1302模块+Stduino Nano&UNO7 V9 A4 R0 z8 g% h) \
关键词:
51stm32arduinostduino单片机stduino UNO&Nano;DS1302时钟模块
8 {- d" h4 S- q2 k* Y- r- O6 e4 u
说明:
; z4 }/ B) j( }; G- }1 m5 T
DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时钟电路, 它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能。且能自动对少于31天的月份日期进行调整,支持12小时制和24小时制。
32-DS1302展示图.png $ ~, v  r( W4 J# p8 p

& o" X  H% X+ q8 m3 P
工作电压为 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 4 N& S4 C+ b; R2 `+ U) `
实验目的:
在本例中,我们将利用DS1302库,编写一个互动式的环境,从而帮助我们读取时间、修改时间、更改12/24小时制等等。

6 A2 W( ~( Z! p' D) J% I
器材:
Stduino UNO/Nano;杜邦线;DS1302模块
* @0 k% F& h0 e7 z  s$ {
电路连接:
VCC -> 5V
GND -> GND
CLK -> D4
DAT -> D3
RST -> D2

" Z! q! h! l; Z5 A8 \
代码展示:
  1. <font face="Arial" size="3">#include <DS1302.h># ~  D  Q! t/ L( n* w. t: F4 M  U/ Y
  2. void setup()
    5 u9 |$ {& N" w& Q
  3. {" X  w' U$ _; w% L/ V$ K6 F
  4.   DS1302_Init();5 N& z# G! l7 Y" Z7 [
  5.   Serial.begin(9600); % t$ }/ n" Z8 y2 X0 l- q
  6.   Serial.println("欢迎使用!");  8 @" V0 d. F/ T9 s/ a- A1 K2 F
  7.   DS1302_GetTime(&DS1302Data);
    - C8 n. s  B3 s8 m6 q
  8.   Show_RTCC();* Z# n7 \& D! B, b
  9.   Serial.println("输入 "help" 获得帮助");
    ( @' n- \- h% l7 B. u
  10. }9 U; n7 h: c0 T- ^( q
  11. // 获取串口输入0 b3 ]( d0 V0 C2 M1 m
  12. void Scan_Input()
    ) p3 J5 b2 s# ?* P5 w
  13. {& h# g; I5 q( _& A# n, Z
  14.   String comdata="";
    3 L9 _- V2 d0 p% V- @2 V! @
  15.   while (Serial.available() > 0)  " i9 H/ j- x: B3 `
  16.     {. `) M$ J) w% A: H/ f  H% u( B$ Q& V
  17.      comdata += char(Serial.read());0 z. a. q" R) ^2 m
  18.      delay(2);! j) s( _" ^7 T4 j0 u
  19.     }3 w- {0 ~' ?% w( B1 D  `% Z
  20.     4 r* g0 |2 E6 s  U% x  A5 O4 K
  21.     if(comdata.length()==20 && comdata.startsWith("set"))% Z' E/ r. c% _& z5 w" \
  22.     {$ Y1 N1 Y, U! ?8 b# W* n# W
  23.       Set_Time(comdata);
    ( x, ?/ I# k' T/ q
  24.     }
    . @( u& ~5 P& [) ~  X
  25.     else if(comdata=="show"): Q4 I$ U5 @- G: j% S
  26.     {& Y/ H) A+ p! x# a% N( C2 K
  27.       Serial.println("The Time Now Is:");7 i- k* @2 P9 i" p+ C1 ]; l
  28.       Show_RTCC();5 S- g& S! j5 d5 p* n
  29.     }$ G4 e. l1 O  N! h4 u' p1 p2 ^
  30.     else if(comdata=="help")
    # |3 f6 J: p, \& B0 G7 Q, b
  31.     {
    5 W. g" `) z& }9 ^/ D1 w6 r
  32.       help();
    0 _3 H  J" }3 T' |4 |5 ^( j
  33.     }
    / m2 t- o* j% \! l  ~2 q9 g) K
  34.     else if(comdata.length()==11 && comdata.endsWith("hours")), n! a; k0 j7 t5 n# M
  35.     {8 H" n4 k9 O- M
  36.       Set_HourSystem(comdata);) t$ }- U# {, p. `
  37.     }, g5 p7 a; T7 X8 j
  38. }9 L. Y8 P2 F3 [. j  [. H) v
  39. * T& U8 B  \8 a$ n- n$ n
  40. //帮助内容
    " a! I" a  A' U2 ~) ]
  41. void help(), P$ m1 S6 x: b
  42. {1 D) z$ k3 w& S- n5 K
  43.   Serial.println("************************************* HELP *****************************************");
    4 u5 T; Q( [" P& Y# u$ I& P0 F2 g) l
  44.   Serial.println("Type "set YY MM DD WEEK HH MM" To Set The Time!");8 V" G9 H+ G2 T- C
  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$ i% t# Y' m$ @* }4 H% W, z
  46.   Serial.println("Type "show" To Display The Time Now!");
    * ]0 T( i9 }  q
  47.   Serial.println("Type "set 24hours" or "set 12hours" To Change The Hour System"); 7 {6 k. d/ \9 `
  48.   Serial.println("************************************* HELP *****************************************");
    ! f. q+ k! p/ u" C1 H. [/ G
  49. }
    9 W+ L9 Q& m; p( `6 }% m! [
  50. 3 i9 c. K8 }' \7 K
  51. void loop()
    , ~  X5 _! r5 _& L6 J+ @
  52. {) C* @. m* `4 i+ Q6 w, K
  53.   Scan_Input();! x2 p. j5 G( t# m& h
  54.   DS1302_GetTime(&DS1302Data);        //获取当前RTCC值$ c- [, j8 R' I/ B5 H- f, a
  55.   
    $ S+ l6 c6 U. z
  56. }</font>
复制代码
0 ?# k9 a/ m0 ?. ^+ V; H: k* h) O

* T! D9 [% E' S- w7 H& o

2 u1 L7 a+ A  F& n7 ?8 g5 r
实验效果:
打开串口显示器,显示了友好的交互界面:
32-ds1302效果图01.png

, J, ^+ _8 c# T, c2 u7 A) D6 ?

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


      t* C" F( n; z4 }
    1 q; j) }7 H8 q7 P* K/ A, @
  • GDB调试
  • 封装库下载安装
  • 代码自动补全提示
  • 中英文模式
  • UTF-8\GBK编码格式
  • 代码快速格式化
  • SWD\串口程序下载&调试(已验证)
  • DFU程序下载方式(待验证)
  • USB HID程序下载方式(待验证)
  • maple DFU程序下载方式(待验证)& r+ p) O& ^1 W/ _. P8 c4 {0 g
  • maple DFU2程序下载方式(待验证)1 N1 E/ b7 `) {3 z, z3 U
  • MassStorage程序下载方式(待验证)
    # c; h! p0 M) u  e
    5 k) |% a6 y  y, @  p/ ~5 h
    更多功能细节请前往www.stduino.com
    进行了解1 b, a) N: f& E! u$ k

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


    & G1 [' O2 J! E8 u- a) g* H  s
    • 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( N/ f" k* K5 U% |4 t9 V

      . D2 f1 w/ O- s1 L2 ]9 A+ _$ T

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

      ; Y9 `* k3 m8 F* f& F8 I0 {
      7 [2 g: v6 {. X' l; e5 u6 T9 A

    5 @/ h) B- |; u; q6 k* |6 [/ u
收藏 评论0 发布时间:2020-8-22 17:52

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版