找回密码
 马上注册

QQ登录

只需一步,快速开始

搜索
查看: 1193|回复: 3

arduino1602液晶屏电子时钟

[复制链接]
发表于 2019-4-6 11:13:03 | 显示全部楼层 |阅读模式
不要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);//防熊孩子拔杜邦线,初始化
  }

}


 楼主| 发表于 2019-4-6 11:15:48 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2019-4-6 11:35:01 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-6 11:36:53 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|极客迷网 ( ICP09011854

44030602000010

© 2009-2016 All Rights Reserved

GMT+8, 2019-5-20 07:00 , Processed in 0.280533 second(s), 23 queries , Gzip On, Memcache On.