不要ds1302做电子时钟。
过程被我吃了。
lcd连线不用我说了吧。
开关连4和A0口。
下面是程序:
#include <EEPROM.h>
//断电储存数据,EEPROM
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
//LCD屏幕引脚设置
int lhour=0,lmin=0,lsec=0;
void setup()
{
lhour=EEPROM.read(1);
lmin=EEPROM.read(2);
lsec=EEPROM.read(3);//读取上一次的时间
pinMode(2,OUTPUT);
digitalWrite(2,HIGH);
pinMode(3,OUTPUT);
digitalWrite(3,LOW);
pinMode(4,OUTPUT);
digitalWrite(4,HIGH);
pinMode(6,INPUT);
lcd.begin(16,2);
lcd.clear(); //初始化
}
void screen()//屏幕输出
{
lcd.setCursor(4,0);
if(lhour<10)
{
lcd.print("0");
}
lcd.print(lhour);lcd.print(":");
if(lmin<10)
{
lcd.print("0");
}
lcd.print(lmin);lcd.print(":");
if(lsec<10)
{
lcd.print("0");
}
lcd.print(lsec);
}
void loop()
{
for(;;)//死循环,没啥用,脑子一热就写上了
{
if(digitalRead(14))//调时间用
{
for(;digitalRead(14);)
{
lmin++;
if(lsec>=60) {lmin++; lsec=0;}
if(lmin>=60) {lhour++; lmin=0;}
if(lhour>=24) {lhour=0;}
screen();
delay(300);
lcd.clear();
}
}
if(lsec>=60) {lmin++; lsec=0;}
if(lmin>=60) {lhour++; lmin=0;}
if(lhour>=24) {lhour=0;}//时间进位
screen();
lsec++;
EEPROM.write(1,lhour);EEPROM.write(2,lmin);EEPROM.write(3,lsec);//写入断电储存器
delay(1000);//延时
lcd.begin(16,2);//防熊孩子拔杜邦线,初始化
}
}