登录/注册

lcd2004 时钟

更多

Arduino LCD2004 实时时钟实现指南

本指南详细讲解如何使用Arduino、LCD2004显示器和DS3231实时时钟模块构建一个桌面电子钟。以下是完整解决方案:

硬件准备

电路连接

Arduino UNO       LCD2004 (I2C)       DS3231 (I2C)
   5V  ----------- VCC --------------- VCC
   GND ----------- GND --------------- GND
   A4  ----------- SDA --------------- SDA
   A5  ----------- SCL --------------- SCL

所需库

  1. LiquidCrystal_I2C:控制LCD2004
  2. RTClib:操作DS3231时钟模块

完整代码

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

// LCD2004初始化 (I2C地址 0x27, 20列4行)
LiquidCrystal_I2C lcd(0x27, 20, 4);

// DS3231实例
RTC_DS3231 rtc;

// 星期名称数组
const char* daysOfWeek[] = {"日", "一", "二", "三", "四", "五", "六"};

void setup() {
  Serial.begin(9600);

  // 初始化LCD
  lcd.init();
  lcd.backlight();

  // 显示启动信息
  lcd.setCursor(0, 0);
  lcd.print("  Arduino LCD时钟");
  lcd.setCursor(0, 1);
  lcd.print("  初始化中...");

  // 初始化RTC
  if (!rtc.begin()) {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("无法找到RTC!");
    while (1);
  }

  // 如果RTC丢失供电,设置初始时间
  if (rtc.lostPower()) {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("设置初始时间...");

    // 设置为编译时的时间(上传时间)
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }

  delay(2000); // 显示信息2秒
}

void loop() {
  // 获取当前时间
  DateTime now = rtc.now();

  // 清屏
  lcd.clear();

  // 显示日期 (第一行)
  lcd.setCursor(0, 0);
  lcd.print("日期: ");
  lcd.print(now.year());
  lcd.print('/');
  if (now.month() < 10) lcd.print('0');
  lcd.print(now.month());
  lcd.print('/');
  if (now.day() < 10) lcd.print('0');
  lcd.print(now.day());

  // 显示星期 (第二行)
  lcd.setCursor(0, 1);
  lcd.print("星期: ");
  lcd.print(daysOfWeek[now.dayOfTheWeek()]);

  // 显示时间 (第三行)
  lcd.setCursor(0, 2);
  lcd.print("时间: ");
  if (now.hour() < 10) lcd.print('0');
  lcd.print(now.hour());
  lcd.print(':');
  if (now.minute() < 10) lcd.print('0');
  lcd.print(now.minute());
  lcd.print(':');
  if (now.second() < 10) lcd.print('0');
  lcd.print(now.second());

  // 显示温度 (第四行)
  float temp = rtc.getTemperature();
  lcd.setCursor(0, 3);
  lcd.print("温度: ");
  lcd.print(temp);
  lcd.print(" ℃");

  // 每秒钟更新一次
  delay(1000);
}

使用说明

  1. 按照电路图正确连接所有硬件
  2. 在Arduino IDE中安装所需库
    • LiquidCrystal_I2C: Sketch > Include Library > Manage Libraries > 搜索并安装
    • RTClib: Sketch > Include Library > Manage Libraries > 搜索并安装
  3. 将代码上传到Arduino
  4. 如需设置精确时间:
    • 修改代码 rtc.adjust() 参数设置初始时间
    • 或者上传后打开串口监视器设置时间(9600波特率)

功能特点

  1. 显示完整日期(年/月/日)
  2. 显示中文星期几
  3. 实时时间显示(时:分:秒)
  4. 显示环境温度(来自DS3231内置传感器)
  5. 自动初始化为编译时间(首次使用)
  6. 掉电时间保持(DS3231内置电池)

常见问题解决

  1. LCD不显示

    • 检查I2C地址(0x27或0x3F)
    • 检查背光引脚是否连接
    • 旋转背面的电位器调整对比度
  2. 时间不准

    • DS3231精度为每月±2分钟
    • 初始化完成后注释掉 rtc.adjust()
  3. 无法检测RTC

    • 检查I2C线缆连接
    • 确保I2C线缆长度不超过50cm
    • 尝试添加4.7KΩ上拉电阻

这个项目适合作为学习Arduino时钟功能的基础案例,您可以根据需要添加闹钟、日期农历转换或网络校时等高级功能。

如果一个LCD时钟频率是20MHZ,主控提供给LCD时钟频率提高到40MHZ,那么LCD还能正常显示吗?

如果一个LCD时钟频率是20MHZ,当我主控提供给LCD的时钟频率提高到

2025-03-06 06:48:40

ADAR2004-EVALZ

1970-01-01 08:00:00 至 1970-01-01 08:00:00

NUC977 lcd时钟配置不生效是什么原因?

我查看nuc970的系列手册,想要将lcd时钟配置为33.3M,我的配置如下: writel((readl(REG_CLKDIVCTL1) &amp; ~0xffff) | 0x818

2023-06-15 07:39:14

基于STM32f103c8t6的LCD2004显示完整项目文件

基于STM32f103c8t6的LCD2004显示,完整项目文件免费下载。

资料下载 过往5 2022-06-08 09:33:58

基于LCD1602的时钟显示源代码下载

基于LCD1602的时钟显示源代码下载

资料下载 h1654155355.1696 2021-04-25 09:49:44

LCD2004显示仿真和程序资料合集免费下载

本文档的主要内容详细介绍的是LCD2004显示仿真和程序资料合集免费下载。

资料下载 佚名 2020-07-27 17:35:37

DS1302时钟LCD1602显示可以按键设置时钟的程序免费下载

本文档的主要内容详细介绍的是DS1302时钟LCD1602显示可以按键设置时钟的程序免费下载。

资料下载 佚名 2020-06-15 17:21:00

使用DS1302时钟芯片和LCD1602实现数字时钟的源代码免费下载

本文档的主要内容详细介绍的是使用DS1302时钟芯片和LCD1602实现数字时钟的源代码免费下载。

资料下载 佚名 2019-10-31 17:20:53

GDM2004D

GDM2004D - SPECIFICATIONS OF LCD MODULE - List of Unclassifed Manufacturers

2022-11-04 17:22:44

如何利用树莓派+STM32实现人脸识别门禁系统的设计

这个项目的最后一篇博客也是拖了很久了,从开始复习那会儿拖到了期末考完回了家,今天就赶紧把它了结了,让这个项目正式收官。 STM32部分可以分为按键控制、LCD2004显示、舵机控制、数据的存储

2022-01-14 07:04:19

lcd2004一线屏仿真

)图5四,编辑main.c 代码如Proteus8.9 VSM Studio GCC编译器仿真STM32F407ZGT6系列015_lcd2004一线屏(如下图6所示)图6五,Main.c 代码:/* Main.c file generated by New Project wiz

2021-12-13 07:20:58

浅析STM32-LCD2004驱动

void LCD_Clear(void){LCD_Cmd(LCD_CLEARDISPLAY);

2021-08-10 07:14:27

DC2004A DC2004A评估板

电子发烧友网为你提供ADI(ti)DC2004A相关产品参数、数据手册,更有DC2004A的引脚图、接线图、封装手册、中文资料、英文资料,DC2004

2021-08-05 14:00:03

dfrobotIIC/TWI LCD2004液晶模块介绍

Arduino控制器的控制端口数量实在是有限,连接几个传感器,通讯设备什么的,你就会发现端口不够用了,还想扩展一个液晶显示器,怎么办? 直接采用我们I2C LCD系列显示器吧!搭配全面的教程和代码库,你可以快速上手这个强大的LCD

2019-12-13 14:50:37

7天热门专题 换一换
相关标签