当前位置:网站首页 > 技术博客 > 正文

利用ds1302实现实时时钟设计硬件电路编写相应的软件



:实时时钟,是一种集成电路,通常称为时钟芯片。

1.引脚定义和应用电路

2.内部结构

  1. 寄存器定义和命令字

寄存器:其中,第一行的CH表示时钟暂停控制位,置1表示时钟暂停,置0表示时钟静止;倒数第二行的表示write protect(写保护),置1表示写入操作无效;最后一行的用于控制涓流充电,一般不进行设置。

命令字:

第0位表示读还是写(置1表示读,置0表示写);

第1-5位表示地址(秒地址为0,分钟地址为10,…);

第6位表示操作RAM还是时钟CK(置1表示操作RAM,置0表示操作CK);

第7位:固定为1;

举个例子,对时钟操作、秒地址操作、读:

(0x81)

对时钟操作、秒地址操作、写:

(0x80)

  1. 时序定义和数据读写

三个引脚:CE(使能端)、SCLK(时钟)和I/O(数据)。

根据时序图来写代码

①首先对DS1302进行及设置

②向DS1302芯片中一个字节,从时序图可知,需要CE使能,SCLK来一个就往芯片里写入一个数据,从低位开始写。一个字节的数据输入IO口,先取高位。一个字节的数据输入IO口,先取低位。

③从DS1302中一个字节的数据,根据时序图,需要向IO口写入一个地址数据,然后才可以从IO口中得到该地址的数据

④写一个设置DS1302时间的子函数,设置时间之前必须先关闭DS1302的芯片写保护,设置完成之后再打开芯片的写保护

⑤读取DS1302中的时间

⑥因为DS1302中的数据是以进行存储的,所以不管在设置时间或者读取时间都需要对数据进行BCD码与十进制的转换,因为我们习惯用十进制看时间。

⑦主函数


Step1:将CE置1;

Step2:命令字(I/O)发两个字节:第一个字节是命令字(先发最低位R/W),第二个字节是数据;【一位一位依次发送】

Step3:SCLK给上升沿,将命令字最低位写入单片机;

Step4:将SCLK置回0;

Step5:SCLK给上升沿,将命令字次低位写入单片机;

Step6:将SCLK置回0;

…(依次循环8次)

Step7:SCLK给上升沿,将数据最低位写入单片机;

Step8:将SCLK置回0;

Step9:SCLK给上升沿,将数据次低位写入单片机;

Step10:将SCLK置回0;

…(依次循环8次)

Step11:将CE置0;

(每个上升沿写入数据)

Step1:将CE置1;

Step2:命令字(I/O)发两个字节:第一个字节是命令字(先发最低位R/W),第二个字节是数据;【一位一位依次发送】

Step3:SCLK给上升沿,将命令字最低位写入单片机;

Step4:将SCLK置回0;

Step5:SCLK给上升沿,将命令字次低位写入单片机;

Step6:将SCLK置回0;

…(依次循环8次)

Step7:SCLK给下降沿,将数据最低位读出;

Step8:将SCLK置回0;

Step9:SCLK给下降沿,将数据次低位读出;

Step10:将SCLK置回0;

…(依次循环8次)

Step11:将CE置0;

Step12:将I/O置0;

(每个下降沿读出数据)

因此这里编写代码时需要调整顺序,对DS1302_SCLK先给0再给1,正好进行切分:

4.可调时钟代码()

  • 上一篇: 浮动静态路由
  • 下一篇: 软件发布什么意思
  • 版权声明


    相关文章:

  • 浮动静态路由2025-04-27 15:01:01
  • ipcmd命令2025-04-27 15:01:01
  • 数据库左连接和右连接2025-04-27 15:01:01
  • fastjson.2025-04-27 15:01:01
  • 自己封装系统稳定吗2025-04-27 15:01:01
  • 软件发布什么意思2025-04-27 15:01:01
  • delphi7中文版下载2025-04-27 15:01:01
  • pywin32gui使用教程2025-04-27 15:01:01
  • 微信小程序源码是什么2025-04-27 15:01:01
  • udp编程步骤2025-04-27 15:01:01