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

步骤1:
将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);
}


红米Note4最新消息:红米Note4全网通版,4GB+64GB 领券抵扣100元
LED室内照明产品的主流形式
嵌入式编码规范解读
安捷伦E4407B频谱分析仪26.5GHz
Type-C拓展坞PDHUB取电IC方案
怎样在RTC DS1307在LCD上设置并显示时间
科思创上海PUD新工厂竣工
智能感知与物联网技术研究所优秀毕业生采访
华盛昌推出多功能智能激光测距仪
联想表明对中国经济的复苏动能以及全球数字经济的前景充满信心
紫光展锐荣获2023年度中国通信标准化协会科学技术奖
明导 管理汽车航空电子设计中的变量
基于区块链技术创建的商业媒体Pumped介绍
只有跳出专用IC方案 电池管理系统创新才可期待
区块链对B2B流程的好处是什么
空调行业在今年第二季度或下半年还有没有发展机会
雪崩二极管
如何判断超高压瓷介电容的好坏
机柜空调对于温湿度传感器选择也是需要非常严格
蓝牙模组 TR7220B3L 的简单介绍