0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣在RTC DS1307在LCD上設(shè)置并顯示時間

454398 ? 來源:網(wǎng)絡(luò)整理 ? 作者:網(wǎng)絡(luò)整理 ? 2019-12-09 14:31 ? 次閱讀

步驟1:

怎樣在RTC DS1307在LCD上設(shè)置并顯示時間

將rtc連接到arduino。

SDA連接到Arduino A4。

將SCL連接到Arduino A5。 br》將vcc連接到+ 5v

將gnd連接到gnd

步驟2:將Lcd

LCD連接到Arduino

1 GND

2 + 《3》 3電位器中心

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ù)據(jù)

void setTime(){

Serial.print(“請輸入當(dāng)前年份,00-99 。-“);

year = 13;

Serial.println(year);

Serial.print(”請輸入當(dāng)前月份,1-12。-“) ;

month = 9;

Serial.println(months [month-1]);

Serial.print(“請輸入當(dāng)月的當(dāng)前日期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小時格式輸入當(dāng)前小時,0-23。-”);

hour = 13;

Serial.println(小時);

Serial.print(“請輸入當(dāng)前分鐘,0-59。-”);

分鐘= 51;

Serial.println(minute);

秒= 15;

Serial.println(“已輸入數(shù)據(jù)?!保?

步驟4:從成員WWC設(shè)置Rtc草圖。

您必須輸入時間,上傳然后打開串口并按y并發(fā)送。

///////////////////////////////////////////

//RTC數(shù)據(jù)和時間設(shè)置器//

////

//此示例程序允許用戶//

//使用I2C設(shè)置RTC的日期和時間//

//。//

////

//代碼作者://

//eGizmo Mechatronix Central//

//塔夫脫(菲律賓馬尼拉)//

//http://www.egizmo.com//

//2013年4月15日//

///////////////////////////////////////////

#include

const int DS1307 = 0x68;//DS1307的地址,請參閱數(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é)小時= 0;

字節(jié)工作日= 0;字節(jié)月份= 0;字節(jié)月份= 0;字節(jié)年份= 0;無效設(shè)置(){ Wire.begin();

串行.begin(9600);

delay(2000);//此延遲允許MCU讀取當(dāng)前日期和時間。

Serial.print(“當(dāng)前日期和時間是:”);

printTime();

Serial.println(“到換行符以結(jié)束串行監(jiān)視器右下角的設(shè)置“);

Serial.println(”您現(xiàn)在要設(shè)置日期和時間嗎?是/否“);

而(!Serial.available ())delay(10);

如果(Serial.read()==‘y’|| Serial.read()==‘Y’)

//這組函數(shù)允許用戶更改日期和時間

{

Serial.read();

setTime();

Serial.print(“當(dāng)前日期和時間為:”);

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(“請輸入本年度,00- 99。 -“);

year = 13;

Serial.println(year);

Serial.print(”請輸入當(dāng)前月份1-12。-“);

month = 9;-

Serial.println(months [month-1]);

Serial.print(“請輸入當(dāng)月的當(dāng)前日期1-31。-”);

monthday = 20;

Serial.println(月日);

Serial.println(“請輸入當(dāng)前星期幾,1-7。”);

Serial.println(“ 1周日| 2周一| 3周二| 4周三| 5周四| 6周五| 7星期六-“);

工作日= 6;

Serial.println(天[weekday-1]);

Serial.print(”請輸入24小時的當(dāng)前時間格式,0-23。-“);

小時= 13;

Serial.println(小時);

Serial.print(”請輸入當(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());

小時= bcdToDec(Wire.read());

工作日= bcdToDec(Wire .read());

monthday = bcdToDec(Wire.read());

month = bcdToDec(Wire.read());

year = bcdToDec(Wire.read());

}

步驟5:現(xiàn)在將其上傳以查看LCD上的時間。

/*

* TimeRTC .pde

*示例代碼,說明帶有實(shí)時時鐘的時間庫。

*

*/

#include

#include

#include //返回時間為time_t的基本DS1307庫

#include

LiquidCrystal lcd(12,11,5,4,3,2);

void setup(){

Serial.begin(9600);

setSyncProvider(RTC.get);//從RTC獲取時間的函數(shù)

if(timeStatus()!= timeSet)

Serial.println(“無法與RTC同步”);

else

Serial.println (“ RTC設(shè)置了系統(tǒng)時間”);

}

void loop()

{

digitalClockDisplay();

delay(1000);

}

void digitalClockDisplay(){

//時間的數(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í)用程序功能:打印冒號之前和前導(dǎo)0

Serial.print(“:”);

if(digits 《10)

Serial.print(‘0’);

Serial.print(digits);

}
責(zé)任編輯:wv

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • lcd
    lcd
    +關(guān)注

    關(guān)注

    34

    文章

    4389

    瀏覽量

    166764
  • RTC
    RTC
    +關(guān)注

    關(guān)注

    2

    文章

    519

    瀏覽量

    66151
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6455

    瀏覽量

    186388
收藏 人收藏

    評論

    相關(guān)推薦

    RA8875怎樣相應(yīng)圖層顯示所需要顯示的內(nèi)容?

    怎樣相應(yīng)圖層顯示所需要顯示的內(nèi)容,小萌新求指教
    發(fā)表于 05-13 07:28

    STM8l052c6單片機(jī)的RTC讀取時間時一直卡死RTC_WaitForSynchro()的原因?

    STM8l052c6單片機(jī)的RTC讀取時間時一直卡死while (RTC_WaitForSynchro() != SUCCESS); 系統(tǒng)時鐘使用的是默認(rèn)的2MHZ,
    發(fā)表于 05-10 06:11

    用STM32 的USB HOST接鍵盤,要怎樣才能讀取鍵盤的按鍵字符顯示屏幕?

    用STM32 的USB HOST接鍵盤,用官方例程可以完成鍵盤的枚舉,接下來要怎樣才能讀取鍵盤的按鍵字符顯示屏幕? 小弟剛接觸USB通
    發(fā)表于 04-29 08:44

    STM8L RTC設(shè)置和讀取時間不一樣是什么原因?qū)е碌模?/a>

    我使用的是STM8L151,設(shè)置RTC鬧鐘時間,和讀出的時間不對。 讀出來的時間,固定是 RTC_Al
    發(fā)表于 04-28 06:39

    基于51單片機(jī)的路燈【固定時間,紅外,DS1302,LCD1602】(仿真)

    基于51單片機(jī)的路燈【固定時間,紅外,DS1302,LCD1602】(仿真)
    的頭像 發(fā)表于 04-10 00:44 ?445次閱讀
    基于51單片機(jī)的路燈【固定<b class='flag-5'>時間</b>,紅外,<b class='flag-5'>DS</b>1302,<b class='flag-5'>LCD</b>1602】(仿真)

    RTCDeepSleep模式喚醒后無效的原因?

    時間。 隨意配置。但是如果是Deepsleep模式喚醒后需要重新配置RTC時間,就不成功。 我看RTC是可以喚醒DeepSleep模式的。 只要我把
    發(fā)表于 02-19 08:20

    RTC重啟電源時會重置是為什么?

    )時,RTC 計(jì)數(shù)會被重置。 目前,我還沒有考慮過任何電源模式,也沒有考慮 WCO 使用 extern crystel。 請建議重新啟動時保存
    發(fā)表于 01-23 08:29

    Ds1307 RTC連接到CR2032電池,就會卡住的原因?

    每當(dāng)我從電源向 ds1307 RTC 施加電壓時,它都能正常工作,但一旦我將其連接到 CR2032 電池,它就會卡住,時間不起作用。我檢查了電池的電壓,它是3v,但在電阻后,ds1307
    發(fā)表于 01-22 08:02

    PSoc4控制GPIO時,怎樣才能用modustoolBox為GPIO設(shè)置驅(qū)動模式?

    PSoc4 控制 GPIO 時,我想為 GPIO 設(shè)置驅(qū)動模式。 PSoC Creator 中,可以 “元器件目錄” 中選擇
    發(fā)表于 01-22 07:29

    單片機(jī)的RTC獲取網(wǎng)絡(luò)時間

    和設(shè)備時鐘的協(xié)議。它通過在網(wǎng)絡(luò)時間服務(wù)器通信,獲取準(zhǔn)確的時間信息。工作原理:NTP使用一種分層的客戶端-服務(wù)器體系結(jié)構(gòu)??蛻舳讼蚍?wù)器發(fā)起請求,服務(wù)器回應(yīng)包含其
    的頭像 發(fā)表于 12-23 08:00 ?920次閱讀
    單片機(jī)的<b class='flag-5'>RTC</b>獲取網(wǎng)絡(luò)<b class='flag-5'>時間</b>

    嵌入式操作教程:LCD顯示灰度圖像的直方圖統(tǒng)計(jì)結(jié)果

    學(xué)習(xí)直方圖統(tǒng)計(jì)的原理,掌握圖像的讀取方法,實(shí)現(xiàn)在LCD顯示灰度圖像的直方圖統(tǒng)計(jì)結(jié)果。
    的頭像 發(fā)表于 11-30 16:10 ?1082次閱讀
    嵌入式操作教程:<b class='flag-5'>在</b><b class='flag-5'>LCD</b><b class='flag-5'>上</b><b class='flag-5'>顯示</b>灰度圖像的直方圖統(tǒng)計(jì)結(jié)果

    如何在樹莓派Pico編程使用DS1302時鐘模塊?

    常用的計(jì)時時鐘芯片有 DS1302、DS1307、DS3231,各型號還有衍生型號。
    的頭像 發(fā)表于 11-28 09:16 ?1564次閱讀

    DS1302時鐘模塊及其驅(qū)動代碼介紹

    現(xiàn)在流行的串行時鐘電路很多,如DS1302、 DS1307、PCF8485等。這些電路的接口簡單、價格低廉、使用方便,被廣泛地采用。
    的頭像 發(fā)表于 11-08 17:18 ?3699次閱讀
    <b class='flag-5'>DS</b>1302時鐘模塊及其驅(qū)動代碼介紹

    Arduino篇—實(shí)時時鐘

    DS1307時鐘模塊:** DS1307串行實(shí)時時鐘(RTC)是低功耗,全二進(jìn)制編碼的十進(jìn)制(BCD)時鐘/日歷以及56字節(jié)的NV SRAM。
    的頭像 發(fā)表于 11-01 16:49 ?1992次閱讀
    Arduino篇—實(shí)時時鐘

    怎么將一串信息設(shè)置lcd1601循環(huán)顯示

    怎么將一串信息設(shè)置lcd1601循環(huán)顯示
    發(fā)表于 10-30 06:46