Randy 发表于 2012-4-25 16:19:22

arduino学习笔记38 - Arduino + DS1307 RTC时钟模块与经典总结

本帖最后由 Randy 于 2013-3-15 09:51 编辑


之前遇到了问题,也一直没头绪,没办法解决,经过查阅了相关的资料和论坛里朋友们的回答,于是今天经过测试把问题都解决掉了,这个问题,就是DS1307模块不能正常显示的问题,我手上有一块单独的DS1307模块,不像之前弘毅站长写的那个帖子,他里面还包含了DS18B20、EEPROM的功能在里面,我写这个帖子的目的是为了初学者手上只有DS1307而没有DS18b20或者是没有EEPROM模块的。这时候就是单纯的找这样的帖子,今天我花点时间来整理一下。毕竟总结才会让我记得深刻或者方便以后不记得了而查阅方便吧,希望老鸟们和菜鸟们都喜欢,不喜欢可以指出哦。毕竟我知识有限,慢慢学习吧!

进入正题:


描述:
是一款低功耗,具有56字节非失性RAM的全BCD码时钟日历实时时钟芯片,地址和数据通过两线双向的串行总线的传输,芯片可以提供秒,分,小时等信息,每一个月的天数能自动调整。并且有闰年补偿功能。AM/PM 标志位决定时钟工作于24小时或12小时模式,芯片有一个内置的电源感应电路,具有掉电检测和电池切换功能。


特点:

可对秒,时,分,每月的天数,月份,每周的天数进行记数,并具有闰年补偿功能。记年上线2100。   
56字节非失性的RAM   
两线串行接口   
可编程方波输出   
自动掉电检测和切换电路   
在电池备份模式下,功耗小于500nA   
工业级的工作温度: -40 到80   
8脚DIP和SOIC封装


主要参数:

存储器配置:64 x 8Bit   
电源电压范围:4.5V to 5.5V   
芯片封装类型:DIP   
针脚数:8   
工作温度范围:0°C to +70°C   
封装类型:DIP   
工作温度最低:0°C   
工作温度最高:70°C   
中断类型:全天时间   
器件标号:1307   
器件标记:DS1307+   
存储器容量:56 bytes   
存储器类型:RAM   
接口类型:Serial, I2C   
时钟频率:32.768kHz   
温度范围:商用   
特点:方波输出   
电压, Vcc 最大:5V   
电源电压 最大:5.5V   
电源电压 最小:4.5V   
类型:RTC   
芯片标号:1307   
表面安装器件:通孔安装   
输出数:1


以上是DS1307的要点,写下来介绍一下它的连接方法。




这个是我的实际产品,采用的是IIC接法方式,和Arduino连接是非常方便简单的!




连接方法是:

DS1307的SCL接Arduino(A5), SDA接Arduino(A4),剩下的就是VCC与GND对接起来即可,电压选择的是5V的。


连接好以后,我们来看一下代码,因为器件采用的是IIC通信方式,所以写代码也是比较容易得。

主要代码如下:#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);// set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
lcd.init();                      // initialize the lcd

// Print a message to the LCD.
lcd.backlight();
lcd.print("www.geeetech.com!");
}

void loop()
{
}通过以上的讲解,你可能对DS1307时钟芯片有一些大概的了解了,但是我们在使用过程中,难免会出现问题的情况,我自己也总结了一些方法,现在也写出来给大家看看,借鉴借鉴,如有不妥,务必提出,谢谢!

经过一段时间的总结,发现了问题所在,先告诉大家是怎么解决的。我试了25个板子,都可以进行工作了。

我总结一下解决方法的可能性!
第一: 确保您DS1307模块上的4.7K电阻是否接入电路当中。
第二: 查看一下您的掉电给电的纽扣电池是否插入电池座里。(这个原因不是很明确,但是在我没插电池时,有些模块测试不行,一旦确保电路接入4.7K电阻和电池时,完全可以工作了)!

第三: 查看一下电路连接是否正确,电路连接很简单,4根线。(VCC、GND、SCL、SDA)

第四: 如果发现在IDE编译程序时,不能成功,那就是可能是自己的操作不当或者不会操作(比如是不会把express 放入libraries所导致编译的错误,方法请参照本论坛的相关帖子,谢谢)!

只要确保以上的步骤是正确的,那应该会没什么困难的进行工作,如果还有一个问题,那就是PCB板本身存在的问题咯。


如果大家还有什么问题,可以回帖一起学习哦!分享快乐!


顺便把所用到的libraries也贴出来,目的是为了让大家不费劲的去找,爱上我们这样国内比较全面的论坛,谢谢!





这个是正确的库,之前那个少了一个.H文件,不好意思哈!

zintiger 发表于 2012-12-22 10:33:31

zintiger 发表于 2012-12-21 20:18 static/image/common/back.gif
用你的这个代码,编译上传成功,但运行时显示全是F,郁闷呢。

问题找到了,同时发生两个问题。一是接线问题,我用的是Leonardo板,本身就有SCL和SDA针,而之前的几乎所有例题都是针对UNO的,使用A4和A5接SCL,SDA。通过查阅官方网站上的手册,发现了这个问题。第二,硬件问题,满以为问题解决了,可还是不行。检查之:模块上的电池座做工粗糙些,拿下电池竟然OK了,原来是电池触点影响的,重新装,好了。希望我的经验能对网友有所帮助。

wing 发表于 2012-4-25 19:56:27

本帖最后由 wing 于 2012-4-25 19:58 编辑

sha fa~~~~~

上面您说到的"产品",您意思是您有这个东西出售?

Randy 发表于 2012-4-25 22:40:27

wing 发表于 2012-4-25 19:56 static/image/common/back.gif
sha fa~~~~~

上面您说到的"产品",您意思是您有这个东西出售?

呵呵,你需要吗?这个淘宝上有销售的哦!

xhm0924 发表于 2012-4-26 10:09:30

刚到这里来学习Arduino,可惜权限不够下载不到!

Randy 发表于 2012-4-26 14:46:23

xhm0924 发表于 2012-4-26 10:09 static/image/common/back.gif
刚到这里来学习Arduino,可惜权限不够下载不到!

好像去掉了吧,你再看一下是否能下载,欢迎常驻本论坛,好东西还在后头呢!;P

幻生幻灭 发表于 2012-5-10 15:02:51

最近正在惦记做个小时钟玩玩,谢谢分享

幻生幻灭 发表于 2012-5-10 15:03:18

求 淘宝观摩地址~

Randy 发表于 2012-5-10 18:24:27

幻生幻灭 发表于 2012-5-10 15:03 static/image/common/back.gif
求 淘宝观摩地址~

不是淘宝的,网站来的,这样就不怎么划算了!

Randy 发表于 2012-5-18 22:26:25

bg7idj 发表于 2012-5-18 12:32 static/image/common/back.gif
能给个用5110显示的程序?谢谢!

http://www.geek-workshop.com/forum.php?mod=viewthread&tid=713这个帖子有两个程序你自己去琢磨吧!

acdc0616 发表于 2012-5-20 20:08:32

有木有连接电路图啊, 是不是用1602 做显示的,如果是怎么调整时间,谢谢指教一二。

Randy 发表于 2012-5-20 22:29:44

本帖最后由 Randy 于 2012-5-20 22:30 编辑

acdc0616 发表于 2012-5-20 20:08 static/image/common/back.gif
有木有连接电路图啊, 是不是用1602 做显示的,如果是怎么调整时间,谢谢指教一二。

DS1307的SCL接Arduino(A4), SDA接Arduino(A5),剩下的就是VCC与GND对接起来即可,电压选择的是5V的。不是用LCD1602显示的哦,是用arduino的串口监视窗口查看的,用LCD1602显示的话,不需要什么调整,你只需要添加1602的相应指令即可!

lionelg 发表于 2012-5-22 14:00:25

examples里面的东西貌似都不能直接编译, 错误提示no matching function for call to 'DS1307::DS1307(int, int)'
在Uno, Duemilanove, Mega均不行,请教原因。

Randy 发表于 2012-5-22 15:22:44

lionelg 发表于 2012-5-22 14:00 static/image/common/back.gif
examples里面的东西貌似都不能直接编译, 错误提示no matching function for call to 'DS1307:S1307(int ...



看我的编译是正常的呀,请问您是否把下载下来的整个文件夹放到了arduino IDE里的libraries了呢?

lionelg 发表于 2012-5-22 17:42:28

放了,rtc编译正常,其他的不行,比如lcd1602的那个

Randy 发表于 2012-5-22 18:39:39

lionelg 发表于 2012-5-22 17:42 static/image/common/back.gif
放了,rtc编译正常,其他的不行,比如lcd1602的那个



已经解决,您可以重新下载库,进行编译看结果哦!
页: [1] 2 3 4
查看完整版本: arduino学习笔记38 - Arduino + DS1307 RTC时钟模块与经典总结