插手珍藏夹

手把手教你使用PIC单片机做DS1302数字钟测验考试(C言语版)——站长原创,如需引用请说明出处

    在良多单片机系统中都要求带有及不时钟电路,如最常见的数字钟、钟控设备、数据记实仪表,这些仪表往往需要采集带时标的数据,同时一般它们也会有一些需要保留起来的次要数据,有了这些数据,便于用户后期对数据进行察看、阐发。本末节就引见市道上常见的时钟芯片DS1302的使用。DS1302是美国DALLAS公司推出的一款高机能、低功耗、带内部RAM的及不时钟芯片(RTC),也便是一种能够大概为单片机系统供给日期和时间的芯片。经由本末节的进修,咱们将会把RTC相关的一些技术粗略引见一下,然后引见DS1302与单片机之间的软硬件使用。

1、
及不时钟(RTC)简介

    及不时钟芯片的次要功能是完成年、月、周、日、时、分、秒的计时,经由外部接口为单片机系统供给日历和时钟,所以一个最根底的及不时钟芯片凡是会具有如下的一些部件:电源电路、时钟信号发生电路、及不时钟、数据存储器、通信接口电路、节制逻辑电路等,同时大部门的RTC又一次会供给一些额外的RAM。


9-35 RTC的根底构成

    若是间接把持单片机的按时器,是不是也能够用软件本人来写时钟、日过法式?是的,可是会有几个问题,起首为了使时钟不至于停走,就得在停电时给单片机供电,而相对RTC来说,单片机的功耗大良多,电池往往无法长时间工作;其次单片机计时的精确度比力差,凡是很难达到需要的精度,因而今朝RTC的使用曾经很是遍及。
    由于在需要RTC的场所一般不答应时钟停走,所以即便在单片机系统停电的时候,RTC也必需能一般工作,因而一般都需要电池供电,同时考虑到电池使用寿命,所以有不少RTC把电源电路设想成能够大概按照主电源电压主动切换的形式,主动切换RTC使用主电源或备用电池,即当断电的时候,后备电池能够大概主动给RTC供电,而像DS1302又一次添加了电池充电电路,用来对可充锂电池充电。
    综上所述,RTC电路的次要特点是功耗低,精度高。那么,RTC在使用过程中是若何节制精度的呢?一般,RTC都使用32768Hz的晶振,本身误差小(5PPM~20PPM),同时良多设备在生产过程中对这个频次进行过校准,次要方式便是改变两个从晶振引脚到地的电容值的大小,经由测试RTC输出的秒信号的频次,然后把电容改成合适的数值,使精度节制在合理的范畴里,当然今朝也有些时钟芯片在片内内置了电容阵列,能够主动调整。影响精度又一次有别的一个缘由,便是温度,因而有良多产物在采用无内置温补电路的时候,会使用软件对计时进行温度弥补。当然,此刻也有些RTC内置了温度弥补,以至又一次可认为系统供给环境温度值。
    咱们最多见到的RTC可能是DS1302和DS12887了,当然其实又一次有良多其它的同类产物,下面按功能不合对几个也比力常见的RTC予以简单的比力。
一些常用RTC的功能比力


RTC型号

生产商

接口编制

晶振内置

弥补编制

温度弥补

电池内置

充电电路

报警输出

DS12887

DALLAS

并行

DS1302

DALLAS

串行

DS3231

DALLAS

串行

硬件

RX8025

EPSON

串行

软件

PCF8563

PHILIPS

串行

2、DS1302时钟芯片简介

    DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个及不时钟/日历和31字节静态RAM,能够经由串行接口与单片机进行通信。及不时钟/日历电路供给秒、分、时、日、礼拜、月、年的消息,每个月的天数和闰年的天数可主动调整,时钟操作可经由AM/PM标记位决定采用24或12小不时间格局。DS1302与单片机之间能简单地采用同步串行的编制进行通信,仅需三根I/O线:复位(RST)、I/O数据线、串行时钟(SCLK)。时钟/RAM的读/写数据以一字节或多达31字节的字符组编制通信。DS1302工作时功耗很低,保持数据和时钟消息时,功耗小于1mW。DS1302次要机能如下:
及不时钟具有能算计2100年之前的秒、分、时、日、礼拜、月、年的才能及闰年调整的才能。
31*8位暂存数据存储RAM。
串行I/O口编制,管脚数量少。
宽电压工作范畴:2.0V~5.5V。
工作电流:2.0V时小于300nA。
读/写时钟或RAM数据时,有两种传送编制:单字节传送和多字节传送。
8脚DIP封装或SOIC封装

3、DS1302的内部布局

    DS1302的外部引脚功能申明如下:



9-36 DS1302封装图

X1,X2

32.768kHz晶振引脚

GND

RST

复位

I/O

数据输入/输出

SCLK

串行时钟

VCC1

电池引脚

VCC2

主电源引脚

    DS1302的内部布局如图9-37所示,次要构成部门为:移位寄放器、节制逻辑、振荡器、及不时钟以及RAM。虽然数据分成两种,可是对单片机的法式而言,其实是一样的,便是对特定的地址进行读写操作。


9-37 DS1302的内部布局图

    DS1302含充电电路,能够对作为后备电源的可充电电池充电,并可选择充电使能和串入的二极管数目,以调理电池充电电压。不外对咱们今朝而言,最需要熟悉的是和时钟相关部门的功能,对于其它参数请参阅数据手册。
4、DS1302工作道理

    DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和号令消息装入移位寄放器。数据在时钟(SCLK)的上升沿串行输入,前8位指定拜候地址,号令字装入移位寄放器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。时钟脉冲的个数在单字节编制下为8+8(8位地址+8位数据),在多字节编制下为8加最多可达248的数据。
5、DS1302的寄放器和节制号令

    对DS1302的操作便是对其内部寄放器的操作,DS1302内部共有12个寄放器,此中有7个寄放器与日历、时钟相关,存放的数据位为BCD码形式。此外,DS1302又一次丰年份寄放器、节制寄放器、充电寄放器、时钟突发寄放器及与RAM相关的寄放器等。时钟突发寄放器可一次性挨次读写除充电寄放器以外的寄放器。日历、时间寄放器及节制字如下表所示:

日历、时钟寄放器与节制字对照表


寄放器名称

7

6

5

4

3

2

1

0

1

RAM/CK

A4

A3

A2

A1

A0

RD/W

秒寄放器

1

0

0

0

0

0

0

 

分寄放器

1

0

0

0

0

0

1

 

小时寄放器

1

0

0

0

0

1

0

 

日寄放器

1

0

0

0

0

1

1

 

月寄放器

1

0

0

0

1

0

0

 

礼拜寄放器

1

0

0

0

1

0

1

 

年寄放器

1

0

0

0

1

1

0

 

写庇护寄放器

1

0

0

0

1

1

1

 

慢充电寄放器

1

0

0

1

0

0

0

 

时钟突发寄放器

1

0

1

1

1

1

1

 

较后一位RD/W为“0”时暗示进行写操作,为“1”时暗示读操作。
DS1302内部寄放器列表如下所示:

DS14302
内部次要寄放器分布表


寄放器名称

号令字

取值范畴

各位内容

7

6

5

4

3

2

1

0

秒寄放器

80H

81H

00-59

CH

10SEC

SEC

分寄放器

82H

83H

00-59

0

10MIN

MIN

小时寄放器

84H

85H

01-12或00-23

12/24

0

A

HR

HR

日期寄放器

86H

87H

01-28,29,30,31

0

0

10DATE

DATE

月份寄放器

88H

89H

01-12

0

0

0

10M

MONTH

周寄放器

8AH

8BH

01-07

0

0

0

0

0

DAY

年份寄放器

8CH

8DH

00-99

10YEAR

YEAR

    DS1302内部的RAM分为两类,一类是单个RAM单元,共31个,每个单元为一个8位的字节,其号令节制字为COH~FDH,此中奇数为读操作,偶数为写操作;再一类为突发编制下的RAM,此编制下可一次性读写所有的RAM的31个字节,号令节制字为FEH(写)、FFH(读)。
    咱们此刻曾经晓患了节制寄放器和RAM的逻辑地址,接着就需要晓得若何经由外部接口来拜候这些本钱。单片机是经由简单的同步串行通信与DS1302通信的,每次通信都必需由单片机倡议,无论是读仍是写操作,单片机都必需先向DS1302写入一个号令帧,这个帧的格局如表X-X所示,较高位BIT7固定为1,BIT6决定操作是针对RAM仍是时钟寄放器,接着的5个BIT是RAM或时钟寄放器在DS1302的内部地址,较后一个BIT暗示此次操作是读操作抑或是写操作。
    物理上,DS1302的通信接口由3个口线构成,即RST,SCLK,I/O。此中RST从低电平变成高电平启动一次数据传输过程,SCLK是时钟线,I/O是数据线。具体的读写时序参考图4,可是请留意,无论是哪种同步通信类型的串行接口,都是对时钟信号敏感的,并且一般数据写入无效是在上升沿,读出无效是鄙人降沿(DS1302恰是如斯的,可是在芯片手册里没有大白申明),若是不是出格确定,则把法式设想成多么:日常普通SCLK保持低电平,在时钟变动前设置数据,在时钟变动后读取数据,即数据操作老是在SCLK保持为低电平的时候,相邻的操作之间间隔有一个上升沿和一个下降沿。


9-38 DS1302的号令字布局

6、
DS1302的软硬件设想实例

    本例将完成对DS1302的读写操作,将时钟数据在LED数码管上显示出来。调试时将功能选择开关调到DS1302的情况上。


上图为 加强型PIC测验考试板DS1302接口部门道理图


加强型PIC测验考试板上电后起头计时,数字电子钟起头运转了。


当前时间为:12:30:45


当前时间为:12:30:52


当前时间为:12:31:02