:实时时钟,是一种集成电路,通常称为时钟芯片。
1.引脚定义和应用电路
2.内部结构
寄存器定义和命令字
寄存器:其中,第一行的CH表示时钟暂停控制位,置1表示时钟暂停,置0表示时钟静止;倒数第二行的表示write protect(写保护),置1表示写入操作无效;最后一行的用于控制涓流充电,一般不进行设置。
命令字:
第0位表示读还是写(置1表示读,置0表示写);
第1-5位表示地址(秒地址为0,分钟地址为10,…);
第6位表示操作RAM还是时钟CK(置1表示操作RAM,置0表示操作CK);
第7位:固定为1;
举个例子,对时钟操作、秒地址操作、读:
(0x81)
对时钟操作、秒地址操作、写:
(0x80)
时序定义和数据读写
三个引脚: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.可调时钟代码()
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/11441.html