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