步驟1:
將rtc連接到arduino。
將SDA連接到Arduino A4。
將SCL連接到Arduino A5。 br》將vcc連接到+ 5v
將gnd連接到gnd
步驟2:將Lcd
LCD連接到Arduino
1 GND
4針12 Arduino。
5 GND 《6》針11 Arduino
11針5 Arduino
12針4 Arduino
13針3 Arduino
14 Pin 2 Arduino
15 +
16 Gnd
第3步:從成員WWC設(shè)置Rtc草圖。不要在U更改時(shí)間的情況下使用此示例。
串行輸入對(duì)我不起作用,所以我將時(shí)間花在了草圖上。
不要使用這個(gè)。僅用于必須輸入時(shí)間的示例。
//這組代碼允許輸入數(shù)據(jù)
void setTime(){
Serial.print(“請(qǐng)輸入當(dāng)前年份,00-99 。-“);
year = 13;
Serial.println(year);
Serial.print(”請(qǐng)輸入當(dāng)前月份,1-12。-“) ;
month = 9;
Serial.println(months [month-1]);
Serial.print(“請(qǐng)輸入當(dāng)月的當(dāng)前日期1-31 。-“);
monthday = 20;
Serial.println(monthday);
Serial.println(”請(qǐng)輸入星期幾,即1-7。 “);
Serial.print(” 1周日| 2周一| 3周二| 4星期三| 5周四| 6周五| 7周六-“);
工作日= 6;
Serial.println(days [weekday-1]);
Serial.print(“請(qǐng)以24小時(shí)格式輸入當(dāng)前小時(shí),0-23。-”);
hour = 13;
Serial.println(小時(shí));
Serial.print(“請(qǐng)輸入當(dāng)前分鐘,0-59。-”);
分鐘= 51;
Serial.println(minute);
秒= 15;
Serial.println(“已輸入數(shù)據(jù)?!保?
步驟4:從成員WWC設(shè)置Rtc草圖。
您必須輸入時(shí)間,上傳然后打開(kāi)串口并按y并發(fā)送。
///////////////////////////////////////////
//RTC數(shù)據(jù)和時(shí)間設(shè)置器//
////
//此示例程序允許用戶//
//使用I2C設(shè)置RTC的日期和時(shí)間//
//。//
////
//代碼作者://
//eGizmo Mechatronix Central//
//塔夫脫(菲律賓馬尼拉)//
//http://www.egizmo.com//
//2013年4月15日//
///////////////////////////////////////////
#include
const int DS1307 = 0x68;//DS1307的地址,請(qǐng)參閱數(shù)據(jù)表
const char * days [] =
{“星期日”,“星期一”,“星期二”,“星期三”,“星期四”,“星期五”,“星期六”} ;
const char * months [] =
{“ 1月”,“ 2月”,“ 3月”,“ 4月”,“ 5月”,“ 6月”,“ 7月”,“ 8月”,“ 9月” ,“ October”,“ November”,“ December”};
//初始化所有值:
字節(jié)秒= 0;
字節(jié)分鐘= 0;
字節(jié)小時(shí)= 0;
字節(jié)工作日= 0;字節(jié)月份= 0;字節(jié)月份= 0;字節(jié)年份= 0;無(wú)效設(shè)置(){ Wire.begin();
串行.begin(9600);
delay(2000);//此延遲允許MCU讀取當(dāng)前日期和時(shí)間。
Serial.print(“當(dāng)前日期和時(shí)間是:”);
printTime();
Serial.println(“到換行符以結(jié)束串行監(jiān)視器右下角的設(shè)置“);
Serial.println(”您現(xiàn)在要設(shè)置日期和時(shí)間嗎?是/否“);
而(!Serial.available ())delay(10);
如果(Serial.read()==‘y’|| Serial.read()==‘Y’)
//這組函數(shù)允許用戶更改日期和時(shí)間
{
Serial.read();
setTime();
Serial.print(“當(dāng)前日期和時(shí)間為:”);
printTime();
}
Serial.println(“謝謝。”);
}
//連續(xù)函數(shù),用于將字節(jié)轉(zhuǎn)換為小數(shù),反之亦然
void loop(){
}
byte decToBcd(byte val){
return((val/10 * 16)+(val%10));
}
byte bcdToDec(byte val){
return((val/16 * 10)+(val%16));
}
//這組代碼允許輸入數(shù)據(jù)
void setTime(){
Serial.print(“請(qǐng)輸入本年度,00- 99。 -“);
year = 13;
Serial.println(year);
Serial.print(”請(qǐng)輸入當(dāng)前月份1-12。-“);
month = 9;-
Serial.println(months [month-1]);
Serial.print(“請(qǐng)輸入當(dāng)月的當(dāng)前日期1-31。-”);
monthday = 20;
Serial.println(月日);
Serial.println(“請(qǐng)輸入當(dāng)前星期幾,1-7?!保?
Serial.println(“ 1周日| 2周一| 3周二| 4周三| 5周四| 6周五| 7星期六-“);
工作日= 6;
Serial.println(天[weekday-1]);
Serial.print(”請(qǐng)輸入24小時(shí)的當(dāng)前時(shí)間格式,0-23。-“);
小時(shí)= 13;
Serial.println(小時(shí));
Serial.print(”請(qǐng)輸入當(dāng)前分鐘,0-59。-“);
分鐘= 51;
Serial.println(分鐘);
秒= 15;
Serial.println(“已輸入數(shù)據(jù)?!保?
//以下代碼傳輸數(shù)據(jù)發(fā)送到RTC
Wire.beginTransmission(DS1307);
Wire.write(字節(jié)(0));
Wire.write(decToBcd(秒));
Wire.write(decToBcd(分鐘));
Wire.write(decToBcd(hour));
Wire.write(decToBcd(工作日));
Wire.write(decToBcd(工作日));
Wire.write(decToBcd(工作日));
Wire.write(decToBcd(工作年));
Wire.write(byte(0));
Wire.endTransmission();
//結(jié)束數(shù)據(jù)傳輸
}
byte readByte(){
while(!Serial。 available())delay(10);
字節(jié)讀取= 0;
字節(jié)incomingByte = Serial.read();
而(incomingByte!=‘ n’){
if(incomingByte》 =‘0’&&進(jìn)入字節(jié)《=‘9’)
讀取=讀取* 10 +(incomingByte-‘0’);
else;
進(jìn)入字節(jié)= Serial.read();
}
Serial.flush();
返回讀數(shù);
}
void printTime(){ const char * AMPM = 0;
readTime( );
Serial.print(days [weekday-1]);
Serial.print(“”);
Serial.print(months [month-1]);
Serial.print( “”);
Serial.print(月日);
Serial.print(“,20”);
Serial.print(年);
Serial.print(“”);
if(hour》 12){
hour-= 12;
AMPM =“ PM”;
}
else AMPM =“ AM”;
Serial.print(hour);
Seria l.print(“:”);
sprintf(緩沖區(qū),“%02d”,分鐘);
Serial.print(緩沖區(qū));
Serial.println(AMPM);
}
void readTime(){
Wire.beginTransmission(DS1307);
Wire.write(byte(0));
Wire.endTransmission();
Wire.requestFrom(DS1307,7);
秒= bcdToDec(Wire.read());
分鐘= bcdToDec(Wire.read());
小時(shí)= bcdToDec(Wire.read());
工作日= bcdToDec(Wire .read());
monthday = bcdToDec(Wire.read());
month = bcdToDec(Wire.read());
year = bcdToDec(Wire.read());
}
步驟5:現(xiàn)在將其上傳以查看LCD上的時(shí)間。
/*
* TimeRTC .pde
*示例代碼,說(shuō)明帶有實(shí)時(shí)時(shí)鐘的時(shí)間庫(kù)。
*
*/
#include
#include
#include //返回時(shí)間為time_t的基本DS1307庫(kù)
#include
LiquidCrystal lcd(12,11,5,4,3,2);
void setup(){
Serial.begin(9600);
setSyncProvider(RTC.get);//從RTC獲取時(shí)間的函數(shù)
if(timeStatus()!= timeSet)
Serial.println(“無(wú)法與RTC同步”);
else
Serial.println (“ RTC設(shè)置了系統(tǒng)時(shí)間”);
}
void loop()
{
digitalClockDisplay();
delay(1000);
}
void digitalClockDisplay(){
//時(shí)間的數(shù)字時(shí)鐘顯示
Serial.print(hour());
printDigits(minute());
printDigits(second());
Serial.print(“”);
Serial.print(day());
Serial.print(“”);
Serial.print(month());
串行。 print(“”);
Serial.print(year());
Serial.println();
lcd.setCursor(2,0);//設(shè)置LCD光標(biāo)位置(列,行)
lcd.print(hour());
lcd.print(“:”);
lcd.print(minute());
lcd.print(“”);
lcd.print(second());
lcd.print(“”);
lcd.print(“ Uhr”);
lcd.setCursor( 3,1);//設(shè)置LCD光標(biāo)位置(列,行)
lcd.print(day());
lcd.print(“?!保?
lcd.print(month());
lcd.print(“?!保?
lcd.print(year());
//將文本打印到LCD
//延遲讀取文本
//清除顯示
}
void printDigits(int digits){
//用于數(shù)字時(shí)鐘顯示的實(shí)用程序功能:打印冒號(hào)之前和前導(dǎo)0
Serial.print(“:”);
if(digits 《10)
Serial.print(‘0’);
Serial.print(digits);
}
責(zé)任編輯:wv
-
lcd
+關(guān)注
關(guān)注
34文章
4407瀏覽量
166958 -
RTC
+關(guān)注
關(guān)注
2文章
524瀏覽量
66248 -
Arduino
+關(guān)注
關(guān)注
187文章
6461瀏覽量
186534
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論