37种传感器(三十二)DS1302模块+Stduino Nano&UNO* t% ?8 V3 ]0 u1 N" y* G" c
关键词: 51;stm32;arduino;stduino单片机;stduino UNO&Nano;DS1302时钟模块
$ K. b9 [ Z5 M9 X0 R1 Y说明:
+ f% ~- W5 n8 ZDS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时钟电路, 它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能。且能自动对少于31天的月份日期进行调整,支持12小时制和24小时制。
; 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,读写操作等繁琐步骤已经被封装好了。
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代码展示: - <font face="Arial" size="3">#include <DS1302.h>
6 e+ {5 ]! t) k: r - void setup(): D9 ]+ o6 ?) U! ]
- {+ u" T c" D# _6 n5 U/ d
- DS1302_Init();
* ~# |) B2 u! s3 F9 u' w - Serial.begin(9600);
6 Z& {$ G8 q; u - Serial.println("欢迎使用!"); * W f4 ?% _. b3 o) \/ ~7 H
- DS1302_GetTime(&DS1302Data);( ]$ B" P# R. l8 I1 }% w. `
- Show_RTCC();
7 l4 Y, V( V. X% ^ - Serial.println("输入 "help" 获得帮助");
) D" r8 ^% `# `9 F - }! m3 [" Z; b, k; E, N$ p
- // 获取串口输入
" n4 F; X3 D7 f* J4 S0 w" H* M - void Scan_Input()% F7 M, Y z- [4 V2 k& m4 H$ y3 Y
- {; T5 S( N3 n& x8 P
- String comdata="";
- J; s9 A x: c- \7 c7 @ - while (Serial.available() > 0) ' h ^7 y" |0 F, ?9 ]$ e, v- d
- {" F6 F6 H# C" K4 p/ g9 E. ~
- comdata += char(Serial.read());
" Q. W0 j: _# L% U4 L0 ~5 D - delay(2);/ p' V$ W! l4 B) k! ]
- }
; B C) N6 G) i5 c* E* s9 N - / X k$ N+ J4 P& H; ?
- if(comdata.length()==20 && comdata.startsWith("set"))
1 h/ s- W: ?; s; ~2 V8 s0 a - {
@% n6 a! _4 U! @+ A: o" S - Set_Time(comdata);4 J E. P$ t+ r; G
- }+ s! n$ H5 c* }' v
- else if(comdata=="show")$ D& W2 V/ B6 N' q
- {
2 t- C: c& }& t ]) } - Serial.println("The Time Now Is:");
! ? p- K& Q; Y; g1 m$ u7 T - Show_RTCC();) d* _& B8 A3 i
- }
6 R: Y' ]# p4 P - else if(comdata=="help")
. w$ F) {# v- `6 ~7 M( { - {
# N: v) z! I7 ?, b6 C: X" I" n - help();( l' \- D1 Y" y. n2 p0 w9 Z
- }. ]. u3 }# Q, {8 n6 J
- else if(comdata.length()==11 && comdata.endsWith("hours"))
5 x# X6 @+ m2 V. T v4 z4 m - {
2 |$ G( g" s8 e: M - Set_HourSystem(comdata);
4 M" s7 _& N" Q! Y0 z - }/ E9 u2 X! `' {
- }
$ z8 j2 p: e8 D, F% C; Q1 O -
0 X8 H ~* [$ G8 C& u4 y - //帮助内容
6 _7 S9 f0 z: b9 l- } - void help()
4 q v1 ^2 d4 Q: T' S3 Y. C. T/ n - {
4 g2 H$ c4 }4 u$ r. t( e8 P - Serial.println("************************************* HELP *****************************************");
2 S2 c# z- |( N! r, s' Z - Serial.println("Type "set YY MM DD WEEK HH MM" To Set The Time!");- }/ {: H ` X. Z$ f3 R9 d5 j
- 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 - Serial.println("Type "show" To Display The Time Now!"); 9 S$ S* m0 N9 X. i! C+ p: d: W! l' k
- Serial.println("Type "set 24hours" or "set 12hours" To Change The Hour System"); 2 R& U) M: O( ~9 i5 A3 ^
- Serial.println("************************************* HELP *****************************************");
* W$ V! B. w; s0 H* w' W - }2 h+ j, Y7 q0 e1 r) ]6 z
-
4 Z0 Y! Z3 Q0 x) b: V9 ~% c - void loop()) g2 ]* V* A3 ?7 g
- {' y6 q1 v$ |+ k0 Z
- Scan_Input();
: z4 c% y" x1 v8 _7 H* o - DS1302_GetTime(&DS1302Data); //获取当前RTCC值
$ c2 |* I2 V, g* {$ | - 4 s" f+ ^" L" R% G4 g
- }</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 ]
实验效果: 打开串口显示器,显示了友好的交互界面:
/ 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
|