当前位置:首页 > 技术学院 > 技术前线
[导读]51单片机学习笔记———13.1DS1302实时时钟原理部分

DS1302实时时钟

芯片原理图:


引脚图:


需要注意的是,VCC1跟VCC2都外接了电容,只是容量不一样,同常备用电源VCC2的电容值是VCC1电容值的100倍,这也不难理解,如果断电,VCC2将能够提供较长一段时间的电力。

VCC1(主电源)-----------过滤滤波作用

VCC2(备用电源)--------断电时放电提供电力

X1与X2引脚接上晶振以获取实时时间


各种不同的引脚有着不一样的作用,我们在这里只介绍了一些特殊引脚,如有所需,请自行查阅官方数据手册。

DS1302内部有8个寄存器,分别掌管着秒,分,时,天,星期,月,年还有一个写入保护。

我们将依次介绍,首先看原理图:



寄存器0:


“Bit7”中的“CH”位表示时钟开始计时,1表示时钟停止计时。

“Bit4~Bit6”表示秒的十位

“BIt0~Bit3”表示秒的个位

寄存器1:


“Bit4~Bit6”表示分钟的十位

“Bit0~Bit3”表示分钟的个位

寄存器2:


Bit7:

1:代表12小时制,分上午和下午

2:代表24小时制

Bit5:当表示为12小时制的时候:

0:表示上午

1:表示下午

Bit4:与BIt5一起用,表示小时的十位

寄存器7:


Bit7:写保护位,如果是1,则禁止写入数据。

数据在时钟芯片中存储形式为”BCD”码,假如我们要在数码管上显示数字“59”,那么我们将分别显示“5”和“9”在不同的数码管上,因为数据中单片机内部是二进制形式,也就是说要么是0要么是1。


我们在计算机上显示的数字其实对应的有ASCII码表值。


时序图:




上升箭头指的是DS1302

单字节写/读操作时序图:

第一个字节:通过写的方式指明对哪个寄存器进行读写操作

第二个字节:读写的数据

写操作:

单片机----》数据-----》`I/O`口----`DS1302`

1

读操作:

`DS1302`----》数据-----》`I/O`口----单片机

1

写操作:

写操作的时候单片机向I/O口发送的数据是二进制,所以要检测I/O口的电平状态,判断是低还是高

写操作是在SCLK低电平时单片机将数据放在I/O口上,当SCLK上升沿时,DS1302读取

void DS1302Write(unsigned int reg,unsigned int data)

{

unsigned char detect;

DS1302RST = 1;//只有高电平才能触发

for(detect = 0x01;detect!=0;detect<<=1)//写地址

{

if((detect®)!=0)

{

DS1302DAT = 1;

}

else

{

DS1302DAT = 0;//IO状态

}

DS1302CK = 1;

delay();

DS1302CK = 0;

delay();

}

for(detect = 0x01;detect!=0;detect<<1)//写地址

{

if((detect&data)!=0)

{

DS1302DAT = 1;//IO口状态

}

else

{

DS1302DAT = 0;

}

DS1302CK = 1;

dalay();

DS1302CK = 0;

delay();

}

}

读操作:

读操作是单片机对I/O口的状态进行判断,是单片机读取DS1302发送到I/O口的二进制数据 所以要挨个对I/O口的高低进行判断

读操作是在SCLK高电平时DS1302放数据到I/O上,将SCLK置为低电平时,单片机就可以从I/O口上读取数据

unsigned int DS1302Read(unsigned int addr)//只写入地址

{

DS1302RST = 1;//打开总开关

unsigned int detect;

unsigned int dat = 0;

for(detect = 0x01;detect!=0;detect<<=1)//写地址

{

if((detect&addr)!=0)

{

DS1302DAT = 1;

}

else

{

DS1302DAT = 0;

}

DS1302CK = 1;

delay();

DS1302CK = 0;

delauy();

}

for(detect = 0x01;detect!=0;detect<<=1)

{

if(DS1302DAT!=0)

{

dat|=detect;//

}

DS1302CK = 1;//拉高

delay();

DS1302CK = 0;//拉低完成一位发送

delay();

}

DS1302RST = 0;//总电平置低完成发送

return dat;//返回数据

}

总结:

单片机对DS1302的读写操作

其实就是单片机对I/O口状态的判断

然后进行第二条总线的拉高和拉低

————————————————

版权声明:本文为CSDN博主「Mr.YunLong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_44486550/article/details/104610124

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

香港2022年7月7日 /美通社/ -- 寿康集团有限公司(“寿康集团”或“本公司”及其附属公司,统称“本集团”;股份代号:0575.HK)旗下全资附属公司、并以香港为基地的人工智能创新公司及衰老与长寿深层生物...

关键字: 时钟 VI GE EV

文章转自知乎[MIPI自学笔记],作者IEEE1364https://zhuanlan.zhihu.com/p/926820471 MIPI概述MIPI是MobileIndustryProcessorInterface的...

关键字: MIPI LAN 数据流 时钟

1、为设计执行综合时使用的各种设计约束是什么?1.1、创建时钟(频率、占空比)。1.2、定义输入端口的transition-time要求1.3、指定输出端口的负载值1.4、对于输入和输出,指定延迟值(输入延迟和输出延迟)...

关键字: 数字芯片 时钟 WIRE CK

如今,SoCs正变得越来越复杂,数据经常从一个时钟域传输到另一个时钟域。上图信号A由C1时钟域触发,被C2时钟域采样。根据这两个时钟之间的关系,在将数据从源时钟传输到目标时钟时,可能会出现不同类型的问题,并且这些问题的解...

关键字: 时钟 触发器 同步器 SETUP

本文主要介绍各种类型的跨时钟域问题。同步时钟是指具有已知相位和频率关系的时钟。这些时钟本质上是来自同一时钟源。根据相位和频率关系,可分为以下几类:具有相同频率和零相位差的时钟具有相同频率和固定相位差的时钟具有不同频率和可...

关键字: 异步 时钟 相位差 SETUP

跨时钟域验证可分为结构验证和功能验证两类。结构验证确保在需要的地方添加了适当的同步逻辑。功能验证确保已添加的逻辑实现了预期的功能。仅通过执行结构验证,就可以检测到许多CDC问题。这些检查比功能验证更简单、更快。因此,验证...

关键字: 时钟 数据传输 信号 TE

来源:射频百花谭规范很重要工作过的朋友肯定知道,公司里是很强调规范的,特别是对于大的设计(无论软件还是硬件),不按照规范走几乎是不可实现的。逻辑设计也是这样:如果不按规范做的话,过一个月后调试时发现有错,回头再看自己写的...

关键字: VERILOG 时钟 计数器 仿真验证

中断服务程序

关键字: 时钟 中断程序

首先通过按“校时、校分、校星期”等按键,校对好时间。 先检查时钟显示是否当前时间一致,如需重新校准,在按住“时钟”键的同时,分别按住“校星期”、“校时”、“校分”键,将时钟调到当前准确时间。

关键字: 自动开关定时器 时钟

出品21ic论坛qbwww网站:bbs.21ic.com做一个桌面时钟大家好,我是qbwww,今天我们来做一个桌面时钟。淘宝买的套件。首先呢,我们先看一下原理图,简单的了解一下连线方式。简单的了解了一下连线的方式呢,我们...

关键字: 时钟
关闭
关闭