51单片机学习笔记———13.1DS1302实时时钟原理部分

发布者:云淡风轻2014最新更新时间:2022-06-08 来源: eefocus关键字:51单片机  DS1302  实时时钟 手机看文章 扫描二维码
随时随地手机看文章

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`


读操作:


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


写操作:

写操作的时候单片机向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口状态的判断

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

关键字:51单片机  DS1302  实时时钟 引用地址:51单片机学习笔记———13.1DS1302实时时钟原理部分

上一篇:51单片机学习笔记———13.2DS1302实时时钟代码部分(1)
下一篇:51单片机学习笔记———12.1模拟法用于串口通信

推荐阅读最新更新时间:2024-11-02 20:55

8051单片机时钟电路的构成
  CPU 的功能,总的来说,就是以不同的方式,执行各种指令。不同的指令其功能各异。有的指令涉及到 CPU 各寄存器之间的关系;有的指令涉及到单片机核心电路内部各功能部件的关系;有的则与外部器件(如外部存储器)有关系。 CPU 是通过复杂的时序电路完成不同的指令功能的。   事实上,控制器按照指令的功能发出一系列在时间上有一定次序的电脉冲信号,控制和启动一部分逻辑电路,完成某种操作。在什么时刻发出什么控制信号,去启动何种部件动作,这就是 CPU 的时序。 CPU 芯片设计一旦完成, 时序 就固定了,因而时序问题是 CPU 的核心问题之一。时钟可看成是主频,时序可看成是完成一个操作各部分电路产生的脉冲对照图。   一、振荡器和时钟电路
[单片机]
80<font color='red'>51单片机</font>时钟电路的构成
51单片机解码的12通道315M遥控器DIY
N久前作的一个遥控插座,通过单片机进行12通道解码。 原理图 PCB 内部结构 面板:红色指示灯为巡检指示灯,绿色指示灯为通道工作指示灯。 程序代码: #include REG51.H sfr WDT_CONTR=0xe1;//看门狗初始化 #define uchar unsigned char #define uint unsigned int #define uint unsigned int sbit run=P3^7; sbit out=P3^2; sbit out1=P3^3; sbit out2=P3^4; sbit out3=P3^5; bit bzw; bit bzw1; bit b
[单片机]
用<font color='red'>51单片机</font>解码的12通道315M遥控器DIY
简单MCS-51单片机程序指令、寻址方式及结果分析
在MCS-51单片机的片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。请说明下面各是什么指令和寻址方式,以及每条指令执行后目的操作数的结果。 MOV A,40H ;数据传送,直接寻址,(A)=48H MOV R0,A ;数据传送,寄存器寻址,(R0)=48H MOV P1,#0FH ;数据传送,立即数寻址,(P1)=0FH MOV @R0,30H ;数据传送,直接寻址,(48H)=38H MOV DPTR,#1234H ;数据传送,立即数寻址,(DPTR)=1234H MOV 40H,30H ;数据传送,直接寻址,(40H)=38H MOV R0,38H ;数据传送,
[单片机]
C51单片机学习笔记之LED
简介 LED就是一个发光二极管,没啥好说的。唯一 一点就是低电平有效! 原理图 代码部分 #include REGX52.H void delay() { unsigned int i; for(i=0;i 30000;i++); } main() { unsigned int i; unsigned char J; while(1) { /*P0=0xFE; delay(); P0=0xFD; delay(); P0=0xFB; delay(); P0=0xF7; delay(); P0=0xEF; delay(); P0=0x
[单片机]
C<font color='red'>51单片机</font>学习笔记之LED
构造一个51单片机的实时操作系统
摘 要:从Keil C51的内存空间管理方式入手,着重讨论实时操作系统在任务调度时的重入问题,分析一些解决重入的基本方式与方法:分析实时操作系统任务调度的占先性,提出非占先的任务调度是能更适合于Keil C51的一种调度方式。为此,构造这一实时操作系统,并有针对性地介绍此系统的堆管理方法、任务的建立以厦任务的切换等。 关键词:51单片机 实时操作系统 任务重八调度 目前,大多数的产品开发是在基于一些小容量的单片机上进行的。51系列单片机,是我国目前使用最多的单片机系列之一,有非常广大的应用环境与前景,多年来的资源积累,使51系列单片机仍是许多开发者的首选。针对这种情况,近几年涌现出许多基于51内核的扩展芯片,功能越来越齐全,速
[单片机]
利用51单片机启动三相星形电机的程序设计
  一、要求   当按下SB1键时,电机进入预启动状态,经30s短延时后进入正式启动,且不管电路工作在何种状态,只要按下SB2电机就停止,再按SB1电机又重新启动,并要求具有30s倒计时显示及电路状态显示。      二、单片机系统应具功能      根据要求,单片机系统应该具有以下功能:      1、按下SB1后,KMM、KMY闭合,延时30s后,KMY断开、KM△闭合;      2、按下SB2后,KMM、KM△及KMY均断开,且进入待机状态;      3、有30s倒计时数码管显示;      4、每种电路状态有对应的发光二极管指示。      三、软硬件设计        电路如上图、下图所示。KMM和下图中的KMY、K
[单片机]
利用<font color='red'>51单片机</font>启动三相星形电机的程序设计
51单片机矩阵式键盘的编程方法
根据电路原理图,键盘扫描方法是:行线P1O~P13为输出线,列线P14~P17为输入线。一开始单片机将行线(P1O-P13)全部输出低电平,此时读入列线数据,若列线全为高电平说明没有键接下,若有列线为低电平则调用延时程序来去除按键抖动。延时后再读入列线看是否有低电平,如果列线数据还是有低电平,说明确实有键接下,接下来便是确定键值。下面以第二行的S5键为例,看接下S5后我们应该怎么得到这个键值。当判定确实有键接下之后,将行线轮流置为低电平,根据读入列线的数据可以确定键值。首先,单片机将P1O置为低电平,P11~P13置为高电平,此时读出的列线数据全为高电平,说明第一行没有键接下;接着单片机将P11输出低电平,P1O、P12、P13置
[单片机]
<font color='red'>51单片机</font>矩阵式键盘的编程方法
51单片机驱动ADC0832模数转换程序-lcd1602显示
/*这个芯应用不多*/ #include reg51.h #define uchar unsigned char #define uint unsigned int uchar Chan0Value,Chan1Value; sbit RS=P1^0; //1602各控制脚 sbit RW=P1^1; sbit EN=P1^2; sbit Cs0832= P2^0; //0832各控制脚 sbit Clk0832= P3^6; sbit Di0832= P3^7; sbit Do0832= P3^7; void delay1ms(unsigned int ms)//延时1毫秒(不够精确的) { int i,j; for(
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved