《基于DS1302与数码管方案设计书的可调数字钟》由会员分享,可在线阅读,更多相关《基于DS1302与数码管方案设计书的可调数字钟(13页珍藏版)》请在金锄头文库上搜索。
1、作者张小波之基于 DS1302 与数码管设计的可调数字钟 点名,复习1、定时器的工作方式有哪些?如何对定时器进行初始化。2、数码管动态显示技术的原理? 新课讲授2.2基于 DS1302 与数码管设计的可调数字钟前面我们用定时器产生1 秒的时间,从而也设计出了可以调节数字钟,但用这种方法设计出来的电子钟不够准确。这节课我们用美国DALLAS 公司推出的一种高性能、低功耗、带RAM 的实时时钟电路DS1302,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能。同时,我们还是用数码管作为显示时间的硬件。芯片技术资料DS1302是美国 DALLAS公司推出的一种高性能、低功耗、带RAM
2、的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V 5.5V 。采用三线接口与CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM 数据。 DS1302内部有一个318 的用于临时性存放数据的RAM 寄存器。 DS1302是 DS1202的升级产品,与DS1202 兼容,但增加了主电源/ 后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。 DS1302 的外部引脚分配如图 1 所示及内部结构如图 2 所示。 DS1302 用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录
3、,因此广泛应用于测量系统中。图 1 DS1302 引脚图2DS1302 内部结构1、引脚功能及结构DS1302 的引脚排列,其中 Vcc1 为后备电源, VCC2 为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。 DS1302 由 Vcc1 或 Vcc2 两者中的较大者供电。当 Vcc2 大于 Vcc1 0.2V 时, Vcc2 给 DS1302 供电。当 Vcc2 小于 Vcc1时, DS1302 由 Vcc1 供电。 X1 和 X2 是振荡源,外接 32.768kHz 晶振。 RST 是复位 /片选线,通过把 RST 输入驱动置高电平来启动所有的数据传送。 RST 输入有两种功能:
4、 首先, RST 接通控制逻辑, 允许地址 /命令序列送入移位寄存器; 其次, RST 提供终止单字节或多字节数据的传送手段。 当 RST 为高电平时, 所有的数据传送被初始化, 允许对 DS1302 进行操作。如果在传送过程中RST 置为低电平,则会终止此次数据传送,I/O 引脚变为高阻态。上电运行时,在Vcc2.5V 之前, RST1作者张小波必须保持低电平。只有在SCLK 为低电平时,才能将RST 置为高电平。 I/O 为串行数据输入输出端(双向 ) ,SCLK 始终是输入端。2 、DS1302 的寄存器和控制命令对 DS1302 的操作就是对其内部寄存器的操作, DS1302 内部共有
5、 12 个寄存器, 其中有 7 个寄存器与日历、 时钟相关,存放的数据位为 BCD 码形式。小时寄存器( 85h 、 84h )的位 7用于定义 DS1302是运行于12 小时模式还是24 小时模式。当为高时,选择 12小时模式。在 12 小时模式时,位 5 是,当为 1 时,表示 PM ,当为 0 时,表示 AM 。在 24 小时模式时,位5 是第二个 10小时位。秒寄存器( 81h 、80h )的位 7 定义为时钟暂停标志(CH)。当该位置为1 时,时钟振荡器停止,DS1302 处于低功耗状态;当该位置为0 时,时钟开始运行。控制寄存器( 8Fh 、8Eh )的位 7是写保护位( WP )
6、,其它7 位均置为0 。在任何的对时钟和 RAM 的写操作之前,WP 位必须为 0。当 WP 位为 1 时,写保护位防止对任一寄存器的写操作。日历、时间寄存器及控制字如表1 所示:表 1日历、时钟寄存器与控制字对照表76543210寄存器名称1RAM/CKA4A3A2A1A0RD/W秒寄存器10000000/1分寄存器10000010/1小时寄存器10000100/1日寄存器10000110/1月寄存器10001000/1星期寄存器10001010/1年寄存器10001100/1写保护寄存器10001110/1慢充电寄存器10010000/1时钟突发寄存器10101110/1最后一位RD/W
7、为“0时”表示进行写操作,为“1时”表示读操作。此外, DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM 相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。DS1302 内部的 RAM 分为两类,一类是单个RAM 单元,共 31 个,每个单元为一个8 位的字节,其命令控制字为 COHFDH ,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM ,此方式下可一次性读写所有的RAM的 31 个字节,命令控制字为FEH (写)、 FFH (读)。表 2 DS1302内部主要寄存器分布表寄存器名称命令字取值范围寄存器定义写读76543210秒
8、寄存器80H81H00-59C10 SECSECH分寄存器82H83H00-59010 MINMIN小时寄存器84H85H01-12 或 00-2312/24010HHRA/PR2作者张小波日寄存器86H87H01-28 ,29 ,30 ,010 DATEDATE31月寄存器88H89H01-1200010MMONTH星期寄存器8AH8BH01-070000DAY年寄存器8CH8DH00-9910yearyear写保护寄存器8EH8FHWP0000000慢充电寄存器90H91HTCSTCSTCSTCSDSDSDSDS我们现在已经知道了控制寄存器和RAM 的逻辑地址,接着就需要知道如何通过外部接
9、口来访问这些资源。单片机是通过简单的同步串行通讯与DS1302通讯的,每次通讯都必须由单片机发起,无论是读还是写操作, 单片机都必须先向DS1302写入一个命令帧,这个帧的格式如图3 所示,最高位BIT7 固定为 1 ,BIT6 决定操作是针对RAM 还是时钟寄存器,接着的5 个 BIT 是 RAM 或时钟寄存器在DS1302 的内部地址,最后一个BIT 表示这次操作是读操作抑或是写操作。DS1302是 SPI 总线驱动方式。 它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。要想与 DS1302通信,首先要先了解DS1302 的控制字。 DS1302的控制字如图3 所示。控制字节的最高
10、有效位(位 7) 必须是逻辑1,如果它为 0 ,则不能把数据写入DS1302 中,位 6 如果为 0,则表示存取日历时钟数据,为 1 表示存取 RAM 数据;位 5 至位 1(A4 A0 )指示操作单元的地址;最低有效位 (位 0) 如为 0 表示要进行写操作, 为 1 表示进行读操作,控制字节总是从最低位开始输出。图 3 命令字节格式在控制指令字输入后的下一个SCLK 时钟的上升沿时,数据被写入DS1302 ,数据输入从低位即位0 开始。同样,在紧跟 8 位的控制指令字后的下一个SCLK 脉冲的下降沿读出DS1302 的数据,读出数据时从低位0 位到高位7。数据读写时序如图4。图4-1单字节
11、读时序图4-2单字节写时序物理上, DS1302 的通讯接口由3 个口线组成,即RST ,SCLK ,I/O 。其中 RST 从低电平变成高电平启动一次数据传输过程, SCLK 是时钟线, I/O 是数据线。具体的读写时序参考图4,但是请注意,无论是哪种通讯类型的串行接口,都是对时钟信号敏感的,而且一般数据写入有效是在上升沿,读出有效是在下降沿(DS1302 正是如此的,但是在芯片手册里没有明确说明),如果不是特别确定,则把程序设计成这样:平时SCLK保持低电平,在时钟变动前设置数据,在时钟变动3作者张小波后读取数据,即数据操作总是在SCLK 保持为低电平的时候,相邻的操作之间间隔有一个上升沿和一个下降沿。3 调试中问题说明(1) DS1302 与微处理器进行数据交换时, 首先由微处理器向电路发送命令字节, 命令字节最高 MSB(D7) 必须为逻辑1,如果 D7=0 ,则禁止写 DS1302 ,即写保护; D6=0 ,指定时钟数据, D6=1 ,指定 RAM 数据; D5 D1 指定输入或输出的特定寄存器;最低位 LSB(D0) 为逻辑 0,指定写操作 ( 输入 ),