|
由于单片机自身定时器精度不高,导致一些需较精准定时功能的设计要借助时钟芯片来完成。现在使用较普遍的一种是DS1302芯片,并且相关教程已经非常丰富。DS1307这款芯片也不乏爱好者们使用:DS1307是I2C总线接口的日历时钟芯片,片内有8个特殊寄存器和56B的SRAM,是一种低功耗BCD码的8引脚实时时钟芯片。具体可以显示年份,月份,星期,日期,时,分,秒,具有自动调节日期功能。 本人因之前要设计一款电子时钟购得了一个DS1307的时钟模块,在网上寻找使用教程时发现大多教程都是将这个模块的驱动程序夹杂在自己的完整程序里,对于一些程序阅读能力不强的爱好者们很不友好。所以经过查询资料及实践,我将DS1307时钟模块的驱动程序整理成了一个.H文件,方便广大电子爱好者们使用。
关于这个模块的使用方法:①接线,以我的程序为例:SCL与SDA管脚分别接单片机(STC15)的P17和P16用于传输数据,SQ管脚接单片机的外部中断0(P32),DS和BAT可不管。②程序:在project里导入DS1307.H文件,main函数中调用初始化函数init(),语句“ds1307_write_date(0xd0,0x07,0x10);”使SQ引脚输出1Hz的方波;最后在主程序中写外部中断0的程序:“
Seconds=ds1307_read_date(0xd0,0);//返回函数r值秒
Minutes=ds1307_read_date(0xd0,1);
Hours=ds1307_read_date(0xd0,2);
Seconds=BCD_to_Decimal(Seconds);//BCD码转换成十进制
Minutes=BCD_to_Decimal(Minutes);
Hours=BCD_to_Decimal(Hours); ”,即每过1s就中断,从模块中读取一次时间数据。如有其他问题,欢迎在评论区讨论。
|
评分
-
查看全部评分
|