赞
踩
LCD1602IIC引脚 | Arduino引脚 |
---|---|
VCC | 5V |
GND | GND |
SDA | A4 |
SCL | A5 |
我这里的LCD1602是IIC的,所以只需要4根线
DS1302引脚 | Arduino引脚 |
---|---|
VCC | 5V |
GND | GND |
RST | A0(14) |
DAT | A1(15) |
SCK | A2(16) |
记得提前安装DS1302的库
DS1302
#include <DS1302.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> //引用I2C库 char buf1[50]; char buf2[50]; //设置LCD1602设备地址,这里的地址是0x27,一般是0x20,或者0x27,具体看模块手册 LiquidCrystal_I2C lcd(0x27,16,2); //这里是0x27 DS1302 rtc(14, 15, 16); //对应DS1302的RST,DAT,CLK void initRTCTime(void)//初始化RTC时钟 { rtc.writeProtect(false); //关闭写保护 rtc.halt(false); //清除时钟停止标志 Time t(2022, 12, 15, 17, 21, 50, 4); //新建时间对象 最后参数位星期数据,周日为1,周一为2以此类推 rtc.time(t);//向DS1302设置时间数据 } void printTime()//打印时间数据 { Time tim = rtc.time(); //从DS1302获取时间数据 snprintf(buf1, sizeof(buf1), "%04d-%02d-%02d ", tim.yr, tim.mon, tim.date ); snprintf(buf2, sizeof(buf2), "%02d:%02d:%02d", tim.hr, tim.min, tim.sec); Serial.println(buf1); Serial.println(buf2); } void setup() { Serial.begin(9600); //新模块上电需要设置一次当前时间, //下载完成后需屏蔽此函数再次下载,否则每次上电都会初始化时间数据 initRTCTime(); lcd.init(); // 初始化LCD lcd.backlight(); //设置LCD背景等亮 lcd.setCursor(0,0); lcd.print(" Clock "); delay(2000); lcd.clear(); } void loop() { printTime(); delay(1000); Time tim = rtc.time(); //从DS1302获取时间数据 lcd.setCursor(0,0); lcd.print(buf1); lcd.setCursor(0,1); lcd.print(buf2); }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。