0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样在RTC DS1307在LCD上设置并显示时间

454398 来源:网络整理 作者:网络整理 2019-12-09 14:31 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

步骤1:

怎样在RTC DS1307在LCD上设置并显示时间

将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设置Rtc草图。不要在U更改时间的情况下使用此示例。

串行输入对我不起作用,所以我将时间花在了草图上。

不要使用这个。仅用于必须输入时间的示例。

//这组代码允许输入数据

void setTime(){

Serial.print(“请输入当前年份,00-99 。-“);

year = 13;

Serial.println(year);

Serial.print(”请输入当前月份,1-12。-“) ;

month = 9;

Serial.println(months [month-1]);

Serial.print(“请输入当月的当前日期1-31 。-“);

monthday = 20;

Serial.println(monthday);

Serial.println(”请输入星期几,即1-7。 “);

Serial.print(” 1周日| 2周一| 3周二| 4星期三| 5周四| 6周五| 7周六-“);

工作日= 6;

Serial.println(days [weekday-1]);

Serial.print(“请以24小时格式输入当前小时,0-23。-”);

hour = 13;

Serial.println(小时);

Serial.print(“请输入当前分钟,0-59。-”);

分钟= 51;

Serial.println(minute);

秒= 15;

Serial.println(“已输入数据。”);

步骤4:从成员WWC设置Rtc草图。

您必须输入时间,上传然后打开串口并按y并发送。

///////////////////////////////////////////

//RTC数据和时间设置器//

////

//此示例程序允许用户//

//使用I2C设置RTC的日期和时间//

//。//

////

//代码作者://

//eGizmo Mechatronix Central//

//塔夫脱(菲律宾马尼拉)//

//http://www.egizmo.com//

//2013年4月15日//

///////////////////////////////////////////

#include

const int DS1307 = 0x68;//DS1307的地址,请参阅数据表

const char * days [] =

{“星期日”,“星期一”,“星期二”,“星期三”,“星期四”,“星期五”,“星期六”} ;

const char * months [] =

{“ 1月”,“ 2月”,“ 3月”,“ 4月”,“ 5月”,“ 6月”,“ 7月”,“ 8月”,“ 9月” ,“ October”,“ November”,“ December”};

//初始化所有值:

字节秒= 0;

字节分钟= 0;

字节小时= 0;

字节工作日= 0;字节月份= 0;字节月份= 0;字节年份= 0;无效设置(){ Wire.begin();

串行.begin(9600);

delay(2000);//此延迟允许MCU读取当前日期和时间。

Serial.print(“当前日期和时间是:”);

printTime();

Serial.println(“到换行符以结束串行监视器右下角的设置“);

Serial.println(”您现在要设置日期和时间吗?是/否“);

而(!Serial.available ())delay(10);

如果(Serial.read()==‘y’|| Serial.read()==‘Y’)

//这组函数允许用户更改日期和时间

{

Serial.read();

setTime();

Serial.print(“当前日期和时间为:”);

printTime();

}

Serial.println(“谢谢。”);

}

//连续函数,用于将字节转换为小数,反之亦然

void loop(){

}

byte decToBcd(byte val){

return((val/10 * 16)+(val%10));

}

byte bcdToDec(byte val){

return((val/16 * 10)+(val%16));

}

//这组代码允许输入数据

void setTime(){

Serial.print(“请输入本年度,00- 99。 -“);

year = 13;

Serial.println(year);

Serial.print(”请输入当前月份1-12。-“);

month = 9;-

Serial.println(months [month-1]);

Serial.print(“请输入当月的当前日期1-31。-”);

monthday = 20;

Serial.println(月日);

Serial.println(“请输入当前星期几,1-7。”);

Serial.println(“ 1周日| 2周一| 3周二| 4周三| 5周四| 6周五| 7星期六-“);

工作日= 6;

Serial.println(天[weekday-1]);

Serial.print(”请输入24小时的当前时间格式,0-23。-“);

小时= 13;

Serial.println(小时);

Serial.print(”请输入当前分钟,0-59。-“);

分钟= 51;

Serial.println(分钟);

秒= 15;

Serial.println(“已输入数据。”);

//以下代码传输数据发送到RTC

Wire.beginTransmission(DS1307);

Wire.write(字节(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();

//结束数据传输

}

byte readByte(){

while(!Serial。 available())delay(10);

字节读取= 0;

字节incomingByte = Serial.read();

而(incomingByte!=‘ n’){

if(incomingByte》 =‘0’&&进入字节《=‘9’)

读取=读取* 10 +(incomingByte-‘0’);

else;

进入字节= Serial.read();

}

Serial.flush();

返回读数;

}

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(缓冲区,“%02d”,分钟);

Serial.print(缓冲区);

Serial.println(AMPM);

}

void readTime(){

Wire.beginTransmission(DS1307);

Wire.write(byte(0));

Wire.endTransmission();

Wire.requestFrom(DS1307,7);

秒= bcdToDec(Wire.read());

分钟= bcdToDec(Wire.read());

小时= bcdToDec(Wire.read());

工作日= bcdToDec(Wire .read());

monthday = bcdToDec(Wire.read());

month = bcdToDec(Wire.read());

year = bcdToDec(Wire.read());

}

步骤5:现在将其上传以查看LCD上的时间。

/*

* TimeRTC .pde

*示例代码,说明带有实时时钟的时间库。

*

*/

#include

#include

#include //返回时间为time_t的基本DS1307库

#include

LiquidCrystal lcd(12,11,5,4,3,2);

void setup(){

Serial.begin(9600);

setSyncProvider(RTC.get);//从RTC获取时间的函数

if(timeStatus()!= timeSet)

Serial.println(“无法与RTC同步”);

else

Serial.println (“ RTC设置了系统时间”);

}

void loop()

{

digitalClockDisplay();

delay(1000);

}

void digitalClockDisplay(){

//时间的数字时钟显示

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);//设置LCD光标位置(列,行)

lcd.print(hour());

lcd.print(“:”);

lcd.print(minute());

lcd.print(“”);

lcd.print(second());

lcd.print(“”);

lcd.print(“ Uhr”);

lcd.setCursor( 3,1);//设置LCD光标位置(列,行)

lcd.print(day());

lcd.print(“。”);

lcd.print(month());

lcd.print(“。”);

lcd.print(year());

//将文本打印到LCD

//延迟读取文本

//清除显示

}

void printDigits(int digits){

//用于数字时钟显示的实用程序功能:打印冒号之前和前导0

Serial.print(“:”);

if(digits 《10)

Serial.print(‘0’);

Serial.print(digits);

}
责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • lcd
    lcd
    +关注

    关注

    36

    文章

    4579

    浏览量

    175842
  • RTC
    RTC
    +关注

    关注

    2

    文章

    639

    浏览量

    71024
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195986
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    发布元服务设置时间

    ”区域,设置时间。指定时间:选择时为您的本地时间设置完成后,系统将自动转换成UTC标准
    发表于 12-03 09:46

    CW32F030 MCU设置外部中断和RTC唤醒条件的示例

    ) { Enter_Sleep_Mode();// 进入Sleep模式,等待外部中断唤醒 // 唤醒后的处理代码(实际,这部分代码将在中断处理函数中执行) } } 示例2:RTC唤醒 假设我们希望特定
    发表于 11-25 08:00

    为什么装上了电池RTC显示模块掉电以后还是无法保存时钟时间

    请问,为什么装上了电池RTC显示模块掉电以后还是无法保存时钟时间
    发表于 10-25 15:21

    是谁偷走了我的时间RTC时间异常的秘密

    嵌入式产品中的RTC(实时时钟)对于维持时间准确性至关重要。然而,实际应用中,我们常常会遇到时间偏差甚至时间回退到1970年的问题。今天,我们来探讨这些
    的头像 发表于 09-02 11:35 1908次阅读
    是谁偷走了我的<b class='flag-5'>时间</b>?<b class='flag-5'>RTC</b><b class='flag-5'>时间</b>异常的秘密

    【RA4L1-SENSOR】RTC时钟段码屏显示事件信息

    RTC模块配置 FSP配置工具中添加RTC模块,设置相应的模块参数。 保存文件生成相应
    发表于 06-25 21:54

    【RA4L1-SENSOR】06 RTC实时时钟及触摸按键设置时间

    1. 前言 上次实验实现了两个任务的切换。这次实现RTC时钟显示使用触摸按键+实体按键进行时钟的修改功能。 2. 硬件部分 RTC 时钟模块是一个
    发表于 06-17 21:18

    【RA4L1-SENSOR】RTC实时时钟

    使用SLCDC配置好段码LCD屏之后,则么能不用来显示时间呢 下面展示下配置RTC的流程 时钟源要选择外部低俗时钟,就是图中的Sub-c
    发表于 06-13 12:10

    【RA4L1-SENSOR】+ RA4L1-SENSOR开发板之使用RTC显示实时时间并在段码屏LCD显示时间年月日时分秒完美切换

    很高兴收到瑞萨电子发放的RA4L1开发板,这个板子带了一个非常好的段码屏LCD,搭配这个屏可以做成万年历,显示时分秒实时时间。比如现在时间
    发表于 06-10 16:27

    芯对话 | CBM1307时间精准续航,为设备注入可靠「芯」动力

    精准的时间管理如今数字化和智能化高速迭代中,是众多设备正常运行的关键基础。比如智能门锁的自动锁定和解锁功能依赖于精确的时间控制。RTC(实时时钟RealTimeClock)模块能够提
    的头像 发表于 03-18 13:07 2466次阅读
    芯对话 | CBM<b class='flag-5'>1307</b>让<b class='flag-5'>时间</b>精准续航,为设备注入可靠「芯」动力

    HMI如何显示PLC代码流程呢?

    流程图的编程。 2. 设置显示参数:在打开FB功能块后,在编辑菜单中勾选“从HMI显示/访问内部参数”选项。这个设置确保流程信息能够从HMI
    的头像 发表于 03-03 12:09 1522次阅读
    <b class='flag-5'>在</b>HMI<b class='flag-5'>上</b>如何<b class='flag-5'>显示</b>PLC代码流程呢?

    DS1307 64 x 8、串行、I2C实时时钟技术手册

    DS1307串行实时时钟(RTC)是一款低功耗、二-十进制编码(BCD)的时钟/日历,外加56字节NV RAM。地址与数据通过I²C接口串行传输。时钟/日历提供秒、分、时、星期、日、月和年信息。对于
    的头像 发表于 02-28 09:20 1027次阅读
    <b class='flag-5'>DS1307</b> 64 x 8、串行、I2C实时时钟技术手册

    【瑞萨RA2L1入门学习】03、RTC日历及串口设置时间

    RTC 时钟有两种计时模式,日期模式和计时模式,RTC 常见的操作包括设置时间设置定时闹铃、配置周期性中断以及启动或停止操作。 3. 软
    发表于 01-26 14:37

    CBM1307

    通用RAM,写次数不受限制。I²C串口操作,支持可编程方波输出。它提供了精确的时间和日期信息,具有电池备份功能,即使断电情况下也能保持准确的时间记录。CBM
    发表于 12-13 14:26 0次下载

    飞凌嵌入式ElfBoard ELF 1板卡-shell编程入门之提取字符设置rtc时间

    控制和条件处理; 五、支持与其他Unix及Linux命令行工具配合使用; awk的语法结构比较简单,它的基本语法格式如下: awk \'pattern {action}\' filename 设置rtc时间
    发表于 12-11 16:49

    RTC技术实时通信中的应用 RTC与VoIP的区别

    在数字化时代,实时通信(RTC)技术已经成为我们日常生活和工作中不可或缺的一部分。从视频会议到在线教育,从远程医疗到社交网络,RTC技术都在发挥着重要作用。 一、RTC技术实时通信
    的头像 发表于 12-11 15:38 2317次阅读