【雕爷学编程】Arduino动手做(29)---DS1302实时时钟模块2

在这里插入图片描述

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二十九:DS1302实时时钟模块CR2032电子掉电走时RTC单片机扩展板 带电池

【雕爷学编程】Arduino动手做(29)---DS1302实时时钟模块2_第1张图片
知识点:时间与时钟
一、时间(time)
1、时间是物质的永恒运动、变化的持续性、顺序性的表现,包含时刻和时段两个概念。时间是人类用以描述物质运动过程或事件发生过程的一个参数,确定时间,是靠不受外界影响的物质周期变化的规律。以地球自转为基础的时间计量系统称为世界时系统。时、日、月、年、世纪的时间计量属天文学中的历法范畴。时间是物理学中的七个基本物理量之一,符号为t。在国际单位制(SI)中,时间的基本单位是秒,符号为s。

在2018年11月16日召开的第26届国际度量衡大会对秒的定义:未受干扰的铯-133的原子基态的两个超精细能阶间跃迁对应辐射的9,192,631,771个周期的持续时间(Δvcs)。这个定义提到的铯原子必须在绝对零度时是静止的,而且在地面上的环境是零磁场。在这样的情况下被定义的秒,与天文学上的历书时所定义的秒是等效的。生活中常用的时间单位还有:毫秒(ms)、分(min)、小时(h)、日(d)、月(m)、年(y)等。

现代宇宙学理论认为,宇宙大爆炸“之前”没有时间可言。“永远向前”指时间的增量总是正数。时间表达物体的生灭排列。“时间”简称“时”。时间就是物质的运动和能量的传递。

【雕爷学编程】Arduino动手做(29)---DS1302实时时钟模块2_第2张图片
2、时间是标注事件发生瞬间及持续历程的基本物理量。时间 是一个较为抽象的概念,是物质的运动、变化的持续性、顺序性的表现。时间概念包含时刻和时段两个概念。时间是人类用以描述物质运动过程或事件发生过程的一个参数,确定时间,是靠不受外界影响的物质周期变化的规律。例如月球绕地球周期,地球绕太阳周期,地球自转周期,原子震荡周期等。阿尔伯特·爱因斯坦说时间和空间是人们认知的一种错觉。

爱因斯坦认为,现在、过去和将来之间的差别只是一种错觉。时间倒流或回到过去,其实是建立在一个不存在的逻辑基础上的。(注:在基本的物理学定理中没有时间概念,时间不参与计算,这并不表明其不存在,物种衰老、昼夜更替都证明其真实存在,切莫误解其意;相对论中,粒子的很多运动,裂变、聚变,互相之间都是这种关系,互为倒放的关系。)

3、时间系统
(1)格林尼治时间,亦称“世界时”。格林尼治所在地的标准时间。不光是天文学家使用格林尼治时间,就是在新闻报刊上也经常出现这个名词。我们知道各地都有各地的地方时间。如果对国际上某一重大事情,用地方时间来记录,就会感到复杂不便。而且将来日子一长容易搞错。因此,天文学家就提出一个大家都能接受且又方便的记录方法,那就是以格林尼治的地方时间为标准。格林尼治是英国伦敦南郊原格林尼治天文台的所在地,它又是世界上地理经度的起始点。对于世界上发生的重大事件,都以格林尼治的地方时间记录下来。一旦知道了格林尼治时间,人们就很容易推算出相当的本地时间。例如,某事件发生在格林尼治时间上午8时,中国在英国东面,北京时间比格林尼治时间早8小时,我们就立刻知道这次事情发生在相当于北京时间16时,也就是北京时间下午4时,即从东+8个时区,加8个小时。

【雕爷学编程】Arduino动手做(29)---DS1302实时时钟模块2_第3张图片
(2)协调世界时,世界时是采用天体测量的方式测定时间,而因为各种因素,相对于原子时会有微小的误差。为了协调世界时和原子时,科学家们在处理协调世界时。协调世界时秒以下的数字采用原子时的数据。当世界时和原子时差别达到一秒的时候,会进行跳秒或者负跳秒。具体程序如下:当世界时慢了,就让UTC增加一秒。23时59分59秒–23时59分60秒–0时0分0秒;当世界时快了,就让UTC减少一秒。23时59分58秒–0时0分0秒。跳秒或负跳秒只在12月31日或6月30日进行。跳秒由国际时间局作出决定,提前通知各授时单位,全世界统一执行。由于时差的关系,对于不同的国家可能不一定在晚上进行跳秒和负跳秒。

4、时间观
时间在古代,光阴表示时间。时间是人根据物质运动来划分的,不是本来就有的,宇宙中的“时”本来是没有间的。物质运动需要耗费“时”,但是如果不把“时”分割成间,我们的思维就无法识别“时”,我们之所以能思考,是因为思维能对物质世界命名,物为实,思为虚,思命物以虚名,为思所用。没有进行分割过的“时”,无法被命名,无法进行区分,只有分割成“时间”后,才能被思维所用,因为分割后可以命名了。比如我们把地球绕太阳一周的运动过程划分为一年,地球自转一圈的运动过程划分为一日,这样的划分便于思维使用数字符号来计算。如果你不是生活在地球上,绝对不会以地球的运动过程来分割时。所以,时间不过是人为了便于思维思考这个宇宙,而对物质运动进行的一种划分,是人定的规则,而并非什么自然规则。间是人为的划分,怎么分都可以。

【雕爷学编程】Arduino动手做(29)---DS1302实时时钟模块2_第4张图片
时间是一种客观存在。时间的概念是人类认识、归纳、描述自然的结果。在古中国,其本意原指四季更替或太阳在黄道上的位置轮回,《说文解字》曰:时,四时也;《管子·山权数》说:时者,所以记岁也。随着认识的不断深入,时间的概念涵盖了一切有形与无形的运动,《孟子·篇叙》注:“谓时曰支干五行相孤虚之属也。”可见时是用来描述一切运动过程的统一属性的,这就是时的内涵。由于古代人们研究的问题基本都是宏观的、粗犷的、慢节奏的,所以只重视了“时”的问题。后来因为研究快速的、瞬时性的对象需要,补充进了“间”的概念。于是,时间便涵盖了运动过程的连续状态和瞬时状态,其内涵得到了最后的丰富和完善,“时间”一词也就最后定型了。

二、时钟(clock)
1、时钟简称为钟,所有计时装置都可以称为计时仪器。钟表在现代汉语中一般有两种意思,一是各类钟和表的总称,另一个是专指体积较大的表,尤指机械结构的有钟摆的钟。

时钟是人类最早发明的物品之一,原因是需要持续量测时间间隔,有些自然的时间间隔(如日、闰月及年)可以用观测而得,较短的时间间隔就需要利用时钟。数千年计时设备的原理也有大幅变化,日晷是利用在物体在一平面上影子的变化来计时,计算时间间隔的仪器也有许多种,包括最广为人知的沙漏。配合日晷的水钟可能是最早的计时仪器。欧洲在1300年发明了擒纵器,后来也创作了第一个机械钟,可以利用像摆轮之类的振荡计时设备。发条驱动的时钟约在15世纪出现,钟表业约在15世纪至16世纪开始发展,1656年发明了摆钟,因此在计时的准确性又进一步提升,当时因为航海导航对时间的精确性要求,也带动时钟可靠性及精确性的提升。电子时钟在1840年申请专利,二十世纪电子学的发展产生了可以完全不用机械机芯的时钟。

【雕爷学编程】Arduino动手做(29)---DS1302实时时钟模块2_第5张图片
2、现代时钟内的计时元件是谐振子(也叫晶振),一个会以固定精准频率振荡的物体,谐振子可能是单摆、音叉、石英晶体,或是原子在发射微波时电子的振荡。类比型的时钟会用指针及角度表示时间,数位时钟则是用数字的方式表示,有两种时间表示法:十二小时制及二十四小时制。大部分数位时钟都是用电子设备及液晶、LED及真空荧光显示器来显示时间。时钟功能也是现在电脑、手机或平板电脑的标准功能之一。在家庭、办公室及其他场所都有时钟,像表之类小型的设备可以戴在手腕上或是身上,较大型的会在公众场所,例如火车站或是教堂内,在电脑显示器、手机、便携式媒体播放器的角落也会有时间显示。大部分的数位电脑会依靠一定固定频率的信号来同步处理,这称为时脉讯号 (有些研究计划正在发展用异步电路处理的CPU)。像电脑等设备,也会显示像日期,年份等资讯,这和时脉讯号不同,不过也会透过时脉讯号计时而得,也有些设备会有专门的实时时钟(RTC)芯片。

为了方便性、距离、电话或是失明人士的需求,有用声音报时的听觉时钟。为了盲人需求,也有用触摸方式可以感知其时间的盲人时钟,其中有些类似传统时间,但调整其设计,可以直接触摸表面得知时间,但又不会影响计时功能。计时技术也在持续演进之中。

3、时钟的主要目的是显示时间,但也有以下的一些功用。
(1)时间管理:时钟也可以在指定的时间发出警示声响提醒使用者,帮助人们进行时间管理,这种时钟称为闹钟,其音量可能一开始较小声,渐渐的变大声,或是声响先中断一段时间,隔几分钟后再重新发出警示声响。
(2)定时控制:时钟可以控制一些需定时动作的设备,例如中央供暖、录影机等,这种应用下的时钟常称为计时器。另外像太阳能跟踪装置及望远镜架都需要根据地球自转而进行位置或角度的精细调整,也需要配合时钟的资讯。
(3)导航:自十二世纪起,航海上的导航需要精确的经度及纬度,纬度可以依天文导航得知,而经度的量测就需要准确的时间计算,约翰·哈里森在十八世纪中发明了航海时计,开普敦的午炮会固定在中午发射,方便船员校正时间。
(4)地震学:在判断地震震中位置时,会用一个公共的时钟,至少有四个观测员,观测并记录不同位置不同地震波的到达时间,以检测震中位置。

知识点:DS1302时钟模块
一、DS1302芯片
1、DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片,内含有一个实时时钟/日历和31 字节静态RAM ,通过简单的串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、周、月、年的信息,每月的天数和闰年的天数可自动调整。时钟操作可通过AM/PM 指示决定采用24 或12 小时格式。DS1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个口线:(1)RST 复位(2)I/O 数据线(3)SCLK串行时钟。时钟/RAM 的读/写数据以一个字节或多达31 个字节的字符组方式通信。DS1302 工作时功耗很低保持数据和时钟信息时功率小于1mW。

【雕爷学编程】Arduino动手做(29)---DS1302实时时钟模块2_第6张图片

2、DS1302的内部结构与功能框架图

【雕爷学编程】Arduino动手做(29)---DS1302实时时钟模块2_第7张图片
【雕爷学编程】Arduino动手做(29)---DS1302实时时钟模块2_第8张图片
3、DS1302 是由 DS1202 改进而来,增加了以下的特性:双电源管脚用于主电源和备份电源供应 Vcc1 为可编程涓流充电电源,附加七个字节存储器。它广泛应用于电话、传真、便携式仪器以及电池供电的仪器仪表等产品领域。DS1302主要性能指标:
★ 实时时钟具有能计算2100 年之前的秒、分、时、日、星期、月、年的能力,还有闰年调整的能力
★ 31 8 位暂存数据存储RAM
★ 串行 I/O 口方式使得管脚数量最少
★ 宽范围工作电压2.0-5.5V
★ 工作电流 2.0V 时,小于300nA
★ 读/写时钟或RAM 数据时,有两种传送方式,单字节传送和多字节传送字符组方式
★ 8 脚DIP 封装或可选的8 脚SOIC 封装根据表面装配
★ 简单 3 线接口
★ 与 TTL 兼容Vcc=5V
★ 可选工业级温度范围-40 +85度
★ 双电源管用于主电源和备份电源供应

4、DS1302的引脚排列
其中Vcc2为主电源,VCC1为后备电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。

RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据传送的方法。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc>2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK为时钟输入端。

【雕爷学编程】Arduino动手做(29)---DS1302实时时钟模块2_第9张图片
5、很多DS1302 存在时钟精度不高,是因为选用的晶振易受环境影响,出现时钟混乱等缺点。DS1302可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析及对异常数据出现的原因的查找具有重要意义。

传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。但是,如果在系统中采用时钟芯片DS1302,则能很好地解决这个问题。

二、DS1302时钟模块(简称RTC)
1、模块参数
(1)PCB为单面板,尺寸:44mm23mm1.6mm
(2)带4个定位孔,直径3.1mm
(3)备用电池为正品天球CR2032,电压3V,电流260mAh,非可充电电池。理论数据保持时间大于10年!
(4)晶振32.768KHz,日本原装进口晶振,匹配电容为6pF,尺寸2*6mm
(5)DS1302为8脚直插国产大芯片,芯片下面有IC座,方便更换及插拔芯片(6)模块工作电压兼容3.3V/5V,可与5V及3.3V单片机连接
(7)工作温度:0°—70°

2、模块电原理图

【雕爷学编程】Arduino动手做(29)---DS1302实时时钟模块2_第10张图片
【雕爷学编程】Arduino动手做(29)---DS1302实时时钟模块2_第11张图片

3、模块引脚

【雕爷学编程】Arduino动手做(29)---DS1302实时时钟模块2_第12张图片

DS1302时钟模块的实验环境
一、DS1302时钟模块实验所需硬件清单

DS1302时钟模块X1
TM1637四位数码管X1
Arduino Uno开发板 X1
杜邦线 若干(备了9条)
LED发光二极管(蓝色)X1
IIC/I2C 1602 LCD液晶屏模块X1
蓝色诺基亚5110 LCD液晶屏X1
Proto Shield原型扩展板(带mini面包板)X1

【雕爷学编程】Arduino动手做(29)---DS1302实时时钟模块2_第13张图片

在这里插入图片描述

你可能感兴趣的:(单片机,嵌入式硬件,物联网,c++,Arduino,DS1302实时时钟模块)