• 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

28/03/2026 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)
  • Chia sẻ lên Facebook
  • Chia sẻ lên Twitter
  • Chia sẻ lên LinkedIn

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 « Cảm biến độ ẩm | Hệ thống tưới tự động sử dụng Arduino
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

Để lại một bình luận Hủy

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Sidebar chính

Zalo hỏi đáp 24/7

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

  • Facebook

Bạn đang tìm gì?

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

Bảng tra các thông số Thyristor

Bảng tra các thông số Thyristor

16/04/2026

Triac là gì, Cấu tạo và nguyên lý hoạt động

Triac là gì, Cấu tạo và nguyên lý hoạt động

16/04/2026

Mạch điều phối âm thanh tạo hiệu ứng dịch chuyển

Mạch điều phối âm thanh tạo hiệu ứng dịch chuyển

15/04/2026

Bảng tra thông số điôt (diode) công suất lớn

Bảng tra thông số điôt (diode) công suất lớn

15/04/2026

Mạch tạo xung vuông bằng IC 555

Mạch tạo xung vuông bằng IC 555

15/04/2026

Danh mục

  • DỰ ÁN & MẠCH ĐIỆN (241)
    • Công nghiệp (16)
    • Dân dụng (29)
    • Điện tử ứng dụng (178)
      • Audio / Amplifiers (34)
      • Biến đổi AC và DC (24)
      • Cảm biến (40)
      • Động cơ bước (5)
      • 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 (23)
    • Lập trình (82)
      • ARDUINO PROJECT (39)
      • ESP32 PROJECT (6)
      • ESP8266 PROJECT (17)
      • RASPBERRY PI PROJECT (9)
      • Vi điều khiển (24)
    • Nixie Clock (3)
  • Kiến thức căn bản (168)
    • Arduino (36)
    • Điện tử cơ bản (77)
    • Điện tử số (9)
    • IN 3D (9)
    • Nixie Tube (13)
    • PCB (16)
    • Raspberry Pi (10)
    • Vi điều khiển (16)

Footer

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

  • Bảng tra các thông số Thyristor
  • Triac là gì, Cấu tạo và nguyên lý hoạt động
  • Mạch điều phối âm thanh tạo hiệu ứng dịch chuyển
  • Bảng tra thông số điôt (diode) công suất lớn
  • Mạch tạo xung vuông bằng IC 555
  • Mạch khuếch đại âm thanh 10W sử dụng nguồn đơn

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

  • admin trong Kỹ thuật truyền sóng RF 433Mhz và 315Mhz
  • Minh Hoàng trong Kỹ thuật truyền sóng RF 433Mhz và 315Mhz
  • Hè trong IC 4017 và ứng dụng 555 với 4017
  • Dương trong Mua đồng hồ vạn năng loại kim hay số?

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ả.