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

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

[复制链接]
stduino 发布时间:2020-8-22 17:52
37种传感器(三十二)DS1302模块+Stduino Nano&UNO7 ?, e2 b7 F" B8 ^3 t7 [
关键词:
51stm32arduinostduino单片机stduino UNO&Nano;DS1302时钟模块
8 T+ L- g+ ^7 h
说明:
# |! q- e9 o/ j: }' a
DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时钟电路, 它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能。且能自动对少于31天的月份日期进行调整,支持12小时制和24小时制。
32-DS1302展示图.png ' ?& ?% \! b) W6 r" i

% D- E0 \3 G: D
工作电压为 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 + \( J) m6 e8 J  f% R
实验目的:
在本例中,我们将利用DS1302库,编写一个互动式的环境,从而帮助我们读取时间、修改时间、更改12/24小时制等等。

/ ]7 |- M! A7 C% j* K0 P
器材:
Stduino UNO/Nano;杜邦线;DS1302模块
1 I' _# v7 c. u$ J1 q; q
电路连接:
VCC -> 5V
GND -> GND
CLK -> D4
DAT -> D3
RST -> D2

% m+ I% V4 p. Q  p* ]1 l4 E
代码展示:
  1. <font face="Arial" size="3">#include <DS1302.h>. ~# h6 ]5 L& u, D5 v- N) [
  2. void setup()& p) P! z8 ~5 K2 A& g
  3. {
    5 x! `  \2 W. ^/ d' \% S
  4.   DS1302_Init();: p- W4 h( x, C8 m# X+ f" ?4 D8 M
  5.   Serial.begin(9600);
    , o' j% E! X: U2 W( X  q! O
  6.   Serial.println("欢迎使用!");  9 z: P2 e7 }( i6 P  O$ ]# |* A
  7.   DS1302_GetTime(&DS1302Data);2 F: E9 w. s, |
  8.   Show_RTCC();
    " f& f2 L* o' R
  9.   Serial.println("输入 "help" 获得帮助");! E5 ^9 I" L7 [1 R$ u+ ^
  10. }
    ) Y* w  U3 ^; J
  11. // 获取串口输入( v" ?, y* a/ N
  12. void Scan_Input()! v6 a+ D% S  {5 m. M
  13. {( p2 z' i: i8 a* T+ y
  14.   String comdata="";
    # c- l7 ]' W5 r! M# d
  15.   while (Serial.available() > 0)  
    " H. {6 u, F: b' b
  16.     {* b; p! ]& c( F+ N
  17.      comdata += char(Serial.read());
    6 q6 e- i" S1 W
  18.      delay(2);$ C: Y) L  C/ Z0 u
  19.     }
    7 y$ P0 N. e3 \4 |8 u; Q) N
  20.     4 e) [. ?5 J5 O
  21.     if(comdata.length()==20 && comdata.startsWith("set"))7 l; }0 ], j; C" Z! a6 V% Z5 |* J
  22.     {
      n9 K* q$ \" L7 F* ~" k7 c- o1 p: i
  23.       Set_Time(comdata);! I5 A% C; y7 F! V1 }2 o4 D
  24.     }. s6 L/ y3 V0 n. |
  25.     else if(comdata=="show")
    8 w7 i5 x/ D9 g( e
  26.     {* ~, }& ~! p! Y( h  z' m2 @
  27.       Serial.println("The Time Now Is:");" Q2 V! i3 A: M, c
  28.       Show_RTCC();
    / |" l  y- _- L1 s' T) n
  29.     }: k6 Q) x% y) d( j2 k$ q2 q
  30.     else if(comdata=="help")
    / F8 Q/ f2 C% T( ?8 ]
  31.     {
    ( O" Z9 C5 d2 X5 R+ P4 C" B# p
  32.       help();
    " O3 r% O, k  g
  33.     }. g7 R2 k: ~$ X0 O; }
  34.     else if(comdata.length()==11 && comdata.endsWith("hours"))3 d) i& M/ g  c3 N6 C, Y5 c
  35.     {
    ) V9 O, o  A) k, S0 O# ?
  36.       Set_HourSystem(comdata);6 w% K6 ~% a7 c" |  q
  37.     }
    / y9 d, B: O3 j* d
  38. }
    8 G" X# Y# ]& D$ _

  39. 6 j9 ]9 E2 z/ u3 p+ j
  40. //帮助内容
    * P. G7 Y" \, t
  41. void help()& C8 G1 p+ F3 m5 e, m7 n% \! _: Z% C; N
  42. {
    & r9 o% `# B% }& E" s
  43.   Serial.println("************************************* HELP *****************************************");& X; \6 K) @- @- N3 g9 i# y! l
  44.   Serial.println("Type "set YY MM DD WEEK HH MM" To Set The Time!");' V; p4 `5 w' r7 @
  45.   Serial.println("Such As Type "set 08 08 08 1 12 00" To Set The Time As 2008-8-8 Monday 12:00");
    6 @5 }" {/ l7 K6 F% Z6 ]- I
  46.   Serial.println("Type "show" To Display The Time Now!");
    & R; g+ ~" h0 v
  47.   Serial.println("Type "set 24hours" or "set 12hours" To Change The Hour System"); " P' Q) {  t3 z0 m- Y
  48.   Serial.println("************************************* HELP *****************************************");
    ( {/ J$ F, c. x# P9 h2 g
  49. }' J; S7 z" e# g) T& q; }0 ~

  50. $ Z, z0 G& `6 i
  51. void loop()
    8 c; {2 W9 C* E. t7 U+ `
  52. {. i, c( U& f, N9 d4 N7 A
  53.   Scan_Input();
    3 C! H' ]% H$ h3 Y* H3 n$ }5 P8 p
  54.   DS1302_GetTime(&DS1302Data);        //获取当前RTCC值. a8 Y7 q! V6 n% L- q
  55.   & j  q$ y: G; i8 {
  56. }</font>
复制代码
4 c' @$ L. l! }6 x1 V
4 E2 M: e3 e) M% B- I0 [' h: W1 `
3 E! C4 w; |+ Z# H4 q- p
实验效果:
打开串口显示器,显示了友好的交互界面:
32-ds1302效果图01.png

3 l/ S7 a9 s# j6 I4 i* K- v% b6 ~4 }

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


      a" x, O- @' i2 i
      [' b5 v  b- \( p/ M% r
  • GDB调试
  • 封装库下载安装
  • 代码自动补全提示
  • 中英文模式
  • UTF-8\GBK编码格式
  • 代码快速格式化
  • SWD\串口程序下载&调试(已验证)
  • DFU程序下载方式(待验证)
  • USB HID程序下载方式(待验证)
  • maple DFU程序下载方式(待验证)
    6 \" r6 O" x/ U9 _3 f; q) y6 T0 v5 ]8 E
  • maple DFU2程序下载方式(待验证)9 d" r0 ~! |! l0 V
  • MassStorage程序下载方式(待验证)4 v! z) E1 _, T+ z( g/ S$ ^$ \8 d' \
    ' B4 ~! z% E5 t  ?/ X$ _1 }
    更多功能细节请前往www.stduino.com
    进行了解
    ; E7 f/ E% v# z$ I' u+ ]

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


    2 v# R8 D( e8 ^
    • 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$ L0 J7 [6 ^: T% h) o% q" b  r& n9 o
      5 Y' C1 @% }; ^* Z( }$ Z4 j# T

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


      9 I6 d2 [% e6 Y: I/ }$ m1 V
      1 m. V7 \& ?2 m

    ) c2 C, m& l- N5 P# X  Q8 z
收藏 评论0 发布时间:2020-8-22 17:52

举报

0个回答

所属标签

相似分享

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