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

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

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

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

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

步驟1:

怎樣在RTC DS1307在LCD上設(shè)置并顯示時(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í)間的情況下使用此示例。

串行輸入對(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

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

    關(guān)注

    34

    文章

    4407

    瀏覽量

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

    關(guān)注

    2

    文章

    524

    瀏覽量

    66248
  • Arduino
    +關(guān)注

    關(guān)注

    187

    文章

    6461

    瀏覽量

    186534
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    主板優(yōu)化PCIe通道設(shè)置

    主板優(yōu)化PCIe通道設(shè)置是提升系統(tǒng)性能的重要步驟,以下是具體的優(yōu)化建議: 一、了解主板和PCIe規(guī)格 查閱主板手冊(cè) :首先,需要了解主板支持的PCIe版本(如PCIe 3.0、PCIe 4.0等
    的頭像 發(fā)表于 11-06 09:30 ?408次閱讀

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

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

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

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

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

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

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

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

    請(qǐng)問(wèn)使用HAL庫(kù)硬件I2C時(shí)如何設(shè)置器件地址?

    我使用的模塊是包含了DS1307的AT24C32兩個(gè)I2C通訊的芯片,開(kāi)始準(zhǔn)備啟用硬件I2C,但測(cè)試了多天都沒(méi)有成功,后來(lái)只要改為GPIO模擬I2C才成功驅(qū)動(dòng)這兩個(gè)芯片?,F(xiàn)在我仍想繼續(xù)嘗試用硬件I2C,但一直不知道如何在操作前設(shè)定器件的地址,我使用的是HAL庫(kù),在此請(qǐng)各位指教,謝謝!
    發(fā)表于 04-17 07:31

    STM8L152的低功耗時(shí)lcd變暗的原因?

    _ITConfig(RTC_IT_WUT, ENABLE);//使能RTC呼醒中斷 RTC_SetWakeUpCounter(614);//設(shè)置呼醒
    發(fā)表于 04-16 07:04

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

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

    RTCDeepSleep模式喚醒后無(wú)效的原因?

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

    RTC重啟電源時(shí)會(huì)重置是為什么?

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

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

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

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

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

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

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

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

    學(xué)習(xí)直方圖統(tǒng)計(jì)的原理,掌握?qǐng)D像的讀取方法,實(shí)現(xiàn)在LCD顯示灰度圖像的直方圖統(tǒng)計(jì)結(jié)果。
    的頭像 發(fā)表于 11-30 16:10 ?1134次閱讀
    嵌入式操作教程:<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é)果

    如何在樹(shù)莓派Pico編程使用DS1302時(shí)鐘模塊?

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