ardyPro
发表于 2012-1-1 12:08:54
悠然小调 发表于 2011-11-18 18:30 static/image/common/back.gif
1302似乎很挑晶振,我买了2种32.768K的 晶振,一种不能起振,只有6PF的那种才能用。
DS1302时钟的产生基于外接的晶体振荡器,振荡器的频率为32768Hz。该晶振通过引脚X1、X2直接连接至DS1302,即DS1302是依靠外部晶振与其内部的电容配合来产生时钟脉冲的。由于DS1302在芯片本身已经集成了6pF的电容,所以,为了获得稳定可靠的时钟,必须选用具有6pF负载电容的晶振。
ardyPro
发表于 2012-1-1 12:45:48
:@ 刚知道,我买的俩也不是跟6pf匹配的
プ汏坏疍
发表于 2012-1-1 14:56:04
Ansifa 发表于 2011-11-22 20:48 static/image/common/back.gif
有空补全一个,哈哈。。
想弱弱地问下高手,您什么时候有空呀?哈哈。:lol
ardyPro
发表于 2012-1-6 01:12:50
Sunday 2000-01-01 00:11:37
Sunday 2000-01-01 00:11:38
Sunday 2000-01-01 00:11:40
Sunday 2000-01-01 00:11:41
中间有跳跃的,比如上面39秒就没有,这个是什么原因?焊接时烫坏了?
弘毅
发表于 2012-1-6 16:31:56
ardyPro 发表于 2012-1-6 01:12 static/image/common/back.gif
Sunday 2000-01-01 00:11:37
Sunday 2000-01-01 00:11:38
Sunday 2000-01-01 00:11:40
换一个时钟芯片看看,因为现在1302芯片基本上都是假的,正品要10多块一片。假货里也分好坏。。。只能赌运气。
xlsss
发表于 2012-2-24 21:48:01
期待~~~~~~
Malc
发表于 2012-2-25 01:21:46
xlsss 发表于 2012-2-24 21:48 static/image/common/back.gif
期待~~~~~~
楼上213
赫赫
发表于 2012-3-21 16:41:51
我用 arduino0018的IDE编写会显示“String does not name a type”换到0023里就正常了,但是0023里面不能添加中文。
弘毅
发表于 2012-3-21 17:18:09
赫赫 发表于 2012-3-21 16:41 static/image/common/back.gif
我用 arduino0018的IDE编写会显示“String does not name a type”换到0023里就正常了,但是0023里面不能添 ...
是滴,0018那时不支持String~~可以外面写好程序,复制到0023里面编译。
赫赫
发表于 2012-3-22 09:10:38
弘毅 发表于 2012-3-21 17:18 static/image/common/back.gif
是滴,0018那时不支持String~~可以外面写好程序,复制到0023里面编译。
谢谢 弘毅 大哥。今天着手做个试试,家里有块以前做的数码管板子。
赫赫
发表于 2012-3-22 16:07:07
程序中午抽空已经写完先发个图给大家欣赏一下 再次谢谢 弘毅 大哥给的库晚些时候整理一下吧程序和图纸发上来。http://hiphotos.baidu.com/herohezi/pic/item/5c27502ac65c1038d29f3c78b2119313b17e891b.jpg
赫赫
发表于 2012-3-22 16:11:57
直接发代码好了,硬件连接已经写在里面了数码管是用595驱动的6级串联。/*Arduino 连接 DS1302
代码来源:http://quadpoint.org/projects/arduino-ds1302
增加了串口调整时间代码*/
#include <stdio.h>
#include <string.h>
#include <DS1302.h>
/* 接口定义
CE(DS1302 pin5) -> Arduino D5
IO(DS1302 pin6) -> Arduino D6
SCLK(DS1302 pin7) -> Arduino D7*/
uint8_t CE_PIN = 5;
uint8_t IO_PIN = 6;
uint8_t SCLK_PIN = 7;
/**************************************************************
GND(pin 8) to ground,
VCC(pin 16) to 5V
OE (pin 13) to ground
MR (pin 10) to 5V
latchPin = 13; to 595 pin 12
clockPin = 12; to 595 pin 11
dataPin = 11;to 595 pin 14
****************************************************************/
char latchPin = 13;//Pin connected to ST_CP of 74HC595
char clockPin = 12;//Pin connected to SH_CP of 74HC595
char dataPin = 11;//Pin connected to DS of 74HC595
int FIR,SEC,THI,FOR,FIF,SIX;
///////////////////0////1///2////3/////4////5////6/////7////8///9////
byte segcode={0X40,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X00,0X10};
/* 日期变量缓存 */
char buf;
char day;
/* 串口数据缓存 */
String comdata = "";
int numdata ={0}, j = 0, mark = 0;
/* 创建 DS1302 对象 */
DS1302 rtc(CE_PIN, IO_PIN, SCLK_PIN);
void print_time()
{
/* 从 DS1302 获取当前时间 */
Time t = rtc.time();
/* 将星期从数字转换为名称 */
memset(day, 0, sizeof(day));
switch (t.day)
{
case 1: strcpy(day, "Sunday"); break;
case 2: strcpy(day, "Monday"); break;
case 3: strcpy(day, "Tuesday"); break;
case 4: strcpy(day, "Wednesday"); break;
case 5: strcpy(day, "Thursday"); break;
case 6: strcpy(day, "Friday"); break;
case 7: strcpy(day, "Saturday"); break;
}
FIR = t.hr/10;
SEC = t.hr%10;
THI = t.min/10;
FOR = t.min%10;
FIF = t.sec/10;
SIX = t.sec%10;
/* 将日期代码格式化凑成buf等待输出 */
snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d", day, t.yr, t.mon, t.date, t.hr, t.min, t.sec);
/* 输出日期到串口 */
Serial.println(buf);
}
void setup()
{
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
Serial.begin(9600);
rtc.write_protect(false);
rtc.halt(false);
}
void loop()
{
/* 当串口有数据的时候,将数据拼接到变量comdata */
while (Serial.available() > 0)
{
comdata += char(Serial.read());
delay(2);
mark = 1;
}
/* 以逗号分隔分解comdata的字符串,分解结果变成转换成数字到numdata[]数组 */
if(mark == 1)
{
Serial.print("You inputed : ");
Serial.println(comdata);
for(int i = 0; i < comdata.length() ; i++)
{
if(comdata == ',' || comdata == 0x10 || comdata == 0x13)
{
j++;
}
else
{
numdata = numdata * 10 + (comdata - '0');
}
}
/* 将转换好的numdata凑成时间格式,写入DS1302 */
Time t(numdata, numdata, numdata, numdata, numdata, numdata, numdata);
rtc.time(t);
mark = 0;j=0;
/* 清空 comdata 变量,以便等待下一次输入 */
comdata = String("");
/* 清空 numdata */
for(int i = 0; i < 7 ; i++) numdata=0;
}
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST,segcode);
shiftOut(dataPin, clockPin, MSBFIRST,segcode);
shiftOut(dataPin, clockPin, MSBFIRST,segcode);
shiftOut(dataPin, clockPin, MSBFIRST,segcode);
shiftOut(dataPin, clockPin, MSBFIRST,segcode);
shiftOut(dataPin, clockPin, MSBFIRST,segcode);
digitalWrite(latchPin, HIGH);
/* 打印当前时间 */
print_time();
delay(1000);//refresh time
}
Randy
发表于 2012-3-23 22:53:15
实用性强大啊!学习中。。。。
lionelg
发表于 2012-4-1 15:40:55
WProgram.h是哪里的文件??编译的时候报错
弘毅
发表于 2012-4-1 16:48:45
lionelg 发表于 2012-4-1 15:40 static/image/common/back.gif
WProgram.h是哪里的文件??编译的时候报错
0022 IDE中的。。如果用1.0 IDE不知道是否还有这个了
页:
1
[2]
3
4
5
6
7
8
9
10
11