亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>使用1307 RTC、I2C LCD和Arduino Uno的數(shù)字日歷時(shí)鐘

使用1307 RTC、I2C LCD和Arduino Uno的數(shù)字日歷時(shí)鐘

2022-12-15 | zip | 1.35 MB | 次下載 | 2積分

資料介紹

描述

使用 1307 RTC、I2C LCD 和 Arduino Uno 的數(shù)字日歷時(shí)鐘

時(shí)間不是主要的,它是唯一的。” - 邁爾斯戴維斯。

在大多數(shù)項(xiàng)目中使用與時(shí)間相關(guān)的操作。例如,我們可以隨時(shí)間自動(dòng)化我們的戶外燈。它會(huì)自動(dòng)從指定時(shí)間打開到另一個(gè)預(yù)設(shè)時(shí)間。或者我們可以制作一個(gè)自動(dòng)上課鈴。還有很多。MCU不能自己做。我們使用 RTC(實(shí)時(shí)時(shí)鐘)在 MCU 中設(shè)置實(shí)時(shí)時(shí)間。

“數(shù)字日歷時(shí)鐘”是 RTC 的基礎(chǔ)項(xiàng)目。市場(chǎng)上有很多類型的 RTC 模塊。這里我使用 1307 RTC 模塊。

在這里,我使用了我之前記錄的相同 I2C LCD。如果您之前沒有閱讀過,請(qǐng)先從這里閱讀。

在本文中,

  • DS1307 RTC簡介
  • 在 Arduino IDE 中安裝庫。
  • 創(chuàng)建 Arduino Sketch 的關(guān)鍵點(diǎn)
  • Arduino代碼解釋。
  • 最后制作“數(shù)字時(shí)鐘日歷。

DS1307 實(shí)時(shí)時(shí)鐘

  • DS1307 是一款 RTC IC,有助于跟蹤時(shí)間。這是一個(gè)8針I(yè)C
  • 在 DS1307 中,數(shù)據(jù)以二進(jìn)制十進(jìn)制編碼的位模式傳輸。DS1307 的數(shù)據(jù)傳輸率為 56 字節(jié)。
  • I2C 是用于與 MCU 通信的協(xié)議
  • DS1307 RTC Module主要由DS1307 IC、3V紐扣電池、2個(gè)上拉電阻和一個(gè)32.768 kHz晶振組成。
  • 我們可以得到當(dāng)前的時(shí)、分、秒、星期、日、月和年。

DS1307的引腳排列

  • 引腳 1、2:這些引腳用于標(biāo)準(zhǔn) 32.768 石英晶體。
  • 引腳 3:該引腳用于連接 DS1307 的電池。
  • 引腳 4:我們必須在此引腳上應(yīng)用接地。
  • PIN 5:此引腳標(biāo)記為 SDA,是串行數(shù)據(jù)線的縮寫。
  • PIN 6:用于串行時(shí)鐘輸入(SCL)和數(shù)據(jù)同步。
  • 引腳 7:該引腳用于輸出方波獲取器(SQW)。
  • 引腳 8:在此引腳,我們提供外部電源 (Vcc)。

創(chuàng)建 Arduino Sketch 的關(guān)鍵點(diǎn)

這里我們使用“RTClib”庫。我們可以得到 24 小時(shí)制。對(duì)于 12 小時(shí)制,我們需要對(duì)其進(jìn)行轉(zhuǎn)換。這種轉(zhuǎn)換的方法很多。這里我使用if,else條件和map()函數(shù)。或者,您可以使用任何其他方法。

開始吧?。。。?!

步驟1

在 Arduino IDE 中安裝庫

如果您已經(jīng)安裝了這些庫,請(qǐng)?zhí)^步驟。

我們需要安裝兩個(gè)庫。

1. 第一個(gè)是“RTClib”。這是一個(gè)主圖書館。因此,您可以將相同的庫用于其他一些 RTC 模塊。要安裝此庫,請(qǐng)打開 Arduino IDE 并轉(zhuǎn)到Sketch > Include Library > Manage Libraries然后在右上角的搜索欄中鍵入RTClib 。然后點(diǎn)擊安裝

?
?
?
pYYBAGOYDC-AcE_WAACNxGzMrhk492.jpg
?
1 / 2
?

2.第二個(gè)庫是“LiquidCrystal-I2C”。轉(zhuǎn)到鏈接下載庫 Arduino-LiquidCrystal-I2C-library。然后打開 Arduino IDE 并轉(zhuǎn)到Sketch>Include Library> Add.ZIP Library 。接下來選擇下載的 ZIP 文件并單擊打開。

庫安裝完成。

第2步

接下來我將創(chuàng)建一個(gè)草圖。首先添加三個(gè)頭文件1.RTClib.h、LiquidCrystal_I2C.h和Wire.h。使用 Wire 庫是因?yàn)檫@里我們使用 I2C 協(xié)議進(jìn)行通信。RTClib 庫將有助于與 RTC 模塊進(jìn)行通信。LiquidCrystal_I2C 庫有助于與 I2C LCD 進(jìn)行通信。

#include <RTClib.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

步驟 - 3

接下來我聲明,我將要使用的 RTC。這里是 DS1307,并為此設(shè)備創(chuàng)建一個(gè)名為“rtc”的對(duì)象。

RTC_DS1307 rtc

第4步

然后我創(chuàng)建另一個(gè)對(duì)象來調(diào)用 I2C LCD。對(duì)象名稱是 lcd。并設(shè)置LCD的地址、列數(shù)和行數(shù)。這里我的 I2C LCD 的地址是 0x27,列數(shù)是 16,行數(shù)是 2。這是我的情況。如果您使用不同的 LCD,請(qǐng)使用它的列數(shù)和行數(shù)。如果您不知道 LCD 的地址,請(qǐng)單擊此處,然后轉(zhuǎn)到該文章中的第 1 步。

LiquidCrystal_I2C lcd(0x27, 16, 2);

步驟 - 5

該函數(shù)now.dayOfTheWeek()返回整數(shù)。例如。0 代表星期日,1 代表星期一,以此類推。所以我們需要將其轉(zhuǎn)換為星期日、星期一、...以便于理解。為此,我聲明了一個(gè) 2D 字符數(shù)組。請(qǐng)多注意數(shù)組的大小。我使用數(shù)組名稱作為“daysOfTheWeek”。名稱與功能相似。您可以使用任何其他名稱。然后填充數(shù)組。這里我使用“Sun”而不是“Sunday”來節(jié)省 LCD 上的空間(這里我使用 16x2 I2C LCD)。接下來我聲明一個(gè)整數(shù)類型變量,名為“temp”。這是用于存儲(chǔ)有關(guān) AM/PM 的信息。

char daysOfTheWeek[7][12] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
int temp;

步驟 - 6

在設(shè)置部分,初始化 LCD 并打開 LCD 的背光。

lcd.begin();
 lcd.backlight();

步驟 - 7

當(dāng) RTC 未運(yùn)行時(shí),在 LCD 上打印一條消息。這是出于調(diào)試目的。清除 LCD 并將光標(biāo)設(shè)置為 (0, 0)。

if (! rtc.begin()) {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("RTC Not Working");

  }

步驟 - 8

下一行代碼用于首次更新到 MCU(此處為 Arduino)。當(dāng)我們編譯代碼時(shí),這些行有助于從計(jì)算機(jī)獲取日期和時(shí)間。請(qǐng)多注意這些線路。因?yàn)樵诘谝淮螌⑼暾拇a上傳到 Arduino 之后,您需要注釋這些行并再次將代碼上傳到 Arduino。

rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

步驟 - 9

現(xiàn)在我們需要打印歡迎信息。在這里我要打印“數(shù)字日歷時(shí)鐘”。首先將光標(biāo)設(shè)置在 (0, 0) 并打印“數(shù)字日歷”。然后將光標(biāo)設(shè)置為 (5, 1)。并打印“時(shí)鐘”。

lcd.setCursor(0, 0);
  lcd.print("Digital Calendar");
  lcd.setCursor(5, 1);
  lcd.print("Clock");

設(shè)置部分完成

步驟-10

接下來對(duì)循環(huán)部分進(jìn)行編碼。使用 RTClib 獲取時(shí)間的方法幾乎只有一種,調(diào)用now()DateTime now().

DateTime now = rtc.now();

步驟 - 11

然后使用 clear() 函數(shù)清除 LCD。Next 將光標(biāo)設(shè)置在 (1, 0)。我將以“DD/MM/YYYY”格式打印日期。在這里,我使用now.day()函數(shù)來獲取當(dāng)前日期。now.month()用于獲取當(dāng)前月份和當(dāng)前年份的函數(shù)。now.year()首先打印“日”,然后打印“/”,然后打印“月”,然后打印另一個(gè)“/”,然后打印“年”。

lcd.clear();
  lcd.setCursor(1, 0);
  lcd.print(now.day());
  lcd.print('/');
  lcd.print(now.month());
  lcd.print('/');
  lcd.print(now.year());

步驟 - 12

接下來將光標(biāo)設(shè)置在 (12, 0) 并打印星期幾。函數(shù)“ now.dayOfTheWeek()”返回對(duì)應(yīng)于星期幾的整數(shù)值。我們將把該返回值插入到我們的數(shù)組“daysOfTheWeek[]”中并打印當(dāng)前星期幾。

lcd.setCursor(12, 0);
lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);

步驟 - 13

將光標(biāo)設(shè)置為 (2, 1)。現(xiàn)在我要打印小時(shí)。在此之前,我們需要將 24 小時(shí)制轉(zhuǎn)換為 12 小時(shí)制。" now.hour()" 函數(shù)返回當(dāng)前時(shí)間。0 代表上午 12 點(diǎn),23 代表晚上 11 點(diǎn)

在這里,我將把小時(shí)分為四個(gè)部分。

  • 0
  • 1 到 11
  • 12
  • 13 至 23

使用“ if”語句做出決定。如果 now.hour() 為 0,則打印“12”并為 AM 設(shè)置 temp=0。

if (now.hour() == 0) {
    lcd.print("12");
    temp = 0;
  }

步驟 - 14

接下來使用“ else if()”語句。僅當(dāng) now.hour() 大于或等于 11 時(shí)才打印。0 將從該語句中排除。now.hour()因?yàn)椴襟E - 13 已經(jīng)在該條件下工作。然后為 AM 設(shè)置 temp==1。

else if (now.hour() <= 11) {
    lcd.print(now.hour());
    temp = 0;
  }

步驟 - 15

然后使用另一個(gè)else if()語句。這部分主要負(fù)責(zé)24小時(shí)制到12小時(shí)制的轉(zhuǎn)換。這里我們使用map() 函數(shù)。這個(gè)函數(shù)有5個(gè)屬性。首先是“ value”。這里,“ value”是函數(shù)“ now.hour()”的返回值。第二個(gè)屬性是“ FromLow”。這意味著“”的最小值value是13。下一個(gè)屬性是“ FromHigh”。表示“”的最大值value。第三個(gè)屬性是“ToLow"這里是 1。最后一個(gè)屬性是ToHigh”。它是 11。函數(shù)map()返回映射的值,我們打印該值。然后為 PM 設(shè)置 temp==1。

else if (now.hour() >= 13) {
lcd.print(map(now.hour(), 13, 23, 1, 11));
temp = 1;
}

步驟 - 16

如果 now.hour()==12 則打印 now.hour() 并為 PM 設(shè)置 temp==1。

if(now.hour()==12){
    lcd.print(now.hour());
    temp=1;
  }

步驟 - 17

小時(shí)將由上述聲明之一打印。接下來打印一個(gè)冒號(hào),然后通過函數(shù) now.minute() 打印分鐘,再次打印一個(gè)冒號(hào),然后通過函數(shù) now.second() 打印當(dāng)前秒。

lcd.print(':');
  lcd.print(now.minute());
  lcd.print(':');
  lcd.print(now.second());

步驟 - 18

然后將光標(biāo)設(shè)置在 (12, 1)。如果 temp==0 則打印 AM,如果 temp==1 則打印 PM。然后添加 1000 毫秒的延遲。

else if (temp == 1) {
    lcd.print("PM");
  }
delay(1000);

編程完成。完整的代碼在代碼部分給出。

步驟 - 19

請(qǐng)?jiān)谏蟼鞔a前完成接線。

聯(lián)系

poYBAGOYDDGAcnsUAAAUs6caZdg063.jpg
?

電路圖在圖表部分給出。

步驟 - 20

將代碼上傳到 Arduino Uno。然后評(píng)論或刪除(我推薦第一個(gè)選項(xiàng))聲明

“rtc.adjust(日期時(shí)間(F(__DATE__),F(xiàn)(__TIME__)));”

使用“//”,然后再次上傳代碼。

數(shù)字日歷時(shí)鐘完成。您還可以獲得數(shù)字日歷時(shí)鐘

請(qǐng)不要復(fù)制粘貼我的代碼。理解每一行代碼并創(chuàng)建自己的草圖

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1PFC電路與BOOST電路設(shè)計(jì)實(shí)例分享
  2. 1.83 MB   |  12次下載  |  4 積分
  3. 2世平基于靈動(dòng)微 SPIN560C 的低壓無刷電機(jī)應(yīng)用方案
  4. 10.93 MB  |  11次下載  |  免費(fèi)
  5. 3電源測(cè)試報(bào)告-基于 國民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
  6. 6.47 MB  |  11次下載  |  免費(fèi)
  7. 4PWM控制器的控制方法
  8. 0.39 MB   |  3次下載  |  4 積分
  9. 5電流檢測(cè)芯片F(xiàn)P135應(yīng)用說明
  10. 1.24 MB   |  3次下載  |  免費(fèi)
  11. 6全面解讀被動(dòng)式與主動(dòng)式PFC電路
  12. 1.27 MB   |  1次下載  |  4 積分
  13. 7HC88L051F4低功耗芯片規(guī)格書
  14. 4.76 MB  |  1次下載  |  免費(fèi)
  15. 8CIU32D655x5數(shù)據(jù)手冊(cè)
  16. 2.14 MB   |  1次下載  |  免費(fèi)

本月

  1. 1常用電子元器件使用手冊(cè)
  2. 2.40 MB   |  52次下載  |  免費(fèi)
  3. 2高功率密度碳化硅MOSFET軟開關(guān)三相逆變器損耗分析
  4. 2.27 MB   |  33次下載  |  10 積分
  5. 3PFC電路與BOOST電路設(shè)計(jì)實(shí)例分享
  6. 1.83 MB   |  12次下載  |  4 積分
  7. 4世平基于靈動(dòng)微 SPIN560C 的低壓無刷電機(jī)應(yīng)用方案
  8. 10.93 MB  |  11次下載  |  免費(fèi)
  9. 5電源測(cè)試報(bào)告-基于 國民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
  10. 6.47 MB  |  11次下載  |  免費(fèi)
  11. 6USB拓展塢PCB圖資料
  12. 0.57 MB   |  11次下載  |  免費(fèi)
  13. 7MS1826 HDMI 多功能視頻處理器數(shù)據(jù)手冊(cè)
  14. 4.51 MB   |  9次下載  |  免費(fèi)
  15. 8HAL9303線性霍爾效應(yīng)傳感器技術(shù)手冊(cè)
  16. 0.70 MB   |  9次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935134次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191424次下載  |  10 積分
  9. 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  10. 158M  |  183352次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81600次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73818次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分