• HOME
  • DỰ ÁN & MẠCH ĐIỆN
    • Lập trình
      • ARDUINO PROJECT
      • ESP8266 PROJECT
      • ESP32 PROJECT
      • RASPBERRY PI PROJECT
      • Vi điều khiển
    • Điện tử ứng dụng
      • Audio / Amplifiers
      • Nguồn điện
      • Pin sạc/Acquy và mạch sạc
      • Biến đổi AC và DC
      • Robotic
      • Cảm biến
      • LED
      • LCD
      • Động cơ bước
      • Mạch linh tinh
      • Test & Measurement
      • RF – FM
    • Nixie Clock
    • HOME AUTOMATION
    • Dân dụng
    • Công nghiệp
  • KIẾN THỨC CĂN BẢN
    • Điện tử cơ bản
    • Điện tử số
    • PCB
    • Nixie Tube
    • Raspberry Pi
    • Vi điều khiển
    • Arduino
    • IN 3D
  • DOWNLOAD
    • Phần mềm điện tử
    • Giáo trình
      • Giáo trình Điện – Điện tử
      • Giáo trình Tự Động Hóa
      • Giáo trình Viễn thông
    • Đề tài
      • Đề tài – Điện – Điện Tử
      • Đề tài – Tự Động Hóa
      • Đề tài – Viễn thông
    • Điện tử ứng dụng
    • Tài liệu nước ngoài
    • Hướng dẫn, sửa chữa
    • Sơ đồ, nguyên lý thiết bị
    • Tiêu chuẩn – Đo lường – Thử nghiệm
    • Datasheet
  • LIÊN HỆ
  • SẢN PHẨM

Mạch Điện Lý Thú

Sơ đồ nguyên lý, PCB, đồ án, tài liệu, DIY

Trang chủ » DỰ ÁN & MẠCH ĐIỆN » Lập trình » ARDUINO PROJECT » Hiển thị thời gian thực (RTC DS1307) lên LCD16x2 bằng giao tiếp I2C trong môi trường Arduino

Hiển thị thời gian thực (RTC DS1307) lên LCD16x2 bằng giao tiếp I2C trong môi trường Arduino

05/09/2023 by admin 1 Bình luận

Đã được đăng vào 11/12/2019 @ 12:00

Hiển thị thời gian thực (RTC DS1307) lên LCD16x2 bằng giao tiếp I2C trong môi trường Arduino 

Mục lục hiện
Hiển thị thời gian thực (RTC DS1307) lên LCD16x2 bằng giao tiếp I2C trong môi trường Arduino
Hiển thị thời gian thực lên LCD16x2 sử dụng module RTC DS1307
Linh kiện cần thiết cho dự án
Thư viện
Code mẫu
Giải thích code

Ở bài viết hôm trước mình đã hướng dẫn các bạn cách sử dụng Module thời gian thực DS1307 và cách hiển thị ký tự lên màn hình LCD 16×2 bằng giao tiếp I2C.

Tiếp tục trong chuỗi bài viết về LCD hôm nay mình sẽ hướng dẫn các bạn làm thế nào để hiển thị thời gian lên LCD16x2.

Để hiểu hơn về bài viết hôm nay các bạn đọc lại bài viết bên dưới rồi chúng ta tiếp tục nha.

  • Đọc thêm: Tổng quan LCD 16×2 và giao tiếp I2C LCD sử dụng Arduino
  • Đọc thêm: Đồng hồ thời gian thực (Read Time Clock – DS1307) sử dụng Arduino

Hiển thị thời gian thực lên LCD16x2 sử dụng module RTC DS1307

Màn hình LCD 16×2 Arduino UNO R3
GND GND
VCC 5V
SDA A4/SDA
SCL A5/SCL
Module RTC DS1307  
GND GND
VCC 5V
SDA A4/SDA
SCL A5/SCL

Linh kiện cần thiết cho dự án

Tên linh kiện Số lượng
Arduino Uno R3 1
Module RTC DS1307 1
Màn hình LCD 16×2 1
Module I2C LCD 16×2 1
Dây cắm 1

Thư viện

  • Thư viện hỗ trợ sử dụng module RTC DS1307: Tải ngay.
  • Thư viện hỗ trợ sử dụng màn hình LCD I2C: Tải ngay.

Code mẫu

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

RTC_DS1307 rtc;
LiquidCrystal_I2C lcd(0x3F,16,2);

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

void setup () 
{
  Serial.begin(9600);
  lcd.init();   
  lcd.backlight();
  if (! rtc.begin()) 
  {
    lcd.print("Couldn't find RTC");
    while (1);
  }

  if (! rtc.isrunning()) 
  {
    lcd.print("RTC is NOT running!");
  }
  
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));//auto update from computer time
    //rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));// to set the time manualy 
}

void loop () 
{
    DateTime now = rtc.now();
    
    lcd.setCursor(4, 1);
    if(now.hour()<=9)
    {
      lcd.print("0");
      lcd.print(now.hour());
    }
    else {
     lcd.print(now.hour()); 
    }
    lcd.print(':');
    if(now.minute()<=9)
    {
      lcd.print("0");
      lcd.print(now.minute());
    }
    else {
     lcd.print(now.minute()); 
    }
    lcd.print(':');
    if(now.second()<=9)
    {
      lcd.print("0");
      lcd.print(now.second());
    }
    else {
     lcd.print(now.second()); 
    }
    lcd.print("   ");

    lcd.setCursor(1, 0);
    lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
    lcd.print(",");
    if(now.day()<=9)
    {
      lcd.print("0");
      lcd.print(now.day());
    }
    else {
     lcd.print(now.day()); 
    }
    lcd.print('/');
    if(now.month()<=9)
    {
      lcd.print("0");
      lcd.print(now.month());
    }
    else {
     lcd.print(now.month()); 
    }
    lcd.print('/');
    if(now.year()<=9)
    {
      lcd.print("0");
      lcd.print(now.year());
    }
    else {
     lcd.print(now.year()); 
    }
}

 

Giải thích code

Trong bài viết Đồng hồ thời gian thực (Read Time Clock – DS1307) sử dụng Arduino mình đã giải thích rất chi tiết cách hoạt động của hàm các bạn xem lại bài viết để có thể hiểu hơn nhé.

Nguồn: arduinokit.vn

5/5 - (2 bình chọn)
  • Share on Facebook
  • Tweet on Twitter

Thuộc chủ đề:ARDUINO PROJECT, LCD Tag với:arduino, code, ds1307, lcd, LCD1602, thời gian thực

Bài viết trước « Hướng dẫn cài đặt phần mềm Arduino IDE
Bài viết sau Đếm số người ra vào phòng và Bật Tắt thiết bị sử dụng Arduino – Phần 2 »

Reader Interactions

Sidebar chính

Zalo hỏi đáp 24/7

Theo dõi qua mạng xã hội

  • Facebook
  • RSS

Bạn đang tìm gì?

Bài viết mới nhất

Vẽ và Copy mạch PCB sử dụng Spint Layout 6

01/10/2023

Mạch sạc accu 3 giai đoạn từ nguồn ATX

Mạch sạc acquy 3 giai đoạn từ nguồn ATX

01/10/2023

Đo mức nước bằng cảm biến áp suất thủy tĩnh

Đo mức nước bằng cảm biến áp suất thủy tĩnh

01/10/2023

Những lưu ý khi sử dụng nguồn tổ ong để được lâu dài

Những lưu ý khi sử dụng nguồn tổ ong để được lâu dài

01/10/2023

Chống nhiễu cho cảm biến bằng bộ lọc Kalman

01/10/2023

Chuyên mục

  • DỰ ÁN & MẠCH ĐIỆN (252)
    • Công nghiệp (16)
    • Dân dụng (28)
    • Điện tử ứng dụng (183)
      • Audio / Amplifiers (34)
      • Biến đổi AC và DC (24)
      • Cảm biến (44)
      • Động cơ bước (6)
      • Kiểm thử và đo đạc (23)
      • LCD (15)
      • LED (20)
      • Mạch linh tinh (27)
      • Nguồn điện (42)
      • Pin sạc/Acquy và mạch sạc (24)
      • RF – FM (5)
      • Robotic (2)
    • HOME AUTOMATION (28)
    • Lập trình (94)
      • ARDUINO PROJECT (39)
      • ESP32 PROJECT (6)
      • ESP8266 PROJECT (29)
      • RASPBERRY PI PROJECT (9)
      • Vi điều khiển (24)
    • Nixie Clock (3)
  • Kiến thức căn bản (170)
    • Arduino (36)
    • Điện tử cơ bản (77)
    • Điện tử số (9)
    • IN 3D (9)
    • Nixie Tube (13)
    • PCB (18)
    • Raspberry Pi (10)
    • Vi điều khiển (16)

Footer

Bài viết mới nhất

  • Vẽ và Copy mạch PCB sử dụng Spint Layout 6
  • Mạch sạc acquy 3 giai đoạn từ nguồn ATX
  • Đo mức nước bằng cảm biến áp suất thủy tĩnh
  • Những lưu ý khi sử dụng nguồn tổ ong để được lâu dài
  • Chống nhiễu cho cảm biến bằng bộ lọc Kalman
  • Tổng hợp ký hiệu bản vẽ điện dân dụng và các loại sơ đồ mạch

Bình luận mới nhất

  • admin trong Điều khiển quạt tản nhiệt tự động
  • Nguyễn mạnh trung trong Điều khiển quạt tản nhiệt tự động
  • admin trong Đồng hồ dùng GLCD Homephone V2.0 – Gà mổ thóc
  • nam trong Đồng hồ dùng GLCD Homephone V2.0 – Gà mổ thóc

Tìm kiếm

Tất cả nội dung trên website chỉ dùng để tham khảo. Chúng tôi không chịu trách nhiệm về thông tin thành viên đăng tải lên website và xóa bài viết khi có vi phạm bản quyền tác giả.